Metody i algorytmy sterowania cyfrowego
|
||
Michał Łoński 164146 |
Temat: Filtry NOI i SOI
|
Data odbycia laboratorium: 21.10.2010 oraz 4.11.2010 |
Filtry SOI – filtry nierekursywne o skończonej odpowiedzi impulsowej. Są to filtry w strukturze których nie występuje pętla sprzężenia zwrotnego, każda próbka odpowiedzi nie zależy od poprzednich a jedynie od próbek wymuszenia. W rezultacie odpowiedź impulsowa dowolnego filtru SOI ma zawsze skończoną liczbę próbek. Układy te są zawsze stabilne i charakteryzują się liniowymi charakterystykami fazowymi.
Filtry NOI – filtry rekursywne o nieskończonej odpowiedzi impulsowej. Są to filtry w strukturze których występuje pętla sprzężenia zwrotnego, każda próbka odpowiedzi zależy od poprzednich .W rezultacie odpowiedź impulsowa dowolnego filtru rekursywnego może mieć nieskończoną liczbę próbek. Filtry te charakteryzują się lepszymi charakterystykami amplitudowymi przy niższych rzędzie filtru niż filtry SOI.
Filtry dzielimy na dolnoprzepustowe, czyli takie które przepuszczają niskie częstotliwości, a tłumią wysokie:
Oraz górnoprzepustowe, które przepuszczają częstotliwości wysokie, a niskie sa przez nie tłumione:
Filtr górnoprzepustowy o strukturze NOI:
Transmitancja filtru Butterwortha II rzędu:
Aby przejść na transmitancję dyskretną korzystamy z przekształcenia biliniowego dla filtru górnoprzepustowego:
s
Wyliczenie :
>>abs(roots([-1 0 0 0 -1]))
ans=1.0
Wyliczenie przekształcenia biliniowego dla filtru górnoprzepustowego:
Wprowadzenie danych do MatLab'a:
gr=9; %numer grupy na podstawie którego wyliczane są poniższe dane
Wga=1.0;
fgc=200+gr*15;
Wgc=2*pi*fgc;
f=2000+gr*100;
Tp=1/f;
B=Wga*tan(Wgc*Tp/2);
z1=B^2+sqrt(2)*B+1;
z2=2*B^2-2;
z3=B^2-sqrt(2)*B+1;
L=[1 -2 1];
M=[z1 z2 z3];
G=tf(L,M);
Wykreślenie odpowiedzi częstotliwościowej filtru:
[H,F]=freqz(L,M,512,f);
plot(F,abs(H))
grid on;
rys. 1: odpowiedź częstotliwościowa filtru górnoprzepustowego
Wykreślenie charakterystyki fazowej:
P=angle(H)*180/pi;
plot(F,P);
grid on;
rys. 2: charakterystyka częstotliwościowa
Opóźnienie fazy:
phasedelay(L,M,512,f);
grid on;
rys. 3: opóźnienie fazy filtru
Odpowiedź na funkcje skoku jednostkowego:
[o,ts]=stepz(L,M);
plot(ts,o);
grid on;
rys. 4: odpowiedz na skok jednostkowy
Filtr górnoprzepustowy o strukturze SOI:
Ilosć próbek zależy od częstotliwości próbkowania f p i można ją wyliczyć ze wzoru:
gdzie
=
gr=9;
Wga=1.0;
fgc=200+gr*25;
fgc=fgc-25;%zaokraglenie do wielokrotnosci 50
Wgc=2*pi*fgc;
fp=2000+gr*100;
Tp=1/fp;
N=fp/50;
B=Wga*tan(Wgc*Tp/2);
H=[zeros(1,9), exp(-i*(9:28)*pi*(N-1)/N), 0, exp(i*(N-(30:49))*pi*(N-1)/N), zeros(1,8)];
stem(0:N-1,abs(H));
rys. 5: wykres dyskretny filtru
Charakterystyka odpowiedzi impulsowej:
impz(L,1);
rys. 6: odpowiedz impulsowa filtru
Charakterystyka widmowa:
h=ifft(H)
L=[h];
M=[1];
G=tf(L,M);
[H,F]=freqz(L,M,512,fp);
plot(F,abs(H))
rys. 7: charakterystyka widmowa
Charakterystyka widmowa po dodaniu okna wygładzającego:
h=ifft(H)
L=[h];
L=h.*hanning(N)';
M=[1];
G=tf(L,M);
[H,F]=freqz(L,M,512,fp);
plot(F,abs(H))
rys. 8: charakterystyka filtru wygładzonego oknem hamminga
Charakterystyka częstotliwościowa:
P=angle(H)*180/pi;
plot(F,P);
rys. 9: charakterystyka częstotliwościowa
Opóźnienie fazy:
phasedelay(L,M,512,fp);
rys. 10: opóźnienie fazy
Odpowiedź na skok skok jednostkowy:
[o,ts]=stepz(L,M);
plot(ts,o);
rys. 11: odpowiedź na skok jednostkowy
Filtracja sygnału zaszumionego filtrem NOI oraz SOI
Generacja sygnału do przefiltrowania:
t=(0:(1/fp):0.16);
signal=4.87*sin(89*pi*t)+3.33*sin(2*pi*(fgc+150)*t)+8.69*sin(0.1*pi+6.7*t);
plot(t,signal)
rys. 12: wygenerowany sygnał zaszumiony
Transformata fouriera:
Le = length(t)-1;
signal1 = abs(fft(signal))/(Le/2);
ff = 0:(fp./Le):fp;
plot(ff,signal1)
grid on;
rys. 13: transformata fouriera sygnalu
Filtrowanie NOI:
gr=9;
Wga=1.0;
fgc=200+gr*15;
Wgc=2*pi*fgc;
fp=2000+gr*100;
Tp=1/f;
B=Wga*tan(Wgc*Tp/2);
z1=B^2+sqrt(2)*B+1;
z2=2*B^2-2;
z3=B^2-sqrt(2)*B+1;
L=[1 -2 1];
M=[z1 z2 z3];
t=(0:(1/fp):0.16);
signal=4.87*sin(89*pi*t)+3.33*sin(2*pi*(fgc+150)*t)+8.69*sin(0.1*pi+6.7*t);
signal1_f = filter(L,M,signal);
plot(t,signal1_f)
grid on;
rys. 14: Sygnał przefiltrowany filtrem NOI
Transformata fouriera sygnału przefiltrowanego
signal1_f = filter(L,M,signal);
Le = length(t)-1;
signal1 = abs(fft(signal1_f))/(Le/2);
ff = 0:(fp./Le):fp;
plot(ff,signal1)
rys. 15: Transformata fouriera sygnalu przefiltrowanego filtrem NOI
Filtrowanie SOI:
gr=9; %numer grupy na podstawie którego wyliczane s? poni?sze dane
Wga=1.0;
fgc=200+gr*15;
Wgc=2*pi*fgc;
fp=2000+gr*100;
Tp=1/f;
N=fp/50;
H=[zeros(1,9), exp(-i*(9:28)*pi*(N-1)/N), 0, exp(i*(N-(30:49))*pi*(N-1)/N), zeros(1,8)];
L=ifft(H);
t=(0:(1/fp):0.16);
signal=4.87*sin(89*pi*t)+3.33*sin(2*pi*(fgc+150)*t);
signal1_f = filter(L,1,signal);
plot(t,signal1_f)
grid on;
rys. 15: Sygnał przefiltrowany filtrem SOI
Transformata fouriera sygnału przefiltrowanego
signal1_f = filter(L,1,signal);
Le = length(t)-1;
signal1 = abs(fft(signal1_f))/(Le/2);
ff = 0:(fp./Le):fp;
plot(ff,signal1)
rys. 15: Transformata fouriera sygnalu przefiltrowanego filtrem SOI
Wnioski
W filtrach NOI każda próbka odpowiedzi zależy od poprzednich. Filtry nierekursywne mają liniową charakterystykę fazową w przeciwieństwie do rekursywnych.
Po przefiltrowaniu sygnału zaszumionego będącego iloczynem trzech sinusoid oba filtry wydzieliły wysokie czestotliwości, filtr NOI skutecznie przefiltrowal juz od pierwszej próbki, w przeciwieństwie do filtru SOI który na wtępie wygenerował kilka oscylacjii. Z charakterystyk po filtracjii zauważyć można ze składowe po filtracji filtrem NOI mają wyższy okres niż składowe widoczne po filtracjii filtrem SOI.