Sunteți pe pagina 1din 16

Laborator 4

Proiectarea filtrelor digitale. Filtre cu rspuns infinit la impuls


(Infinite Impulse Response - IIR)

Aplicatii
Proiectarea filtrelor IIR prin metoda invarianei rspunsului la impuls
)

a)Se presupune c dispunem de un filtru analogic, proiectat cu una din metodele


de proiectare pentru filtre analogice, filtru care are urmtoarea transformat Laplace a
rspunsului:

H s
0.12093

s 0.364s 0.4945 s 0.9945s 0.4945 s 2 1.3585s 0.4945
2 2

a1) Aplicai metoda invarianei rspunsului la impuls pentru a determina filtrului digital
echivalent.
Soluie
Secvena MATLAB :

% Se presupune ca dispunem de un filtru analogic, proiectat cu una din metodele


% de proiectare a filtrelor analogice si dorim sa gasim filtrul digital corespunzator,
% aplicind metoda invariantei impulsului.
% Fie transformata Laplace a raspunsului filtrului analogic:
%
% 0.12093
% H(s) = -----------------------------------------------------------------------
% (s^2 + 0.364s + 0.4945)(s^2 + 0.9945s + 0.4945)(s^2 + 1.3585s + 0.4945)
%
B = 0.12093;
a1 = [1 0.364 0.4945];
a2 = [1 0.9945 0.4945];
a3 = [1 1.3585 0.4945];
A = conv(a1,conv(a2,a3));

% Se transforma filtrul analogic in filtru digital aplicind metoda invariantei


% impulsului.
Fs = 1;% esantionare la Fs Hz
N = 256;% numar de puncte pentru raspunsul in frecventa
[Bz,Az] = impinvar(B,A,Fs);
[H, W] = freqz(Bz,Az,N);%nu dam frecventa de esantionare, ca sa avem radiani

1
[Ha,Wa] = freqs(B,A,N);%H(jWa), cu radiani pe axa x

figure
plot(Wa, abs(Ha)); title('b - Filtru analogic, r - Filtru IIR cu invarianta impuls');hold on
plot(W,abs(H),'r'), xlabel('rad'), ylabel('|H(e^jomega)|');

figure
subplot(211), zplane(Bz, Az);
subplot(212),[hd,td] = impz(Bz,Az,[],Fs);plot(td,hd),title('Functia pondere discreta');

2
b)S se proiecteze un filtru IIR trece-jos cu metoda invarianei rspunsului la impuls, pornind de la un
filtru analogic Butterworth. Caracteristicile de gabarit pentru filtrul digital ce trebuie proiectat, sunt:

- frecvena de tiere n banda de trecere p 0.2

- frecvena (omega) de tiere n banda de oprire s 0.3

- pierderile n banda de trecere nu mai mari de 1 dB.


- atenuarea n banda de oprire de minimum 15 dB.

- fe 1Hz .

Reprezentai caracteristica de amplitudine a filtrului n decibeli precum i caracteristica de faz a


acestuia.

Soluie
Secvena MATLAB :

% Sa se proiecteze un filtru IIR - trece jos cu metoda invariantei la


% impuls, pornind de la un filtru analogic Butterworth.
% Caracteristicile de gabarit pentru filtrul digital de proiectat, sint:

3
% - frecventa (omega) de taiere in banda de trecere wp=0.2*pi.
% - frecventa (omega) de taiere in banda de oprire ws=0.3*pi.
% - Pierderile in banda de trecere nu mai mari de 1 dB.
% - Atenuarea in banda de oprire de minimum 15 dB.
% - Fe = 1 Hz.

% Urmeaza determinarea parametrilor filtrului analogic Butterworth


% care sa indeplineasca specificatiile date.
% Cum Fe=1Hz rezulta ca frecventa continua 2*pi*f este echivalenta
% cu frecventa discreta omega.
Wp = 0.2;
Ws = 0.3;
Rp = 0.2;
Rs = 20;
Fs = 1;
[N,Wn] = buttord(Wp,Ws,Rp,Rs,'s')

% Se creeaza filtrul analogic Butterworth cu parametrii determinati


% anterior;
[B,A] = butter(N,Wn,'s');

% Se calculeaza si reprezinta raspunsul in frecventa al filtrului analogic. Daca


% se presupune ca nu exista aliere la discretizarea filtrului analogic, atunci
% caracteristica filtrului proiectat va fi echivalenta cu cea a filtrului IIR
% (invarianta impulsului).
[Ha, Wa] = freqs(B,A);

[Bz,Az] = impinvar(B,A,Fs);
[H, W] = freqz(Bz,Az);%W in radians

