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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| Fs = 100000; % Sampling frequency
T = 1/Fs; % Sample time
L = 100000; % Length of signal
t = (0:L)*T; % Time vector
f1=10;
f2=30;
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = sin(2*pi*f1*t)+0.005*sin(2*pi*f2*t);
win_hann = window(@hann, length(x));
win_flat = window(@flattopwin, length(x));
y_hann = [win_hann].*x';
y_flat = [win_flat].*x';
NFFT=2^(nextpow2(length(y_hann))+1);
f = Fs/2*linspace(0,1,NFFT/2+1);
Y=fft(x,NFFT)/L;
Y_hann = fft(y_hann,NFFT)/L;
Y_flat = fft(y_flat,NFFT)/L;
figure(1)
subplot(3,1,1), hold on
plot(t, win_hann, 'b');
plot(t, y_hann, 'b', 'Linewidth',4);
plot(t, x, 'r');
legend('Fenêtre de Hann','Signal fenêtré','Signal non fenêtré')
xlabel('Time (s)')
ylabel('Amplitude')
title('Domaine temporel')
subplot(3,1,2),hold on
plot(f, 2*abs(Y_hann(1:NFFT/2+1)), 'b');
plot(f, 2*abs(Y(1:NFFT/2+1)),'r');
legend('FFT signal fenêtré','FFT signal non fenêtré')
xlabel('Frequency (Hz)')
ylabel('Magnitude')
title('FFT')
axis([0,30,0,1]);
subplot(3,1,3), hold on
plot(f, 20*log10((Y_hann(1:NFFT/2+1))),'b');
plot(f, 20*log10((Y(1:NFFT/2+1))), 'r');
axis([0,100,-200,0]);
legend('FFT signal fenêtré','FFT signal non fenêtré')
xlabel('Frequency (Hz)')
ylabel('Magnitude (dB)')
title('FFT logarithmiques')
figure(2)
subplot(3,1,1), hold on
plot(t, win_flat, 'b');
plot(t, y_flat, 'b', 'Linewidth',4);
plot(t, x, 'r');
legend('Fenêtre Flat top','Signal fenêtré','Signal non fenêtré')
xlabel('Time (s)')
ylabel('Amplitude')
title('Domaine temporel')
subplot(3,1,2),hold on
plot(f, 2*abs(Y_flat(1:NFFT/2+1)), 'b');
plot(f, 2*abs(Y(1:NFFT/2+1)),'r');
legend('FFT signal fenêtré','FFT signal non fenêtré')
xlabel('Frequency (Hz)')
ylabel('Magnitude')
title('FFT')
axis([0,30,0,1]);
subplot(3,1,3), hold on
plot(f, 20*log10((Y_flat(1:NFFT/2+1))),'b');
plot(f, 20*log10((Y(1:NFFT/2+1))), 'r');
axis([0,100,-200,0]);
legend('FFT signal fenêtré','FFT signal non fenêtré')
xlabel('Frequency (Hz)')
ylabel('Magnitude (dB)')
title('FFT logarithmiques') |
Partager