Filtre en traitement du signal entrée filtre sortie e s h

Slides:



Advertisements
Présentations similaires
H Approximation analytique
Advertisements

Approximation CHEBYSHEV.
S.S.I., ESSI1, samedi 10 avril 2004 Page 1 Comment tailler les filtres sur mesure Séance 8, nouvelle application des filtres, 1 heure Version : samedi.
Comment créer des filtres d’ordre 1 et 2
Cours 5 – Comment bien échantillonner le signal audio
Comment décimer les sons numériques
Filtres (n entier, Te=1s)
Calcul de la composition fréquentielle du signal audio
Série de Fourier s(t) = Une série de Fourier est une série du type :
Comment créer des filtres « simples »
Cours S.S.I., SI1, avril 2007 – Comment utiliser les outils déjà présentés. Page 1 Comment utiliser les outils déjà présentés dans le cours S.S.I. et pourquoi.
S.S.I.I., , n°7 : Construire et utiliser un banc de filtres Page 1 Construire et utiliser un banc de filtres pour analyser le spectre dun signal.
Cours S.S.I.I., , n°8, Créer des filtres pour compresser Cours S.S.I.I., , n°8, : Créer des filtres pour compresser Page 1 Mise en œuvre.
SSII : séance finale , lundi 9/01/2012 Page 1 Voici quelques questions pour assimiler la seconde partie du cours S.S.I.I., spectre, filtrage, banc.
S.S.I.I., , cours n°8 : Compresser avec un banc de filtres Page 1 Compresser avec un banc de filtres Le contenu de ce cours : T.D. n° 8 : simulation.
S.S.I.I., , n°6, Créer des filtres sur mesure pour compresser S.S.I.I., , n°6, : Créer des filtres sur mesure pour compresser 1 Créer un.
Filtrer le signal audio numérique
ELG La transformée de Fourier, énergie, puissance et densités spectrales.
Cours S.S.I.I., , n°7, Créer des filtres pour compresser Cours S.S.I.I., , n°7, : Créer des filtres pour compresser Page 1 Retour sur le.
DU TRAITEMENT DU SIGNAL
Courants alternatifs.
Les signaux périodiques
Retour sur les filtres et bancs de filtres Jean-Paul Stromboni, décembre 2007.
Calcul de la composition fréquentielle du signal audio
SSII, séance n°13, bilan du cours 15 décembre 2015 Dernière séance 2015 Résumé des chapitres et notions abordées en 2015.
Cour Régulation AII3 Chapitre I: Modélisation des systèmes automatiques Abdelkhalek.S 1.
Thème 1 : Ondes et Matière. O M 3 O n d e s s o n o r e s.
12 Apprendre à rédiger Voici l’énoncé d’un exercice et un guide (en orange) ; ce guide vous aide : pour rédiger la solution détaillée ; pour retrouver.
Transformation de Laplace - Mr.Retima Abderaouf - Mr.Ghandjoui abderahmane Université 20 aout 1955 Skikda.
Pierre Joli Cours de Mathématique Pierre Joli
Contre-réaction et amplificateurs opérationnels
chapitre 9 Fonctions carré et polynômiale degré 2.
Fonctionnement des radars
Rappels sur la transformée de Fourier
Fonctions affines.
Electronique générale 1ère année
Chapitre 2: Les équations et les inéquations polynômes
Calcul littéral 2.
4.7 Multiplier des nombres décimaux
Analyse du comportement des SLCI
Les tableaux.
Miroirs Rédacteur : J.Mourlhou Lycée Toulouse-Lautrec Toulouse.
Chap. 3 – Modulations analogiques
Maha BOUATTOUR Circuit électrique 2 1ère Année Note de cours Institut Supérieur des Systèmes Industriels de Gabes 1.
LE FILTRAGE ANALOGIQUE. Définition : La fonction filtrage sert à assurer la suppression des signaux de fréquence non désirée. Il existe deux types de.
Polytech'Nice-Sophia, Département Sciences Informatiques Cours de 4 ème année : Commande par Ordinateur. semaine 5/6, 29/04/2018Page 1 Commande optimale.
Polytech'Nice-Sophia, Département Sciences Informatiques Cours de 4 ème année : Commande par Ordinateur. semaine 5/6, 04/09/2018Page 1 Commande optimale.
1/15 STABILITE 1)- NOTION DE STABILITE 2)- CONDITIONS DE STABILITE.
ANALYSE FREQUENTIELLE
Compresser avec un banc de filtres
Etude de la commande du système à inertie
ELG La transformée de Fourier, énergie, puissance et densités spectrales.
Le signal audio numérique
Introduction du cours à partir d’extraits
2.4 La loi de vitesse d’une réaction chimique
Contre-réaction et amplificateurs opérationnels
Commande optimale de l'alunissage de Lunar Lander
Dynamique des Systèmes Asservis
Sous-échantillonner le signal audio pour compresser
Construire et utiliser un banc de filtres
Créer un filtre sur mesure (pour compresser)
Recherche de zero d'une fonction MARMAD ANAS MPSI -2.
Courants alternatifs.
CHAPITRE IV : AMPLIFICATEUR DIFFERENTIEL Electronique Analogique A. Aouaj.
Sous-échantillonner le signal audio pour compresser
Exploiter la fonction fft(.) de Scilab
Oscillations libres des systèmes à deux degrés de liberté 1.
Oscillations libres des systèmes à deux degrés de liberté 1.
Transcription de la présentation:

