Documente Academic
Documente Profesional
Documente Cultură
Lucrarea 6
1. Scopul lucrării
2. Noţiuni teoretice
x[n] y[n]
FN
X(ejω) tip Y(ejω)
X(z) Y(z)
În timp discret, relaţia între secvenţele de intrare x[n] şi de ieşire y[n] este :
y[n]=b0x[n]+b1x[n-1]+…+bMx[n-M]-a1y[n-1]-…-aNy[n-N]
Y [ z] Z { y[n]} ∑b z i
−i
HIIR(z)= = = i =0
X [ z ] Z { x[n]} N
1 + ∑ ai z − i
i =1
1
Universitatea din Pitesti Laborator DSP
x[n] 1 y[n]
2 ∑
z-1
1
2
Rezultă că:
1 1
y[n] = x[n] + y[n − 1]
2 2
astfel că:
1 1
Y [ z] = X [ z ] + z −1Y [ z ]
2 2
Funcţia de transfer a FN-IIR din figură are expresia:
1
Y ( z) 2 1
H IIR ( z ) = = =
X ( z) 1 2 − z −1
1 − z −1
2
iar răspunsul pondere corespunzător este :
⎧ 1 ⎫
⎪
⎪ ⎪⎪
h IIR [n] = Z −1 {H IIR ( z )} = Z −1 ⎨ 2
⎬
⎪1 − 1 z −1 ⎪
⎪⎩ 2 ⎪⎭
n n +1
1⎛1⎞ ⎛1⎞
= ⎜ ⎟ ⋅ u[n] = ⎜ ⎟ ⋅ u[n]
2⎝2⎠ ⎝2⎠
2
Universitatea din Pitesti Laborator DSP
hIIR[n]
1
●
1 2
●
4 1
● ●
8 ● ● ●●
● ● ● ● ● ● ● ●
0 1 2 3 4 5 6 7 n
H a (s) HIIR(z)
1 − z −1
s→
T
Algoritm :
3
Universitatea din Pitesti Laborator DSP
Algoritm:
H IIR ( z ) = H a (s ) 2 1− z −1
s→
T 1+ z −1
b0 + b1 z −1
H ( z) =
1 + a1 z −1
∑{ }
NF 2
H (e jωm ) − H dorit (e jω m ) = min
m =1
4
Universitatea din Pitesti Laborator DSP
[ b, a ] ⎫
⎬ = butter (n , Wn , options )
[z, p, k ]⎭
[ b, a ] ⎫
⎬ = cheby1( n , Rp, Wn , options )
[z, p, k ]⎭
[ b, a ] ⎫
⎬ = cheby 2(n , Rp, Rs, Wn , options )
[z, p, k ]⎭
[ b, a ] ⎫
⎬ = ellip(n , Rp, Rs, Wn , options )
[z, p, k ]⎭
unde [b, a] sunt coeficienţii funcţiei de transfer, iar [z, p, k ] sunt zerourile (z),
polii (p), respectiv amplificarea (k).
⎧ buttord ⎫
⎪ ⎪
⎪ cheb1ord ⎪
[n, Wn] = ⎨ ⎬(Wp, Ws, Rp, Rs )
⎪cheb2ord ⎪
⎪⎩ ellipord ⎪⎭
unde:
- Wp este frecvenţa de tăiere pentru banda de trecere; este un scalar sau
un vector de două componente cu valorile cuprinse între 0 şi 1, unde 1
corespunde frecvenţei Nyquist;
- Ws este frecvenţa de tăiere pentru banda de oprire; este un scalar sau
un vector de două componente cu valorile cuprinse între 0 şi 1, unde 1
corespunde frecvenţei Nyquist;
- Rp - riplul maxim în banda de trecere în dB;
5
Universitatea din Pitesti Laborator DSP
0
Caracteristica de transfer
10
-5
Amplitudine
10
-10
10
-15
10
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frecventa normata
6
Universitatea din Pitesti Laborator DSP
Secvenţa Matlab:
7
Universitatea din Pitesti Laborator DSP
Caracteristica de transfer
1.5
Amplitudine
0.5
0
0 100 200 300 400 500 600 700 800
Frecventa [Hz]
Caracteristica de faza
0
-200
Faza [grade]
-400
-600
-800
0 100 200 300 400 500 600 700 800
Frecventa [Hz]
8
Universitatea din Pitesti Laborator DSP
Caracteristica de transfer
2
Amplitudine
0
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
Frecventa normata
Caracteristica de faza
5000
Faza [grade]
-5000
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5
Frecventa normata
9
Universitatea din Pitesti Laborator DSP
Se foloseşte funcţia:
[numd,dend]=impinvar(num,den,Fs)
Secvenţa Matlab:
Rp=3;Rs=20;
Wp=2*pi*[0.3 0.4];
Ws=2*pi*[0.2 0.5];
% calculul ordinului si a frecventei de taiere
% a filtrului analogic
[n,Wn]=cheb1ord(Wp,Ws,Rp,Rs,'s');
% proiectarea filtrului analogic prototip
[z,p,k]=cheb1ap(n,Rp); %vezi help cheb1ap
% determinare coeficienti functie de transfer
[num,den]=zp2tf(z,p,k); %vezi help zp2tf
Wo=sqrt(Wn(1)*Wn(2));
Bw=Wn(2)-Wn(1);
% translatare de frecventa (vezi HELP lp2bp)
[numt,dent]=lp2bp(num,den,Wo,Bw);
w=linspace(0,1,500)*2*pi;
H=freqs(numt,dent,w);
plot(w/2/pi,20*log10(abs(H)), 'r');
10
Universitatea din Pitesti Laborator DSP
ylabel('Amplitudine (dB)');
hold on;
0
filtru analogic
filtru digital
-20
Amplitudine (dB)
-40
-60
-80
-100
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Se foloseşte funcţia:
[numd,dend]=bilinear(num,den,Fs);
unde:
- num şi den sunt vectori linie ce conţin coeficienţii funcţiei de transfer
ai filtrului analogic;
11
Universitatea din Pitesti Laborator DSP
Secvenţa Matlab:
wp=2*pi*[0.1 0.15];
ws=2*pi*[0.05 0.2];
Rp=3;Rs=20;Fs=2;
%specificarea parametrilor filtrului analogic
Wp=wp*Fs;
Ws=ws*Fs;
%calculul ordinului si a frecventei de
%taiere a filtrului analogic
[n,Wn]=cheb1ord(Wp,Ws,Rp,Rs,'s');
%proiectarea filtrului analogic prototip
[z,p,k]=cheb1ap(n,Rp);
[num,den]=zp2tf(z,p,k); %vezi help zp2tf
%translarea de frecventa
Wo=sqrt(Wn(1)*Wn(2));
Bw=Wn(2)-Wn(1);
[numt,dent]=lp2bp(num,den,Wo,Bw);
%raspunsul in frecventa al filtrului analogic
w=linspace(0,1,500)*2*pi;
h=freqs(numt,dent,w);
%proiectarea filtrului digital Fs=2
[bz,az]=bilinear(numt,dent,Fs);
%raspunsul in frecventa al filtrului
[hd,wd]=freqz(bz,az);
%reprezentarea grafica
figure(1);
plot(wd/pi,20*log10(abs(hd)),'r',w/2/pi,20*log10(abs
(h)),'b'); grid;
xlabel('F (Hz) pt analogic \omega/\pi pt. discret');
ylabel('Amplitudine (db)');
legend('filtru discret','filtru analogic');
După cum era de aşteptat, frecvenţa benzii de trecere şi a benzii de oprire ale
filtrului discret nu coincid cu cele specificate. Acest lucru se datorează neliniarităţii
transformării biliniare.
12
Universitatea din Pitesti Laborator DSP
-50
filtru analogic
-150
-200
-250
-300
-350
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
F (Hz) pt analogic ω/π pt. discret
[b,a]=yulewalk(n,f,m)
unde:
m - un vector cu valorile amplitudinilor dorite
f – un vector cu valorile frecvenţelor specificate
13
Universitatea din Pitesti Laborator DSP
1.4
caracteristica dorita
1.2 caracteristica filtrului proiectat
0.8
Castig
0.6
0.4
0.2
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Frecventa normata la frecventa Nyquist
Relaţia în timp discret care caracterizează structura unui filtru IIR este:
M N
y[n] = ∑ bi ⋅ x[n − i ] − ∑ a j ⋅ y[n − j ]
i =0 j =1
unde :
y[n] – este semnalul de la ieşirea filtrului;
x[n] – este semnalul de la intrarea filtrului;
bi – sunt coeficienţii numărătorului funcţiei de transfer;
aj – sunt coeficienţii numitorului funcţiei de transfer;
14
Universitatea din Pitesti Laborator DSP
15
Universitatea din Pitesti Laborator DSP
%Aplicatie
%Generare semnal de test
t=0:1/fe:1999/fe;
n=0:length(t)-1;
x=0.2*sin(2*pi*500/fe*n)+0.2*sin(2*pi*Wn/fe*n);
%Determinarea raspunsului la impuls
h=impz(b,a);
figure(2);
%Convolutia intre semnalul de intrare si iesire
y=conv(x,h);
subplot(211);
plot(t(1:700), x(1:700)); grid;
title('Semnalul de intrare');
ylabel('Amplitudine');
xlabel('Timp [s]');
subplot(212);
plot(t(1:700), y(1:700)); grid;
title('Semnalul de iesire');
ylabel('Amplidine');
xlabel('Timp [s]');
a=a(2:La)/max
b=b/max
conversie_Hexa(b,'C:\coef\coef_b.dat');
conversie_Hexa(a,'C:\coef\coef_a.dat');
16
Universitatea din Pitesti Laborator DSP
function conversie_Hexa(coef,numefis);
%aducerea in format 16.0
coef_i=round(32768*coef);
%rutina pentru aducerea numerelor negative
%in format CC2
for j=1:length(coef_i)
if coef_i(j)<0 coef_i(j)=coef_i(j)+2^16;
end
end
%Deschidere fisier
fis1=fopen(numefis,'w');
%scriererea de date in fisier
fwrite(fis1,coef_pt_fis');
%Inchidere fisier
fclose(fis1);
disp(' ');
disp(['Fisier de date : ' numefis ' ...creat. OK! ']);
17
Universitatea din Pitesti Laborator DSP
i2=w; l2=length(w);
i3=v; l3=length(v);
i4=a; l4=length(a);
i7=b; l7=length(b);
//initializarea cu zero a buferelor
m2=1;
cntr=l2;
do et until ce;
et: dm(i2,m2)=0x00;
m3=1;
cntr=l3;
do ete until ce;
ete: dm(i3,m3)=0x00;
18
Universitatea din Pitesti Laborator DSP
input_samples:
ena sec_reg; //utilizeaza bancul secundar de registrii
m2=-1; modify(i2,m2) ;
m2=0;
dm(i2,m2)=mr1;
m2=1;
rti;
19
Universitatea din Pitesti Laborator DSP
4. Desfăşurarea lucrării
20