La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 1 Retour sur le.

Présentations similaires


Présentation au sujet: "Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 1 Retour sur le."— Transcription de la présentation:

1 Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 1 Retour sur le cours n°7 sur la création de filtres de réponse fréquentielle donnée h e s entréesortiefiltre Signal à filtrer Signal filtré Produit de convolution Avec SCILAB, c’est : s=convol(h,e);

2 Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 2 Réponse impulsionnelle : h Signal impulsion Calculons s, sortie du filtre en réponse au signal impulsion En définitive, la sortie du filtre est s=h. Et donc le vecteur h contient la réponse impulsionnelle du filtre

3 Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 3 Réponse fréquentielle du filtre  D’après la démonstration de la page 7 du cours n°7  H= fft(h) est donc la réponse fréquentielle du filtre  Inversement, h=ifft (H) est la réponse impulsionnelle du filtre de réponse fréquentielle H  Mais attention ! H contient seulement R va- leurs de la réponse fréquentielle H(f) du filtre, pour les fréquences k*f e /R, k=0…R-1

4 Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 4 Une méthode de conception de filtres On spécifie H(f) entre 0 et fe, et on en déduit h en deux étapes : 1.H(f)  H = {H k = H(kf e /R), k=0...R-1} 2.H  h = ifft(H), vecteur de taille R Deux contraintes : 1.h doit être un vecteur réel (sinon, le signal filtré s=h*e sera complexe (ce qui n’existe pas dans le monde réel :-) 2.H(f) doit rester proche de H, entre les valeurs imposées aux fréquences kf e /R

5 Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 5 Comment on vérifie ces deux contraintes Comment obtenir h réel ? D’après la démonstration de la page 6 du cours n°7, il suffit d’imposer au vecteur H : Script Scilab  On fera : h= real(ifft(H))  On vérifiera : imag(ifft(H))=0 Comment vérifier que H(f) est proche de H entre les fréquences kfe/R ? Il suffit de calculer plus de R valeurs de H(f), cf. page 10 du cours n°7. Avec Scilab : h=real(ifft(H)) // calcule R valeurs dans h HR=fft(h) // calcule R valeurs de H(f) H16R= fft([h, zeros(1,15*R)]) // calcule 16*R valeurs

6 Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 6 Mise en œuvre de H2(f) pour R=64 (cf. page 9 du cours n°7) : H symétrique par rapport à R/2, imag(ifft(H2)) = 0 fe=8000; R=64; // H symétrique par rapport à R/2 H=4*[zeros(1,R/8),ones(1,1+R/8),zeros(1,-1+R/2),ones(1,1+R/8),... zeros(1,-1+R/8)]; //étude de h=ifft(H) h=ifft(H); t=[0:R-1]/fe; plot2d(t',[real(h'),imag(h')]) e=gce(); e.children(1).thickness=3; xgrid(); xtitle("vérification: imag(ifft(H))=0",... "temps (s)","donc h=real(ifft(H))") h1=legend(['real(h)';'imag(h)']) H2 Noter que : fe/64= 125 Hz ici et donc que (R/8)*fe/64= 1000 Hz

7 Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 7 Résultat catastrophique cf. page 10 du cours n°7, où h=real(ifft(H)) tracée sur M=1024 valeurs au lieu de 64 H2  Pour tracer la réponse fréquentielle du filtre de coefficients h=real(ifft(H)), il suffit de tracer abs(fft(h))  Pour tracer M=16*R valeurs au lieu de R, il suffit d’aug- menter le vecteur h de 15*R coefficients nuls :  M=16*R; fe=8000; fM=[0:M-1]*fe/M;  h=real(ifft(H));  hM=zeros(1,M); hM(1:R)=h;  plot2d(fM,abs(fft(hM)))  xgrid();  xtitle(["tracé de … h=real(ifft(H))) sur",string(M),"points"]...,"fréquence (Hz)","H=abs(fft(h))")

8 Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 8 Calculons h différemment : h=fftshift(real(ifft(H))), cf. page 11 du cours n°7, c’est mieux ? clf(); M=16*R; h=fftshift(ifft(H)); fM=[0:M-1]*fe/M; hM=zeros(1,M);hM(1:R)=real(h); plot2d(fM,abs(fft(hM))) xgrid(); xtitle(["tracé de abs(fft(fftshift(real(ifft(H))))),", string(M),… " points"],"fréquence (Hz)","H") h = fftshift(real(ifft(H))) revient à permuter les deux moitiés du vecteur h H2

9 Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 9 Solution retenue (cf. page 12 du cours n°7) : on arrondit la réponse fréquentielle spécifiée dans le vecteur H H=4*[zeros(1,R/8-1),0.1,0.5,0.9,ones(1,R/8-3),0.9,0.5,0.1,... zeros(1,-3+R/2),0.1,0.5,0.9,ones(1,R/8-3),0.9,0.5,0.1,... zeros(1,-2+R/8)]; H2

10 Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 10 Que réalise au juste la fonction fftshift ? Comparons h= real(ifft(H) et h= fftshift(real(ifft(H))) Comparons les tracés de h= real(ifft(H) et h= fftshift(real(ifft(H)))

11 Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 11 En arrondissant moins la réponse fréquentielle comme ci-dessous, voici ce qu’on obtient, c’est moins bien !  Aux fréquences de coupure haute et basse de H, on impose un gain du filtre de 0.5 au lieu de 1, soit :  H=4*[zeros(1,R/8),0.5,ones(1,R/8-1),0.5, … zeros(1,-1+R/2),0.5,ones(1,R/8-1),0.5,zeros(1,-1+R/8)];


Télécharger ppt "Cours S.S.I.I., 2014-15, n°7, Créer des filtres pour compresser Cours S.S.I.I., 2014-15, n°7, : Créer des filtres pour compresser Page 1 Retour sur le."

Présentations similaires


Annonces Google