Retour sur le cours n°6 : comment créer un filtre dont la réponse fréquentielle est imposée Filtre en traitement du signal entrée filtre sortie e s h Signal à filtrer Signal filtré Équation du filtre (non récursif) Longueur du filtre : R s est le produit de convolution de h et e avec Avec SCILAB, faire : s= convol(h,e);

Réponse impulsionnelle Le vecteur h qui contient les coefficients du filtre contient aussi la réponse impulsionnelle du filtre Signal impulsion e contient le signal impulsion Réponse impulsionnelle C’est la sortie du filtre en réponse à l’entrée impulsion La réponse impulsionnelle du filtre est h.

La réponse fréquentielle est la transformée de Fourier de la réponse impulsionnelle D’après la démonstration du cours 6, page 7 S=fft(s(1:R)) contient le spectre de s(1:R) E=fft(e(1:R)) contient le spectre de e(1:R) H=fft(h) est la réponse fréquentielle du filtre dont la réponse impulsionnelle est h (de longueur R) h=ifft (H) est la réponse impulsionnelle du filtre dont la réponse fréquentielle est H (longueur R) Mais le vecteur H ne contient que R valeurs de la réponse fréquentielle H(f) du filtre, pour les seules fréquences k*fe /R, k=0…R-1

D’où le principe de calcul des coefficients d’un filtre dont la réponse fréquentielle est imposée On spécifie la réponse fréquentielle H(f) imposée entre 0 et fe dans un vecteur H de taille R, puis on calcule les R coefficients du filtre dans h : Créer H = {Hk= H(kfe/R), k=0...R-1} Calculer les R coefficients du filtre avec h = ifft(H) (h est la réponse impulsionnelle du filtre) Deux contraintes : h doit être un vecteur réel comme e (sinon, le signal filtré s= h*e sera à valeurs complexes et non réelles) Pour cela, il suffit que H(f) soit symétrique par rapport à la fréquence fe/2 (démo cours 6, page 6) H(f) doit rester proche de H même entre les valeurs Hk imposées aux fréquences kfe/R H(f) Hk+1 Hk f k*fe/R (k+1)*fe/R

