Bonjour
j'ai un petit problème qui me tient particulièrement a coeur. En effet j'ai bien regardé l'aide sur les FFT dans matlab, mais je ne suis pas certain d'avoir tout compris. (Mon anglais date de la troisième alors.....). J'ai l'impression que ce que j'affiche selon l'axe des X n'est pas la fréquence en Hz, mais une grandeur que je ne connais pas encore. Pourriez vous m'aider, je vous donne mon code que j'ai remis a ma sauce pour faire une FFT qui tienne la route.Le "tracks" est un spectre de donnée, donc un vecteur, qui me semble-t-il n'a pas la fréquence indiquée pas la FFT. Pourriez vous m'indiquer ce que je dois mettre en X pour avoir la lecture de la fréquence de mon signal directement sur le plot de la FFT.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 % --- Executes on button press in pushbutton7. function pushbutton7_Callback(hObject, eventdata, handles) % hObject handle to pushbutton7 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global tracks y=tracks; Fs = 1000; % Sampling frequency T = 1/Fs; % Sample time z=size(handles.tracks);% donne le nombre de lignes du tableau de données; L = z(1,1);% Length of signal t = (0:L-1)*T ; % Time vector % Sum of a 50 Hz sinusoid and a 120 Hz sinusoid %x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); %y = x + randn(size(t));% Sinusoids plus noise %figure (1) %plot(Fs*t(1:L),y(1:L),'.') %xlabel('time (milliseconds)') NFFT = 2^nextpow2(L); % Next power of 2 from length of y Y = fft(y,NFFT)/L; f = Fs/2*linspace(0,1,NFFT/2); % Plot single-sided amplitude spectrum. plot(handles.axes5,f,2*abs(Y(1:NFFT/2))); grid on xlabel('Frequency (Hz)'); ylabel('|Y(f)|');
Merci a vous d'avance
Partager