Salut tout le monde,
Voilà j'ai un problème avec mon code, normalement la fenêtre Flattop devrait me donner une amplitude précise du signal que je fenêtre or ce n'est pas le cas, elle est même très mauvaise. Quelqu'un aurait-il une idée pour m'aider?
Voici mon code:
Voilà j'ai un problème avec mon code, normalement la fenêtre Flattop devrait me donner une amplitude précise du signal que je fenêtre or ce n'est pas le cas, elle est même très mauvaise. Quelqu'un aurait-il une idée pour m'aider?
Voici mon code:
Code:
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')
Aucun commentaire:
Enregistrer un commentaire