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

Podobne dokumenty