Akademia Górniczo-Hutnicza w Krakowie |
Arkadiusz Satro | |
---|---|---|
Wydział: EAIiIB |
Rok akademicki: 2013/2014 |
Rok studiów: III |
Teoria i przetwarzanie sygnałów |
Wstęp teoretyczny
Filtr jest to fragment obwodu elektrycznego lub obwodu elektronicznego odpowiedzialny za przepuszczanie lub blokowanie sygnałów o określonym zakresie częstotliwości lub zawierającego określone harmoniczne.
W zależności od "umiejscowienia" danego filtra w całym paśmie częstotliwości wyróżniamy filtry:
- dolnoprzepustowe
- górnoprzepustowe
- pasmowo-przepustowe lub pasmowo-zaporowe
Filtr dolnoprzepustowy, jak sama nazwa wskazuje, przepuszcza bez tłumienia częstotliwości leżące w dolnej części pasma, a tłumi częstotliwości wysokie.
Filtr górnoprzepustowy odwrotnie, tłumi częstotliwości z dołu pasma, a przepuszcza "górę".
Filtr pasmowo-przepustowy (zwany też środkowo-przepustowy) lub pasmowo-zaporowy (po prostu zaporowy). W pierwszym przypadku tylko pewna część pasma jest przepuszczana, gdy reszta jest wytłumiana, a w filtrach zaporowych odwrotnie - przepuszczana jest większość pasma częstotliwości oprócz pewnego wycinka, które jest tłumione.
W przypadku filtrów górno- i dolnoprzepustowych najistotniejszymi parametrami, które będą nas interesować są:
- częstotliwość odcięcia filtru albo, inaczej, częstotliwość graniczna,
- nachylenie charakterystyki tłumienia.
Częstotliwość graniczna - Najbardziej miarodajną i najłatwiejszą do ustalenia, a więc najczęściej używaną, jest taka wartość częstotliwości granicznej, która odpowiada częstotliwości, przy której tłumienie wynosi -3 dB w stosunku do ustalonej wartości (0 dB). Z tego też powodu częstotliwość tę nazywa się również częstotliwością trzydecybelową lub częstotliwością trzydecybelowego spadku.
Zadania
Korzystając ze wzoru:
Wyznaczyć próbki odpowiedzi impulsowej filtru pasmowo-przepustowego (o charakterystyce częstotliwościowej pokazanej na rysunku obok). Następnie, napisać skrypt w Matlabie rysujący przebieg wyznaczonej odpowiedzi impulsowej oraz charakterystykę częstotliwościową zaprojektowanego filtra (o długości odpowiedzi impulsowej 2N+1).
W celu wykonania filtru wykonujemy następujące obliczenia:
$$h^{\left( o \right)}\left( n \right) = \frac{1}{2\pi}(\int_{- \omega 2}^{- \omega 1}{e^{\text{jwn}}d\omega + \int_{\omega 1}^{\omega 2}{e^{\text{jwn}}d\omega) = \ \frac{1}{2\pi}}}\left( \frac{1}{- jn}e^{\text{jwn}}\left| \frac{{- \omega}_{1}}{{- \omega}_{2}} + \frac{1}{- jn}e^{\text{jwn}} \right|\frac{\omega_{2}}{\omega_{1}} \right)$$
$$= \frac{1}{2\pi}\left\lbrack \frac{1}{- jn}*\left( - j \right)\sin\left( \omega_{2}n - \omega_{1}n \right) + \frac{1}{- jn}*\left( - j \right)\sin\left( \omega_{2}n - \omega_{1}n \right) \right\rbrack$$
$$= \frac{1}{2\pi}*\frac{1}{- jn}*\left( - 2j \right)*sin\left( \omega_{2}n - \omega_{1}n \right) = \frac{1}{\text{πn}}\sin\left( \omega_{2}n - \omega_{1}n \right)$$
Wyznaczyć próbki odpowiedzi impulsowej filtru pasmowo-zaporowego (o charakterystyce częstotliwościowej pokazanej na rysunku obok). Następnie, napisać skrypt w Matlabie rysujący przebieg wyznaczonej odpowiedzi impulsowej oraz charakterystykę częstotliwościową zaprojektowanego filtra (o długości odpowiedzi impulsowej 2N+1).
W celu wykonania filtru wykonujemy następujące obliczenia:
$$h^{\left( o \right)}\left( n \right) = \frac{1}{2\pi}\lbrack\int_{- \pi}^{\pi}{1*e^{\text{jwn}}\text{dω}\ - (\int_{- \omega 2}^{- \omega 1}{e^{\text{jwn}}d\omega + \int_{\omega 1}^{\omega 2}{e^{\text{jwn}}d\omega)\rbrack = \ \ }}}$$
$$= \frac{1}{2\pi}\left\lbrack 2\pi\partial_{n} - \ \left( \ \frac{1}{- jn}e^{\text{jwn}}\left| \frac{{- \omega}_{1}}{{- \omega}_{2}} + \frac{1}{- jn}e^{\text{jwn}} \right|\frac{\omega_{2}}{\omega_{1}} \right) \right\rbrack =$$
$$= \partial_{n} - \frac{1}{2\pi}\left\lbrack \frac{1}{- jn}*\left( - j \right)\sin\left( \omega_{2}n - \omega_{1}n \right) + \frac{1}{- jn}*\left( - j \right)\sin\left( \omega_{2}n - \omega_{1}n \right) \right\rbrack$$
$$= \partial_{n} - \frac{1}{2\pi}*\frac{1}{- jn}*\left( - 2j \right)*sin\left( \omega_{2}n - \omega_{1}n \right) = \ \partial_{n} - \ \frac{1}{\text{πn}}\sin\left( \omega_{2}n - \omega_{1}n \right)$$
Skrypt w Matlabie rysujący charakterystyki filtu pasmowo-przepustowego. Wykorzystujemy tu metodę projektowania przez zera i bieguny. Aby uzyskać właściwości filtru pasmowo-zaporowego należy odpowiednio dobrać zera i bieguny.
clear all; clf; subplot(111);
% FILTR PASMOWO-PRZEPUSTOWY
fz = [ 50 100 150 350 400 450 ]; % czêstotliwoœci zer w Hz
fp = [ 200 250 300 ]; % czêstotliwoœci biegunów w Hz
Rz = [ 1 1 1 1 1 1 ]; % promienie kolejnych zer
Rp = [ 0.9 0.65 0.9 ]; % promienie kolejnych biegunów
fmax = 500; df = 1;
% Oblicz zera i bieguny transmitancji
fpr = 1000; % czêstotliwoœæ próbkowania w Hz
fi_z = (2*pi/fpr) * fz; % k¹ty zer w paœmie zaporowym
fi_p = (2*pi/fpr) * fp; % k¹ty biegunów w paœmie przepuszczania
z = Rz .* exp(j*fi_z); % zera
p = Rp .* exp(j*fi_p); % bieguny
z = [ z conj(z) ]; % dodanie zer sprzê¿onych
p = [ p conj(p) ]; % dodanie biegunów sprzê¿onych
% Po³o¿enie zer i biegunów
NP = 1000; fi=2*pi*(0:1:NP-1)/NP; s=sin(fi); c=cos(fi);
plot(s,c,'-k',real(z),imag(z),'or',real(p),imag(p),'xb');
title('ZERA i BIEGUNY'); grid; pause
% Oblicz wspó³czynniki transmitancji
wzm = 1;
[b,a] = zp2tf(z',p',wzm)
pause
% Charakterystyka czêstotliwoœciowa
f = 0 : df : fmax; w = 2*pi*f; wn= 2*pi*f/fpr;
H = freqz(b,a,wn);
Habs = abs(H);
plot( f, Habs); grid; title('|H(f)|'); xlabel('f [Hz]'); pause
HdB = 20*log10(Habs);
plot( f, HdB); grid; title('|H(f)| dB'); xlabel('f [Hz]'); pause
Hfa = unwrap(angle(H));
plot( f, Hfa); grid; title('k¹t H(f)'); xlabel('f [Hz]'); ylabel('[rd]'); pause
% Generacja sygna³ów testowych
Nx=1024; n=0:Nx-1; dt=1/fpr; t=dt*n;
f1=10; f2=50;
x1=sin(2*pi*f1*t); x2=sin(2*pi*f2*t);
x=x1+x2;
% Filtracja sygna³u: x(n) ---[b,a]---> y(n)
y=filter(b,a,x);
% Prezentacja wyników
subplot(211); plot(t,x); grid; axis tight; title('Wejscie x(n)');
subplot(212); plot(t,y); grid; axis tight; title('Wyjœcie y(n)');
xlabel('t [s]'); pause
n=Nx/2+1:Nx; X = freqz(x(n),1,wn)/(Nx/4); Y = freqz(y(n),1,wn)/(Nx/4);
X = abs(X); Y = abs(Y);
subplot(211); plot(f,X); grid; title('Wejscie X(f)');
subplot(212); plot(f,Y); grid; title('Wyjœcie Y(f)');
xlabel('f [Hz]'); pause