Salut à tous,
Je suis en phase d'initiation pour le filtrage en sous bande en utilisant les ondelettes. J'ai fait quelques lectures et maintenant je suis en train d'essayer de faire des "petits" codes matlab pour essayer de bien comprendre.
En fait j'ai déclaré mon signal "x1" avec quatre sinusoides de fréquences
f1 = 315;
f2 = 90;
f3 = 35;
f4 = 12;
et j'essaye de diviser le signal en 4 bandes de fréquences (ma fréquence d'échantillonnage fe est de 1 KHz).
J'utilise la fonction "wavedec" de matlab et je suis en train de voires qqes bizaroides.
En fait, j'ai fait
et puis
Code : Sélectionner tout - Visualiser dans une fenêtre à part wavedec(x1, 3, 'db44');
et donc j'attends d'avoir:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [cd1 cd2 cd3] = detcoef(c,l, [1 2 3]); ca3 = appcoef(c,l,'db44',level);
- sur cd1 la fréquence 2*(fe/2 -f1) = 2 * (500-315) = 370 Hz
- sur cd2 la fréquence 4*f2 = 4 * 90 = 360 Hz
- sur cd3 la fréquence 8*f3 = 8 * 35 = 280 Hz
- sur ca3 la fréquence 8*f4 = 8 * 12 = 96 Hz
sur cd1 et cd3, j'ai obtenu ce que j'ai attendu. J'ai bien mon 630 Hz et 280Hz.
Mais sur cd2 et ca3, je vois d'autres fréquences que je comprends leurs origines:
sur cd2, j'ai obtenu en plus de 360 Hz une autre fréquence gale à 260 Hz.
sur ca3, j'ai obtenu en plus de 96 Hz une autre fréquence de 280 Hz (qui est égale à la fréquence dans cd3).
Avez-vous des explications concernant ce que j'ai obtenu comme résultat ?
Si oui comment je peux améliorer "mon signal" ?
En pièce jointe le spectre fréquentiel que j'ai obtenu.
Ci dessous, mon code source matlab pour ceux qui veulent tester.
Cordialement,
bada380
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
27
28
29
30
31
32
33
34
35
36
37 fe = 1000; % Sample frequency N = 262144; % Number of points in waveform % Sinusoid frequencies f1 = 315; f2 = 90; f3 = 35; f4 = 12; % Construct signal t = 0:(1/fe):(N-1)/fe; x1 = 1 * sin(2*pi*f1*t) + 1 * sin(2*pi*f2*t) + 1 * sin(2*pi*f3*t) + 1 * sin(2*pi*f4*t); level = 3; dwtmode('ppd'); [c,l] = wavedec(x1, level, 'db44'); % Extract detail coefficients at levels 1, 2 and 3, from wavelet decomposition % structure [c,l]. [cd1 cd2 cd3] = detcoef(c,l, [1 2 3]); ca3 = appcoef(c,l,'db44',level); L = N; NFFT = 2^nextpow2(L); % Next power of 2 from length of y f = fe/2*linspace(0,1,NFFT/2+1); A = fft(cd1, NFFT)/L; subplot(level+1,1,1);plot(f,2*abs(A(1:NFFT/2+1))); B = fft(cd2, NFFT)/L; subplot(level+1,1,2);plot(f,2*abs(B(1:NFFT/2+1))); C = fft(cd3, NFFT)/L; subplot(level+1,1,3);plot(f,2*abs(C(1:NFFT/2+1))); E = fft(ca3,NFFT)/L; subplot(level+1,1,4);plot(f,2*abs(E(1:NFFT/2+1)));
Partager