0% ont trouvé ce document utile (0 vote)
41 vues7 pages

Filtrage Numérique avec Matlab

Transféré par

kamenironel0
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
41 vues7 pages

Filtrage Numérique avec Matlab

Transféré par

kamenironel0
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TRAITEMENT DE SIGNAL

FICHE DE RAPPORT
SÉANCE #4 (TP4)
Filtrage Numérique

NOM ET PRÉNOM CLASSE

#1

#2

OBJECTIFS
Réaliser le filtrage des signaux synthétiques et audio . Réaliser la synthèse des filtres
numériques RII et RIF et se familiariser avec l’outil « filterDesigner » de Matlab.

1
TRAVAIL A FAIRE

Programme à compléter

2.1 Filtrage et fonction « filter » : Filtrage d'un signal par un filtre de


fonction de transfert

Fe=44100; % Fréquence d'échantillonnage du signal


Te=1/Fe; % Période d'échantillonnage du signal
N=Fe; % Nombre d'échantillons du signal
t=0:Te:(N-1)*Te; % Vecteur temps constitué de N échantillons
f=-Fe/2:Fe/N:Fe/2-Fe/N; % Constitution du vecteur fréquence entre -Fe/2 et Fe/2

2.1.1 Filtre RII de 1er ordre


a=-0.5;
b0 = 1+a;
b1 = 0;
a0 = 1;
a1 = a;
B1=[b0 b1];
A1=[a0 a1];

 Filtrage d'un échelon unité


echelon=ones(1,N);
rep_echelon= ; % Filtrage d'un échelon par le filtre de premier
% ordre
figure
stem(t(1:N),echelon(1:N),'k');
grid on;
hold on;
stem(t(1:N),rep_echelon(1:N),'r');
hold off
xlabel('Temps (s)');
ylabel('Amplitude');
legend('Signal d''entrée','Signal de srtie')
title('Filtre de 1er ordre : Filtrage d''un échelon')

 Filtrage d'un signal carré


fc=250; % Période du signal carré
carre=1+square(2*pi*fc*t); % Génération d'un signal carré de période 1/50 = 20 ms
rep_carre= ;% Filtrage d'un signal triangulaire par le filtre de premier
% ordre
Npts=floor(Fe/fc);
figure
stem(t(1:Npts),carre(1:Npts),'k');
grid on;
hold on;
stem(t(1:Npts),rep_carre(1:Npts),'r');
hold off
xlabel('Temps (s)');
ylabel('Amplitude');
legend('Signal d''entrée','Signal de srtie')
title('Filtre de 1er ordre : Filtrage d''un signal carré')

2
2.1.2. Filtre RII de 2ème ordre

a_1=-1.2;
a_2=.3;
% Définition des coefficients du filtre de second ordre
b0 = 1+a_1+a_2;
b1 = 0;
b2 = 0;
a0 = 1;
a1 = a_1;
a2 = a_2;
B2=[b0 b1 b2];
A2=[a0 a1 a2];
 Filtrage d'un échelon unité
rep_echelon= ;% Filtrage d'un échelon par le filtre de premier ordre
figure
stem(t(1:N),echelon(1:N),'k');
grid on;
hold on;
stem(t(1:N),rep_echelon(1:N),'r');
hold off
xlabel('Echantillon (n)');
ylabel('Amplitude');
legend('Signal d''entrée','Signal de srtie')
title('Filtre de 2ème ordre : Filtrage d''un échelon')

 Filtrage d'un signal carré


rep_carre= ; % Filtrage d'un signal triangulaire par le filtre de
premier ordre
Npts=floor(Fe/fc); % pour la visualisation sur une période du signal carré
figure
stem(t(1:Npts),carre(1:Npts),'k');
grid on;
hold on;
stem(t(1:Npts),rep_carre(1:Npts),'r');
hold off
xlabel('Temps (s)');
ylabel('Amplitude');
legend('Signal d''entrée','Signal de srtie')
title('Filtre de 2ème ordre : Filtrage d''un signal carré')

 Filtrage d'un fichier .wav


[x,Fs]=audioread('Mozart.wav'); % Lecture du fichier ".wav" et extraction du signal
% temporel (stéréo) plus la fréquence
% d'échantillonnage
% et le nombre de bits utilisé pour le
% codage de l'enregistrement audio

Signal audio original


disp('Signal original')
sound(x,Fs) % cette commande vous permet d'écouter le son sur votre PC.

Signal audio filtré par un filtre RII de second ordre


yrii(:,1)= ; % filtrage du canal de droite

yrii(:,2)= ; % filtrage du canal de gauche


disp('Signal audio filtré (RII de 2ème ordre)')
sound(yrii,Fs)

3
audiowrite('Mozart_traite_rii_ord2.wav',yrii,Fs); % Création du fichier ".wav" après
filtrage
figure
plot(t(1:100),x(1:100,1),'k*-');
grid on;
hold on;
plot(t(1:100),yrii(1:100,1),'r*:');
hold off
xlabel('Temps (s)')
ylabel('Amplitude')
legend('Signal original','Signal traité')
title('Signal audio filtré (RII de 2ème ordre)')

2.2 Réponses en fréquence d’un filtre et fonction « freqz »


Soit un filtre de fonction de transfert donnée par

%Dans ce cas le filtre est donné par ses zéros et pôles


