logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Błąd w matlabie przy wyznaczaniu ilości próbek generacjia sygnału.

peterus90 29 Lut 2012 08:41 1856 2
REKLAMA
  • #1 10613800
    peterus90
    Poziom 9  
    Witam napisałem program który ma za zadanie generować 128 próbek sinusoidy o częstotliwości 2000Hz z różnymi częstotliwościami próbkowania. Moim problem jest to, że owszem wychodzi 128 próbek ale łącznie na całym przebiegu co jest trochę bez sensu. Bo te próbki powinny być na okres. Niech ktoś mądrzejszy da jakieś wskazówki... Wrzucam skrypt.  


     N=128; %liczba próbek
     fs=4000; %częstotliwość próbkowania
     fs2=4020;
     fs3=8000; 
     fs4=19000;
     fs5=44000; 
     
     ts=1/fs; %okres 
     t=linspace(0,(N-1)*ts,N); %dyskretyzacja time
     x=sin(2000*2*pi*t); %próbkowanie
     subplot(3,2,1)
     stem(fs*t,x) 
     title('4000Hz')
     xlabel('N')
     ylabel('x')
     
     
     ts=1/fs2; 
     t=linspace(0,(N-1)*ts,N); 
     x=sin(2000*2*pi*t); 
     subplot(3,2,2)
     stem(fs2*t,x) 
     title('4020Hz')
     xlabel('N')
     ylabel('x')
    
     
     ts=1/fs3; 
     t=linspace(0,(N-1)*ts,N); 
     x=sin(2000*2*pi*t); 
     subplot(3,2,3)
     stem(fs3*t,x) 
     title('8000Hz')
     xlabel('N')
     ylabel('x')
     
     
     ts=1/fs4;
     t=linspace(0,(N-1)*ts,N); 
     x=sin(2000*2*pi*t); 
     subplot(3,2,4)
     stem(fs4*t,x) 
     title('19000Hz')
     xlabel('N')
     ylabel('x')
     
     
     ts=1/fs5; 
     t=linspace(0,(N-1)*ts,N); 
     x=sin(2000*2*pi*t); 
     subplot(3,2,5)
     stem(fs*t,x) 
     title('44000Hz')
     xlabel('N')
     ylabel('x')
  • REKLAMA
  • Pomocny post
    #2 10613961
    nibbit
    Poziom 20  
    No ale przecież jak próbkujesz sygnał 2kHz częstotliwością 4kHz to odczytasz dwa punkty z sygnału 2kHz. Czyli w tym momencie w 128 próbkach będziesz miał 64 okresy mierzonego sygnału. Jeśli chcesz mieć 128 punktów z okresu 2kHz to musisz go spróbkować z częstotliwością 2kHz*128;

    Zamiast tej funkcji linearscale prościej jak dla mnie ;] jest użyć zapisu:
    t=0:ts:(N-1)*ts
  • #3 10615496
    peterus90
    Poziom 9  
    aaa no racja :)
REKLAMA