Il me manque quelque chose dans le calcul du spectre de mon signal en utilisant FFT sur Matlab. Mon code:Calcul et tracé du spectre d'un signal en utilisant FFT sur Matlab
%% compute the spectrum of the data (data(t))
L = length(time); % length of the sample
NFFT = 2^(nextpow2(L)-1); % Next power of 2 from length of y
Y = fft(data,NFFT);%/NFFT;%L;
Fs = 1/(mean(time(2:end)-time(1:end-1))); % compute the sampling frequency
f = Fs/2*linspace(0,1,NFFT/2+1);
loglog(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of My Data')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
Auriez-vous l'amabilité de me dire où je foiré?
J'ai essayé de vérifier si l'algorythme fonctionne à l'aide de ces deux échantillons du même signal (même fréquence d'échantillonnage, plus de deux plage horaire, 0-10 et 0-100):
fs=1000;
time10 = [0:1/fs:10];
time100 = [0:1/fs:100];
data10 = sin(2*pi*0.23 .*time10)+cos(2*pi*12 .*time10);
data100 = sin(2*pi*0.23 .*time100)+cos(2*pi*12 .*time100);
Je suppose que les deux spectre devrait supperpose mais ils ne le font pas ... Comme on le voit ici: https://www.dropbox.com/s/wfols9o409pr94u/FFT_spectrum_StackOverflow.png?dl=0 https://www.dropbox.com/s/a8vmzwto6x4130w/FFT_spectrum_StackOverflow.fig?dl=0
Merci
Pour le premier exemple, vous pouvez expliquer pourquoi cela ne fonctionne pas (afficher une erreur de journal ou une photo). Et pour le deuxième exemple, vous pouvez télécharger une photo qui montre que les deux spctrum ne soupçonne pas du tout. –
Et pour le second exemple, les deux spectres ne doivent pas être pris en compte car la fenêtre rectangulaire implicitement n'est pas la même dans 'data'. –
Ce code est plus ou moins identique à celui fourni par MathWorks. Je ne vois pas où vous "foiré". Pouvez-vous expliquer pourquoi vous pensez que ce n'est pas correct? – rayryeng