Filtry IIR Filtry IIR mają zazwyczaj dużo niższe rzędy przy osiągach takich jak FIR z dużo wyższymi rzędami. W matlabie mamy zaimplementowane kilka funkcji do projektowania óptymalnych pod różnymi względami filtrów w klasycznych konfiguracjach: dolno albo górnoprzepustowe i pasmowo przepustowe albo pasmowo zaporowe.
Filtry IIR W określaniu parametrów filtrów używa się często pojęcia decybel [db]. DwapoziomysygnałuPorazP 0 różniąsięondecybeli,jeżeli n =10log 10 P P 0 W funkcjach do projektowania filtrów w Matlabie używane są: Wp- pasmo przenoszenia Ws- pasmo tłumienia Rp-tętnieniewpasmieprzenoszeniawdB Rs-tłupieniewpasmietłumieniawdB częstości podawane są w częstościach znormalizowanych FN = 1
Funkcje dostępne w Matlabie Filtr Butterwortha daje gładką, monotoniczną funkcję przenoszenia [n,wn]=buttord(wp, Ws, Rp,Rs); [b,a]=butter(n,wn) Filtr Czebyszewa I rodzaju- gładka funkcja przenoszenia w paśmie tłumienia, minimalizowane tętnienia(ripple) w paśmie przenoszenia [n,wn]=cheb1ord(wp, Ws, Rp,Rs); [b,a]=cheby1(n,wn) Filtr Czebyszewa II rodzaju- gładka funkcja przenoszenia w paśmie przenoszenia, minimalizowane tętnienia (ripple) w paśmie tłumienia [n,wn]=cheb2ord(wp, Ws, Rp,Rs); [b,a]=cheby2(n,wn) Filtr eliptyczny daje najostrzejsze przejście pomiędzy pasmem tłumienia i przenoszenia przy najniższym rzędzie, tętnienia obecne zarówno w paśmie przenoszenia jak i w paśmie tłumienia [n,wn]=ellipord(wp, Ws, Rp,Rs); [b,a]=ellip(n,wn)
W powyższych funkcjach: Jeśli Wn jest skalarem to domyślnie robiony jest filtr dolnoprzepustowy, jeśli chcemy górnoprzepustowy to po liście argumentów podajemy high. Jeśli Wn jest wektorem to robiony jest filtr pasmowo-przepustowy z granicami pasma takimi jak Wn. Aby uzyskać filtr pasmowo-zaporowy piszemy stop po liście argumentów.
Filtry wielopasmowe: [b,a]=yulewalk(n,f,m) n-rząd f- częstości, dla których zachodzi zmiana w funkcji przenoszenia m- wartości funkcji przenoszenia wzadanychczestościach(wf)
Filtry IIR 1 Skonstruować filtry dolnoprzepustowe rzędu n = 5 częstość odcięcia 30 Hz, częstość próbkowania sygnału 128Hz, Rp=0.5dB, Rs=20dB, przy pomocy wszystkich podanych powyżej funkcji i porównać ich własności. 2 Dobrać rząd i zaprojektować, a następnie zbadać własność otrzymanego filtru butterwortha spełniającego poniższe kryteria: pasmo przenoszenia 1000-2000 Hz pasmo tłumienia zaczyna się 500Hz od każdego z brzegów pasma przenoszenia, próbkowanie 10kHz, najwyżej 1 db tętnienia w paśmie przenoszenia, co najminiej 60dB tłumienia w paśmie tłumienia. 3 Zaprojektować filtr do wyławiania wrzecion snu z sygnału http://brain.fuw.edu.pl/~jarek/sygnaly/tf/c4spin.txt
Do góry: Zwiększamy częstość prókowania całkowitą ilość razy P. Najpowszechniej stosowana metoda polega na dodaniu P zer pomiędzy istniejące próbki sygnału tak aby osiągnął on P-krotnie większą długość. Następnie taki rozciągnięty sygnał filtrujemy filtrem dolnoprzepustowym o częstości odcięcia nie większej niż częstość Nyquista oryginalnego sygnału- rozciąganie sygnału nie dokłada do niego nowej informacji więc i tak nic nie tracimy.
Przykład przepróbkowania do góry: t=0:0.001:0.03;%czas x = sin(2*pi*30*t) + sin(2*pi*60*t); y=interp(x,4); figure(1) subplot(321) stem(x(1:30)); title( Original Signal ); subplot(323) stem(y(1:120)); title( Interpolated Signal ); subplot(322) stem(x(1:30)); subplot(324) X=zeros(1,4*length(x)); X(1:4:end)=x; stem(x(1:120)); b=fir1(10,1/4); figure(2) freqz(b,1,1000) figure(1) subplot(326) y=filtfilt(b,1,x); stem(y(1:120))
Do dołu: Zmniejszamy częstość próbkowania całkowitą ilość razy. Musimypamiętaćotym,żebywyfiltrowaćto,cobyłow oryginalnym sygnale powyżej docelowego Nyquista, żeby uniknąć aliasingu w wynikowym sygnale. przykład przepróbkowania do niższej częstości Fs1=128;%Hz FN1=Fs1/2; t=0:1/fs1:0.5-1/fs1;%czas probkowany 1/Fs f=6;%hz fi=pi/2; s=sin(2*pi*t*f+fi); subplot(311) stem(t,s) %obnizamy czestosc probkowania k razy k=2; Fs2=Fs1/k; FN2=Fs2/2; [b,a]=butter(5,fn2/fn1); ss=filtfilt(b,a,s); t2=0:1/fs2:0.5-1/fs2; subplot(312) stem(t,ss) axis tight subplot(313) ss2=ss(1:k:end); stem(t2,ss2) %przefiltrujemy filtrem dolnoprzepustowym tak aby nic nie zostało powyzej % nowa czestosc probkowania jest k razy niższa
Zmiana częstości o wymierną ilość razy: Zmieniamyczęstośćpróbkowaniaowymierną P Q ilośćrazyuzyskujemy składając powyższe kroki tzn. najpierw zwiększamy częstość P-krotnie, a następnie zmniejszamy Q-krotnie.
Funkcje do zmiany częstości w Matlabie interp zwiększa częstość próbkowania decimate zmniejsza częstość próbkowania upfirdn zmienia częstość próbkowania: musimy sobie sami zaprojektować antyaliasowy filtr FIR do ograniczania pasma resample zmienia częstość próbkowania: firls do zaprojektowania antyaliasowego FIR upsample dokłada zera zdo sygnału downsample wyjmuje co którąś probkę z sygnału