figure,subplot(211),plot(Wa,abs(Ha)),title('Filtrul Butterworth
analogic'),xlabel('rad'),ylabel('|H(jWa)|');
title('b - Filtru analogic, r - Filtru IIR cu invarianta impuls');hold on
plot(W,abs(H),'r'), xlabel('Hz'), ylabel('|H(e^jomega)|');
subplot(212),plot(Wa./(2*pi),abs(Ha)),title('Filtrul Butterworth
analogic'),xlabel('Hz'),ylabel('|H(jWa)|');
title('b - Filtru analogic, r - Filtru IIR cu invarianta impuls');hold on
plot(W.*(Fs/(2*pi)),abs(H),'r'), xlabel('Hz'), ylabel('|H(e^jomega)|');

4
S se proiecteze cu metoda invarianei rspunsului la impuls un filtru trece-jos IIR, pornind de la filtrele
analogice proiectate cu metodele: Butterworth, Cebev I i II. Caracteristicile filtrului IIR sunt:

- frecvena de tiere n banda de trecere f p 100 Hz ;

- frecvena de tiere n banda de oprire fs 150 Hz;

- frecvena de eantionare fe 500 Hz.

Reprezentai caracteristica de amplitudine a filtrului n decibeli precum i caracteristica de faz a


acestuia.

Soluie
Secventa MATLAB:

% Sa se proiecteze cu metoda invariantei impulsului un filtru trece - jos IIR,


% pornind de la filtrele analogice proiectate cu metodele: Butterworth,
% Cebisev I si II.
% Caracteristicile filtrului IIR sint:
% - frecventa de taiere in banda de trecere fp=100 Hz ;
% - frecventa de taiere in banda de oprire fs=150 Hz;
% - frecventa de esantionare Fe=500 Hz.

5
Fe = 500;
Wp = 2*100*pi;
Ws = 2*150*pi;

% Invarianta impulsului pornind de la un filtru analogic Butterworth


[N,Wn] = buttord(Wp,Ws,3,40,'s')

% Se creeaza filtrul analogic Butterworth cu parametrii determinati


% anterior;
[B,A] = butter(N,Wn,'s');
[Ha, Wa] = freqs(B,A,100);
[Bz, Az] = impinvar(B,A,Fe);
[H, W] = freqz(Bz, Az,[],Fe);%in Hz
figure,plot(Wa/(2*pi),abs(Ha)),title('Filtrul IIR Butterworth'),xlabel('Frecventa
(Hz)'),ylabel('|H(jf)|');
hold on,plot(W,abs(H),'r');

% Invarianta impulsului pornind de la un filtru analogic Cebisev I


[N,Wn] = cheb1ord(Wp,Ws,3,40,'s');

% Se creeaza filtrul analogic Cebisev I cu parametrii determinati


% anterior;
[B,A] = cheby1(N,0.5,Wn,'s');
[Ha, Wa] = freqs(B,A,500);
figure,plot(Wa/(2*pi),abs(Ha)),title('Filtrul IIR Cebisev I'),xlabel('Frecventa
(Hz)'),ylabel('|H(jf)|');

% Invarianta impulsului pornind de la un filtru analogic Cebisev II


[N,Wn] = cheb2ord(Wp,Ws,3,40,'s')

% Se creeaza filtrul analogic Cebisev II cu parametrii determinati


% anterior;
[B,A] = cheby2(N,20,Wn,'s');
[Ha, Wa] = freqs(B,A,100);
figure,plot(Wa/(2*pi),abs(Ha)),title('Filtrul IIR Cebisev II'),xlabel('Frecventa
(Hz)'),ylabel('|H(jf)|');

% Invarianta impulsului pornind de la un filtru analogic eliptic


%[N,Wn]=ellipord(Wp,Ws,3,40,'s')
% Se creeaza filtrul analogic eliptic cu parametrii determinati
% anterior;
[B,A] = ellip(N,0.6,20,Wn,'s');
[Ha, Wa] = freqs(B,A,100);
figure,plot(Wa/(2*pi),abs(Ha)),title('Filtrul IIR eliptic I'),xlabel('Frecventa
(Hz)'),ylabel('|H(jf)|');

6
7
8
9
4.1.1 Proiectarea filtrelor IIR prin metoda transformrii biliniare
)

a)Dispunem de un filtru analogic cu urmtoarea transformat Laplace a


rspunsului:

H s
0.12093

s 0.364s 0.4945 s 0.9945s 0.4945 s 2 1.3585s 0.4945
2 2

a1) Reluai problema anterioar, punctul a1) aplicnd metoda transformatei biliniare.

Soluie
Cod MATLAB
% Se presupune ca dispunem de un filtru analogic, proiectat cu una din metodele
% de proiectare a filtrelor analogice si dorim sa gasim filtrul digital corespunzator,
% aplicand metoda transformarii biliniare.
% Fie transformata Laplace a raspunsului filtrului analogic:
% 0.12093
% H(s) = -----------------------------------------------------------------------
% (s^2 + 0.364s + 0.4945)(s^2 + 0.9945s + 0.4945)(s^2 + 1.3585s + 0.4945)
Fs = 10; %Hz
omega = [0:127]*pi/128;
B = 0.12093;
a1 = [1 0.364 0.4945];
a2 = [1 0.9945 0.4945];
a3 = [1 1.3585 0.4945];
A = conv(a1,conv(a2,a3));
[Ha, Wa] = freqs(B, A, 100);
[Bz,Az] = bilinear(B,A,1);
[H, W] = freqz(Bz,Az);

figure,plot(Wa,abs(Ha)),hold on,
plot(W,abs(H),'r'),title('b- Filtru analogic, r -Filtru IIR cu transf. biliniara'
),xlabel('rad'),ylabel('|H(e^jomega)|');

[h,t] = impz(Bz,Az);
figure,stem(t,h);title('Functia pondere');

Reprezentare grafica:

10
11
Prin metoda transformrilor de frecven (n domeniul continuu), s se proiecteze un filtru IIR trece-
band pornind de la un filtru prototip normalizat trece-jos, cu urmtoarele specificaii:

- frecvena central =30 Hz.


- lrgimea benzii de trecere =20 Hz.
Se presupune c trecerea de la filtrul analogic, rezultat prin transformarea de frecven, la filtrul
digital corespunztor, se face cu metoda invarianei rspunsului la impuls cu o frecven de eantionare
care previne alierea.

Soluie

Cod MATLAB:

% Prin metoda transformarilor de frecventa (in domeniul continuu), sa se


% proiecteze un filtru IIR trece-banda (FTB) pornind de la un filtru prototip
% normalizat trece-jos, cu urmatoarele specificatii:
% Frecventa centrala =30 Hz.
% Largimea benzii de trecere =20 Hz.
% Se presupune ca trecerea de la filtrul analogic, rezultat prin transformarea
% de frecventa, la filtrul digital corespunzator, se face cu metoda invariantei

12
% impulsului cu o frecventa de esantionare care previne alierea.
% Se construieste filtrul analogic prototip normalizat (cu frecventa de taiere
% unitara).
Fe = 200;
W0 = 2*30*pi;
BW = 2*20*pi;
[z,p,k] = buttap(6);

% Se trece de la reprezentarea poli-zerouri la cea in 's'.


[b,a] = zp2tf(z,p,k);
% Se construieste filtrul IIR trece-banda din filtrul prototip, aplicind
% transformarea de frecventa in domeniul continuu.
[B,A] = lp2bp(b,a,W0,BW);
[Ha, Wa] = freqs(B,A,100);

%discretizam
[Bz,Az] = impinvar(B,A,Fe);
[H, W] = freqz(Bz,Az,[],Fe);

% Se reprezinta modulul filtrului. Datorita invariantei impulsului si absentei


% alierii, filtrul digital are aceeasi caracteristica cu cel analogic.
figure,plot(W,abs(H)),grid,title('Modulul filtrului IIR trece banda'), xlabel('Frecventa (Hz)');
Reprezentare grafica:

13
S se descompun filtrul proiectat ntr-o cascad de filtre de ordinul 2. S se reprezinte
caracteristica de amplitudine a filtrului proiectat i caracteristicile de amplitudine ale
seciunilor de ordinul doi n care se descompune filtrul iniial.
Solutie
Cod MATLAB

% Sa se proiecteze un filtru IIR - trece jos


% cu un filtru analogic Butterworth.
% Caracteristicile de gabarit pentru filtrul digital de proiectat, sint:
% Fe=5 kHz.
% frecventa de taiere = 1kHz
% ordinul filtrului Butterworth = 10;
% Sa se descompuna filtrul proiectat intr-o cascada de filtre de ordinul 2. Sa se
% reprezinte caracteristica de amplitudine a filtrului proiectat si caracteristicile de
% amplitudine ale sectiunilor de ordinul doi in care se descompune filtrul initial.
n = 10;
wn = 0.4;

14
NFFT = 256;
Fe = 5000;

% Se determina filtrul digital IIR cu caracteristicile de gabarit impuse.


[B,A] = butter(n,wn);
[Hinit,Finit] = freqz(B,A,NFFT,Fe);
Hinit = 20*log10(abs(Hinit));%scara logaritmica, in dB

% Se descompune filtrul proiectat intr-o cascada de sectiuni de ordinul 2:


% se determina mai intii zerourile (z), polii (p) si factorii de cistig (k),
% dupa care prin functia "zp2sos" se determina sectiunile de ordinul 2.
[z,p,k] = butter(n,wn);
sos = zp2sos(z,p,k,'down');
m = size(sos,1);

H = zeros(NFFT,m);
[H(:,1),F] = freqz(sos(1,1:3),sos(1,4:6),NFFT,Fe);
for i=2:m,
H(:,i) = H(:,i-1).*freqz(sos(i,1:3),sos(i,4:6),NFFT,Fe);
end
H = 20*log10(abs(H));
figure,subplot(211), plotyy(Finit,Hinit,F, H(:,end)),xlabel('Frecventa (Hz)'),ylabel('Functia
de transfer (dB)');legend('Filtrul analogic','Filtrul discret');
subplot(212), plot(F,H),xlabel('Frecventa (Hz)'),ylabel('|H| ptr. sect. de ordin 2 (dB)');
Reprezentare grafica:

15
16

S-ar putea să vă placă și