%Le filtre possède deux zéros complexes conjugués
z0 = exp(j*pi/2) ;
z1 = z0' ;
%Le filtre possède deux pôles complexes conjugués
p0 = 0.7*exp(j*pi*5/6) ;
p1 = p0' ;
Z1=[z0;z1];
P1=[p0;p1];
%On peut retrouver les coefficients du filtre en fonctions des pôles et des zéros par
%identification des deux expressions :

%Pour le filtre précédent, nous avons N=M=2, avec :

%Nous obtenons par identification que


b0=1
b1=-2*real(z0);
b2=z0*conj(z0);

a0=1;
a1=-2*real(p0);
a2=p0*conj(p0);

B= ;

A= ;

%Placement des zéros et des pôles dans le plan complexe


figure
% Trace les zéros et les pôles dans le plan complexe
title ('Zéros et pôles de la fonction de transfert')
legend('zéros','pôles')
grid on

4
 Calcul des réponses en fréquence du filtre sur la bande

[Hf,F] = ; % Réponse en fréquence

figure
subplot(2,1,1)
semilogx(2*pi*F,20*log10(abs(Hf)))
title ('Module de la réponse en fréquence')
xlabel('Fréquence (rad/s)')
ylabel('Amplitude (dB)')
axis([-2*pi*Fe/2 2*pi*Fe/2 -150 50])
grid on
subplot(2,1,2)
semilogx(2*pi*F,180*angle(Hf)/pi)
title ('Phase de la réponse en fréquence')
xlabel('Fréquence (rad/s)')
ylabel('Phase (deg)')
axis([-2*pi*Fe/2 2*pi*Fe/2 -45 180])
grid on

2.3 Synthèse de filtre RIF et fonction « fir1 »


Dans cet exercice, on se propose de faire la synthèse de filtre passe-bas RIF de fréquence de
coupure égale à 10 kHz l'aide de la méthode des fenêtres et de comparer le résultat avec celui
donné par la fonction FIR1.
Nfir=31; % ordre du filtre
fc= ;% fréquence de coupure du filtre passe-bas

Fenêtres de pondération
wrect = window(@rectwin,Nfir);
whann = window(@hanning,Nfir);
figure
stem(0:Nfir-1,[wrect,whann]);
axis([0 Nfir-1 0 1]);
legend('Fenêtre rectangulaire','Fenêtre de Hanning');
xlabel('Indice de l''échantillon (n)')
grid on

 Calcul des coefficients de la réponse impulsionnelle du filtre par transformée de Fourier


inverse et troncature de la réponse cible
n=0:1:(Nfir-1);
h=2*fc*sinc(2*(n-(Nfir-1)/2)*fc/Fe)/Fe; % Réponse impulsionnelle du filtre

hrect=(h.').*wrect; % Pondération de h par la fenêtre rectangulaire


hrect=hrect/sum(hrect); % Normalisation de la somme des coefficients à 1

hhann=(h.').*whann; % Pondération de h par la fenêtre de hanning


hhann=hhann/sum(hhann); % Normalisation de la somme des coefficients à 1
[Hrect,F] = freqz(hrect,1,N,Fe); % Réponse en fréquence avec la fenêtre
rectangulaire
[Hhann,F] = freqz(hhann,1,N,Fe); % Réponse en fréquence avec la fenêtre de hanning

 Calcul des coefficients de la réponse impulsionnelle à l'aide de la fonction FIR1


hrectfir1=fir1(Nfir-1,2*fc/Fe,wrect); % Il faut introduire une fréquence de
coupure normalisée par Fe/2
hhannfir1=fir1(Nfir-1,2*fc/Fe,whann); % Il faut introduire une fréquence de
coupure normalisée par Fe/2

[Hrectfir1,F] = freqz(hrectfir1,1,N,Fe); % Réponse en fréquence


[Hhannfir1,F] = freqz(hhannfir1,1,N,Fe); % Réponse en fréquence

5
figure
subplot(2,1,1)
stem(hrect)
hold on
stem(hrectfir1,'r-*')
hold off
title ('Réponses impulsionnelles avec une fenêtre rectangulaire')
xlabel('Echantillon (n)')
ylabel('Amplitude')
grid on
legend('A partir de la réponse cible','Fonction FIR1')
subplot(2,1,2)
stem(hhann)
hold on
stem(hhannfir1,'r-*')
hold off
title ('Réponses impulsionnelles avec une fenêtre de hanning')
xlabel('Echantillon (n)')
ylabel('Amplitude')
legend('A partir de la réponse cible','Fonction FIR1')
grid on

figure
subplot(2,1,1)
plot(F,abs(Hrect),'b*')
hold on
plot(F,abs(Hrectfir1),'r+')
hold off
title ('Module de la réponse en fréquence avec une fenêtre rectangulaire')
xlabel('Fréquence (Hz)')
ylabel('Amplitude')
grid on
legend('A partir de la réponse cible','Fonction FIR1')
subplot(2,1,2)
plot(F,abs(Hhann),'b*')
hold on
plot(F,abs(Hhannfir1),'r+')
hold off
title ('Module de la réponse en fréquence avec une fenêtre de hanning')
xlabel('Fréquence (Hz)')
ylabel('Amplitude')
legend('A partir de la réponse cible','Fonction FIR1')
grid on

2.4 L’outil « filterDesigner »

Réalisez la manipulation proposée dans la partie 2.4 du TP

6
Contenu du Rapport
Le Rapport doit contenir :

 Les commandes Matlab qui ont permis de compléter le programme ;


 Toutes les figures illustrant les manipulations faites, y compris le paragraphe 2.4;
 Les conclusions obtenues

Vous aimerez peut-être aussi