[Matlab] Jak zmienić indeks próbek na częstotliwość

0

Witam, jest w stanie ktoś podpowiedzieć, jak zamienić indeks próbek na częstotliwość przy widmie? Poniższy kod oblicza mi indeks próbek, a mnie interesuje częstotliwość.

 
clc;
clf;
clear;
U=20;
T=0.1;
f=1/T;
N=20;
t= [-T/2:T/N:5*T/2-T/N];
w=2*pi*f;

y = mod(t+T/2,T)-T/2; 
u1 = U*w*y.*sin(w*y);
plot(u1);

u11 = U-(U/2)*cos(w*t)-2*U*(cos(2*w*t)/(2^2-1)); 

u12 = U-(U/2)*cos(w*t)-2*U*(cos(2*w*t)/(2^2-1)-cos(3*w*t)/(3^2-1)); 

u15 = U-(U/2)*cos(w*t)-2*U*(cos(2*w*t)/(2^2-1)-cos(3*w*t)/(3^2-1)+cos(4*w*t)/(4^2-1)-cos(5*w*t)/(5^2-1)+cos(6*w*t)/(6^2-1));

u110 = U-(U/2)*cos(w*t)-2*U*(cos(2*w*t)/(2^2-1)-cos(3*w*t)/(3^2-1)+cos(4*w*t)/(4^2-1)-cos(5*w*t)/(5^2-1)+cos(6*w*t)/(6^2-1)-cos(7*w*t)/(7^2-1)+cos(8*w*t)/(8^2-1)-cos(9*w*t)/(9^2-1)+cos(10*w*t)/(10^2-1)+cos(11*w*t)/(11^2-1));  
subplot(2,2,1)
plot(t,u1)
title('U1');grid on;
xlabel('Czas [s]'); ylabel('Napiecie')    
    

subplot(2,2,3)
stem(abs(fft(u1)),'.')
title('Widmo U1');grid on;
xlabel('Czestotliwosc'); ylabel('')
    
subplot(2,2,2)
plot(t,u110)
title('U2');grid on;
xlabel('Czas [s]'); ylabel('Napiccie')
 

subplot(2,2,4)
stem(abs(fft(u110)),'.')
title('Widmo U2');grid on;
xlabel('Czestotliwosc'); ylabel('')

Z góry dziękuję za pomoc.
Pozdrawiam.

0

Generalnie to rozdzielczość FFT określona jest wzorem f_s / N, gdzie f_s częstotliwość próbkowania, a N to liczba próbek, czyli u Ciebie wynosi 0,5Hz, czyli żeby przeliczyć numer indeksu na częstotliwość mnożysz przez 0,5. Więcej info tutaj: http://electronics.stackexchange.com/questions/12407/what-is-the-relation-between-fft-length-and-frequency-resolution

0

Rozumiem, że mnożę f razy 0,5? Czyli będzie taki zapis? f=(1/T)*0,5;
Dzięki za pomoc.

0

Nie.
czestotliwosc_probki = index / (T * N)

1 użytkowników online, w tym zalogowanych: 0, gości: 1