Comment vérifier que ces deux contraintes sont remplies 1. On sait imposer h réel D’après la démonstration du cours 6 page 6, h=ifft(H) est réel si : ce qui implique aussi : H(f)=H(fe/2-f) vérification Scilab : imag(ifft(H)) doit être nul Calcul : h= real(ifft(H)) impose un format réel à h 2. On peut vérifier que H(f) reste proche de H entre f=kfe/R et f= (k+1)fe/R Il suffit de calculer plus de R valeurs de H(f), cf. page 10 du cours 6. 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

Avec le vecteur H2 ci-dessous qui est symétrique par rapport à R/2, la partie imaginaire de h est bien nulle fe=8000; R=64; // H2 symétrique par rapport à R/2 H2 = 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)]; h=ifft(H2); 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)']) H(f) et H2 sont superposées Symétrie de H(f) par rapport à 400Hz symétrie de H2 par rapport à R/2 : H2m=H2R-m, m=0..R-1 fréquences de coupure fe= 8000Hz, R=64 fe/64 = 125 Hz et donc (R/8)*fe/64= 1000 Hz H(f)

Mais entre les valeurs H(kfe/R) imposées dans H2, on peut constater ci-dessous desécarts importants avec H(f) Pour tracer R valeurs de la réponse fréquentielle du filtre de coefficients h=real(ifft(H2)), on trace abs(fft(h)) Pour tracer 16*R valeurs au lieu de R, on augmente le vecteur h de 15*R coefficients nuls : M=16*R; fe=8000; fM=[0:M-1]*fe/M; h=real(ifft(H2)); hM=zeros(1,M); hM(1:R)=h; plot2d(fM,abs(fft(hM))) xgrid(); xtitle(["tracé de … h=real(ifft(H2))) sur",string(M),"points"] ... ,"fréquence (Hz)","H=abs(fft(h))") H(f)

D’où proviennent ces écarts avec H(f) entre les fréquences k*fe/R, k=0.. R-1 ? Hypothèse : l’écart provient de la discontinuité au début de la réponse impulsionnelle (discontinuité égale hautes fréquences). Proposition : puisque ifft(H2) est périodique de période R/fe, cf. cours 6 page 5, on retarde la réponse impulsionnelle de la moitié de sa durée de façon à réduire la discontinuité, avec la fonction fftshift qui permute les deux moitiés du vecteur h (cf. ci-dessous):

Pour vérifier, on calcule h=fftshift(real(ifft(H2))) et on compare la réponse fréquentielle obtenue à H(f) H2 = 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)]; R=64; M=16*R; h= fftshift(real(ifft(H2))); fM=[0:M-1]*fe/M; hM= zeros(1,M); hM(1:R)=h; plot2d(fM, abs(fft(hM))) xgrid(); xtitle(["tracé de abs(fft(fftshift(real(ifft(H))))),", . . . string(M)," points"],"fréquence (Hz)","H") H(f)

En arrondissant ‘légèrement’ la réponse fréquentielle H2 comme ci-dessous, voici ce qu’on obtient ! Aux fréquences de coupure haute et basse de H2, on impose un gain de 0.5 au lieu de 1, soit : H2= 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)]; Au lieu de : H2 = 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)]; On crée des fréquences de coupure à -6dB fc1=1000Hz est une fréquence de coupure à – 6 dB : en effet, H(1000)= 2= 4 x 0.5, moitié du gain de la bande passante (et on a 0.5 ~ -6 dB)

Fréquences de coupures à -6db ? Solution retenue : on arrondit un peu plus la réponse fréquentielle définie dans H2 (cf. page 12 du cours n°6), H2= 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 Fréquences de coupures à -6db ?

En résumé, créer et utiliser le filtre du cours n°6 H(f) d’où le vecteur H2: H2 = 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)]; Arrondir H2 dans H2a H2a= 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)]; Arrondir davantage H2aa= 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)]; Utiliser le filtre H2aa: h2= fftshift(real(ifft(H2aa))); // pour calculer les coefficients du filtre [e, fe]= wavread(‘signal.wav’); // pour charger le signal et fe s= convol(h2,e); // pour filtrer le signal e dans s