Cwiczenia z analizy sygnałów
Transkrypt
Cwiczenia z analizy sygnałów
Filtry IIR Zadania Przepróbkowywanie 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. Jarosław Żygierewicz Filtry Filtry IIR Zadania Przepróbkowywanie Filtry IIR W określaniu parametrów filtrów używa się często pojęcia decybel [dB]. Dwa poziomy sygnału P oraz P0 różnią się o n decybeli, jeżeli n = 10 log10 P P0 W funkcjach do projektowania filtrów w Matlabie używane są: Wp - pasmo przenoszenia Ws - pasmo tłumienia Rp - tętnienie w pasmie przenoszenia w dB Rs - tłupienie w pasmie tłumienia w dB częstości podawane są w częstościach znormalizowanych FN = 1 Jarosław Żygierewicz Filtry Filtry IIR Zadania Przepróbkowywanie 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) Jarosław Żygierewicz Filtry Filtry IIR Zadania Przepróbkowywanie 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. Jarosław Żygierewicz Filtry Filtry IIR Zadania Przepróbkowywanie 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 w zadanych czestościach ( w f ) Jarosław Żygierewicz Filtry Filtry IIR Zadania Przepróbkowywanie Zadania 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 Jarosław Żygierewicz Filtry Filtry IIR Zadania Przepróbkowywanie 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. Jarosław Żygierewicz Filtry Filtry IIR Zadania Przepróbkowywanie 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)) Jarosław Żygierewicz Filtry Filtry IIR Zadania Przepróbkowywanie Do dołu: Zmniejszamy częstość próbkowania całkowitą ilość razy. Musimy pamiętać o tym, żeby wyfiltrować to, co było w 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); %przefiltrujemy filtrem dolnoprzepustowym tak aby nic nie zostało powyzej ss=filtfilt(b,a,s); % nowa czestosc probkowania jest k razy niższa 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) Jarosław Żygierewicz Filtry Filtry IIR Zadania Przepróbkowywanie Zmiana częstości o wymierną ilość razy: P ilość razy Zmieniamy częstość próbkowania o wymierną Q uzyskujemy składając powyższe kroki tzn. najpierw zwiększamy częstość P-krotnie, a następnie zmniejszamy Q-krotnie. Jarosław Żygierewicz Filtry Filtry IIR Zadania Przepróbkowywanie 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 Jarosław Żygierewicz Filtry