Filtry – właściwości, projektowanie, przetwarzanie sygnałów

Transkrypt

Filtry – właściwości, projektowanie, przetwarzanie sygnałów
Laboratorium Cyfrowego Przetwarzania Sygnałów
Preskrypt do v.2014Z
ćwiczenie nr 4 z 10 (Filtry – właściwości,
projektowanie, przetwarzanie sygnałów)
na prawach rękopisu
Lista Autorów
Zakład Teorii Obwodów i Sygnałów
Instytut Systemów Elektronicznych
Wydział Elektroniki i Technik Informacyjnych
Politechnika Warszawska
Uwagi redakcyjne prosimy zgłaszać do: [email protected] tel. 5441
Warszawa, 16 listopada 2014, 3:16
Spis treści
4
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
4.1 Podstawy teoretyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1 Uśrednianie z wagami czyli filtry SOI (FIR) . . . . . . . . . . . . . .
4.1.2 Sprzężenie zwrotne czyli filtry NOI (IIR) . . . . . . . . . . . . . . .
4.1.3 Projektowanie filtrów . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.4 Triki implementacyjne . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.5 Zadania do pracy własnej studenta . . . . . . . . . . . . . . . . . . .
4.2 Dostępny sprzęt i oprogramowanie . . . . . . . . . . . . . . . . . . . . . . .
4.2.1 Standardowe funkcje MATLABa® . . . . . . . . . . . . . . . . . .
4.3 Eksperymenty do wykonania w laboratorium – projektowanie i wykorzystanie
filtrów cyfrowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.1 Filtr SOI i NOI, związek zer i biegunów z charakterystyką . . . . . .
4.3.2 Bezpośrednie projektowanie filtrów SOI – metoda obcięcia szeregu
Fouriera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3.3 Ekstra Projektowanie filtrów SOI metodą optymalizacyjną . . . . . .
4.3.4 Projektowanie filtrów NOI z prototypu analogowego . . . . . . . . .
4.3.5 Realizacja filtrów i zastosowania filtrów . . . . . . . . . . . . . . . .
2
3
3
3
5
6
12
14
14
14
15
15
17
19
20
20
Ćwiczenie 4
Filtry – właściwości, projektowanie,
przetwarzanie sygnałów
Opiekun ćwiczenia: PK i ŁM
4.1. Podstawy teoretyczne
Najczęściej spotykane filtry cyfrowe są to układy liniowe i stacjonarne – a więc składają się
z operacji liniowych wykonywanych na przetwarzanym sygnale: opóźnienia, mnożenia przez
stałą, sumowania.
W uzasadnionych przypadkach stosuje się inne filtry – nieliniowe albo niestacjonarne, ale
ich analiza jest znacznie trudniejsza. Dla filtrów liniowych i stacjonarnych można stosować
takie bardzo przydatne pojęcia jak:
– odpowiedź impulsowa h[n]
– transmitancja H(z) albo H(ejθ )
– charakterystyka częstotliwościowa A(θ) = |H(ejθ )| i fazowa.
Należy zauważyć, że fizyczne realizacje filtrów cyfrowych są liniowe tylko w przybliżeniu
– pracują na sygnałach skwantowanych, mnożenie wykonują ze skończoną precyzją, i mają
ograniczony zakres przetwarzanych liczb.
4.1.1. Uśrednianie z wagami czyli filtry SOI (FIR)
Najprostsze w realizacji i w analizie oraz projektowaniu są filtry, w których pewna liczba
przeszłych próbek jest zapamiętywana a następnie sumowana z wagami (rys. 4.1). Zauważ, że
na schematach filtrów z −1 oznacza opóźnienie sygnału o jedną próbkę.
Jak łatwo sobie wyobrazić, patrząc na rysunek, filtr taki realizuje bezpośrednio splot sygnału wejściowego z ciągiem b[k] = {b0 , b1 , b2 , b3 }.
y(n) =
K
X
x(n − k)b(k)
(4.1)
k=0
To oznacza, że ciąg współczynników b[k] jest po prostu odpowiedzią impulsową tego filtru,
i jest to filtr o skończonej odpowiedzi impulsowej – SOI (a po angielsku: Finite Impulse Response – FIR). W tym wypadku długość odpowiedzi wynosi 4.
3
4
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2014-11-16 3:16
Rys. 4.1: Filtr SOI w strukturze transwersalnej
Gdy przypomnimy sobie, że splot w dziedzinie czasu odpowiada mnożeniu w dziedzinie
widma1 , zobaczymy w okamgnieniu, że charakterystyka częstotliwościowa filtru to transformata Fouriera jego odpowiedzi impulsowej – a w przypadku filtru SOI ciągu jego współczynników.
Spróbujmy zapisać równanie (4.1) w dziedzinie przekształcenia Z. Przekształcenie Z jest
liniowe – to znaczy, że sumowanie i skalowanie (sygnałów) w dziedzinie n można przenieść na
takie same operacje (na transformatach tych sygnałów) w dziedzinie z. Natomiast opóżnieniu
w dziedzinie czasu x(n − n0 ) odpowiada mnożenie X(z) przez z −n0 .
Otrzymujemy więc
Y (z) =
K
X
X(z) · z −k b(k)
(4.2)
k=0
Ciągu współczynników bk na razie nie przekształcamy – z punktu widzenia sygnału to są stałe
skalujące! Możemy jednak wyciągnąć X(z) przed sumę (to jest bardzo przydatna własność
przekształcenia Z – możliwość rozdzielenia operatora opóżnienia od transformaty sygnału)
Y (z) = X(z)
K
X
z −k b(k) = X(z) · H(z)
(4.3)
k=0
−k
– czyli H(z) jest to transformata Z
W ten sposób zobaczyliśmy, że H(z) = K
k=0 b(k)z
odpowiedzi impulsowej filtru (a dla filtru SOI – ciągu jego współczynników).
Gdyby więc b[n] = 1, − 3, 3, − 1, to H(z) = 1 − 3z −1 + 3z −2 − z −3 . Jest to wielomian
rzędu 3 (liczy się najwyższa potęga z −1 ), czyli mamy do czynienia z filtrem rzędu 3. Zauważ,
że filtr SOI rzędu 3 ma 3 bloki opóźnienia, ale 4 współczynniki.
Równie szybko uzyskamy charakterystykę częstotliwościową. Podstawiając z = ejθ do
wzoru definiującego przekształcenie Z otrzymuje się przekształcenie Fouriera (inaczej można
to sformułować “obliczając transformatę Z na okręgu jednostkowym z = ejθ ....”).
Zatem aby otrzymać charakterystykę częstotliwościową filtru SOI wystarczy:
– zapisać transformatę Z odpowiedzi impulsowej
– podstawić z = ejθ
– i gotowe – teraz można np. obliczyć i wykreślić moduł A(θ) = |H(ejθ )|
Wielomian H(z) w przypadku filtru SOI określa jednoznacznie charakterystykę filtru. Ponieważ wielomian można opisać (z dokładnościa do stałej skalującej) położeniem jego pier-
P
1
Uwaga, to jest proste dla sygnałów o ograniczonej energii (z widmem ciągłym – i o takich sygnałach tu
mówimy) – jeśli widmo jest dyskretne, splot w dziedzinie czasu musi być splotem kołowym (okresowym).
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2014-11-16 3:16
5
wiastków,
H(z) = C · (z − z1 )(z − z2 )(z − z3 ) . . .
(4.4)
warto się zastanowić, o czym mówią nam pierwiastki H(z). Otóż położenia pierwiastków (zer
transmitancji) w pobliżu okręgu jednostkowego (lub na nim) wyznaczają częstotliwości, dla
których filtr ma znaczne tłumienie. Aby to zrozumieć, zapiszmy w podobnej postaci A(θ)
A(θ) = |H(z)|z=ejθ = |C| · |ejθ − z1 | · |ejθ − z2 | · |ejθ − z3 | · . . .
(4.5)
Widać, że zawsze, gdy odległość kartezjańska ejθ od jakiegoś zera jest niewielka, A(θ) jest
pod silnym wpływem tego zera.
4.1.2. Sprzężenie zwrotne czyli filtry NOI (IIR)
Układy filtrów NOI zawierały operację opóźnienia tylko dla sygnału wejściowego. Jeśli do sumy wprowadzimy także opóźniony sygnał z wyjścia, otrzymamy układ ze sprzężeniem zwrotnym. W takim układzie raz wprowadzone pobudzenie może migdy nie zniknąć. Dlatego tę
klasę filtrów nazywamy filtrami NOI (o nieskończonej odpowiedzi impulsowej; po angielsku
Infinite Impulse Response – IIR).
x(n)
✗✔
y(n)
+
✖✕
✟
✟✟a
❍❍
❍
delay
Rys. 4.2: Bardzo prosty filtr NOI
Przeanalizujmy co dzieje się w układzie jak na rys. 4.2.
y(n) = x(n) + ay(n − 1)
Y (z) = X(z) + aY (z)z −1
1
Y (z) = X(z)
1 − az −1
Y (z)
1
z
H(z) =
=
=
−1
X(z)
1 − az
z−a
a więc h(n) = an u(n) jeśli szukamy rozwiązania przyczynowego.
Spróbujmy wyznaczyć charakterystykę amplitudową filtru.
z
H(z) =
z−a
ejθ
H(ejθ ) = jθ
e −a
1
|H(ejθ )| = jθ
|e − a|
1
1
|H(ejθ )| =
=√
|cosθ − a + jsinθ|
1 − 2a · cosθ + a2
(4.6)
(4.7)
(4.8)
(4.9)
(4.10)
(4.11)
(4.12)
(4.13)
6
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2014-11-16 3:16
Rys. 4.3: Charakterystyka częstotliwościowa filtru z rys. 4.2
Jak widać, H(z) jest funkcją wymierną, czyli ilorazem dwóch wielomianów. Wielomian
mianownika ma pierwiastek w punkcie a – jest to biegun funkcji H(z), i ten biegun jest odpowiedzialny za składnik an u(n) w odpowiedzi impulsowej.
Każdą funkcję wymierną można rozłożyć na ułamki proste; w przypadku transmitancji
taki rozkład pozwala łatwo znaleźć jej odwrotną transformatę Z (czyli odpowiedź impulsową
układu).
Jeśli X(z) jest funkcją wymierną z M zerami i N różnymi2 biegunami dk ,
X(z) =
MX
−N
Br · z −r +
r=0
N
X
Ak
−1
,
A
=
(1
−
d
z
)
·
X(z)
k
k
−1
z=dk
k=1 1 − dk z
Szukanie transformaty odwrotnej z tak rozłożonego wielomianu jest proste – każdy biegun dk generuje nam składową wykładniczą u(n)dnk . Łatwo teraz wyjaśnić, dlaczego bieguny
muszą być wewnątrz okręgu jednostkowego – dla |dk | > 1 taka składowa narasta wykładniczo.
Warto zauważyć, że para biegunów sprzężonych (w zapisie biegunowym: re+jθ i re−jθ
wygenerują razem u(n)r(e+jθn + e−jθn czyli zanikającą 3 wykładniczo kosinusoidę.
4.1.3. Projektowanie filtrów
Co to znaczy zaprojektować filtr?
– Zdefiniować wymagania (co właściwie chcemy od filtru)
– Określić, czy filtr będzie NOI czy SOI (z tego wynika inny sposób projektowania, inne
niebezpieczeństwa i inne implementacje).
2
Co dzieje się przy biegunach wielokrotnych, zalecamy sprawdzić w podręczniku analizy z pierwszego roku
studiów.
3
Chyba, że r > 1, wtedy będzie narastająca – ale układów z takimi biegunami zazwyczaj unikamy.
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2014-11-16 3:16
7
dopuszczalne zafalowania w pasmie przepustowym
A0 (ejθ )
aproksymacja wielomianem
minimalne tłumienie w pasmie zaporowym
pasmo
przepustowe
0
pasmo zaporowe π
θ
pasmo przej¶ciowe
Rys. 4.4: Opis tolerancji charakterystyki filtru
– Określić rząd filtru (szukamy najniższego rzędu, który pozwala spełnić wymagania – ale
często zdarza się, że mamy też ograniczenie maksymalnego rzędu wynikające z możliwości
realizacyjnych, i wtedy wymagania trzeba nagiąć).
– Znaleźć współczynniki filtru
– Zdecydować o szczegółach implementacji (nie zawsze można filtr wysokiego rzędu zrealizować wprost ze wzoru; trzeba zabezpieczyć się przed kumulacją błędów numerycznych,
przed przekroczeniem zakresu dynamiki itd.)
Jak opisać wymagania na charakterystykę filtru?
– Zdecydować, dla jakich częstotliwości filtr ma przepuszczać sygnał (pasmo przepustowe
– passband), dla jakich ma tłumić (pasmo zaporowe – stopband), a dla jakich jest nam
obojętne co będzie (pasmo przejściowe – transition band).
– Opisać dopuszczalne tolerancje: zafalowania (ang. ripple), minimalne tłumienie (ang. attenuation) – patrz rys. 4.4.
– Nie przesadzać z precyzowaniem wymagań – dać metodom projektowania trochę swobody
(np. pasmo przejściowe).
– Zdecydować czy zależy nam na liniowości fazy (stałości opóźnienia grupowego)
Aproksymacja charakterystyki
Chcemy znaleźć “najlepszą” funkcję wymierną
b0 + b1 z −1 + . . . + bM z −M
(NOI)
1 + a1 z −1 + . . . + aN z −N
albo
b0 + b1 z −1 + . . . + bM z −M (SOI)
która dobrze wypełni nasze wymagania. Nie należy zapominać, że chcemy zaprojektować filtr
stabilny i przyczynowy4 .
Innymi słowy, projektując filtr rozwiązujemy zagadnienie aproksymacji wielomianowej.
Niestety, wielomian opisujący funkcję A(θ) jest wielomianem trygonometrycznym (H(z) po
4
Przyczynowość jest ważna, jeśli filtr ma pracować w czasie rzeczywistym. Jeżeli filtrujemy zarejestrowany
sygnał, możemy użyć filtru nieprzyczynowego – bieg czasu w sygnale nie jest związany z czasem fizycznym
wykonania obliczeń.
8
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2014-11-16 3:16
podstawieniu z = ejθ ). Takie zagadnienie (w przeciwieństwie do zwykłej aproksymacji wielomianowej) nie jest łatwe do rozwiązania. Dlatego chętnie stosuje się tu metody optymalizacyjne, polegające – w dużym uproszczeniu – na heurystycznym poszukiwaniu współczynników
dających najlepsze przybliżenie żądanej5 charakterystyki. W niniejszym ćwiczeniu spróbujemy jednak pokazać kilka metod algorytmicznych, tj. takich, w których po wykonaniu znanej
liczby kroków na pewno osiągniemy sukces.
Opóźnienie grupowe
Opóźnienie grupowe jest to parametr mówiący o tym, jak opóźniana jest obwiednia impulsu o danej częstotliwości. W wielu zastosowaniach ważne jest, aby różne składowe przechodziły przez układ z tym samym opóźnieniem – inaczej następuje dyspersja sygnału, która
jest zjawiskiem niepożądanym:
– dyspersja w torze telekomunikacyjnym może powodować interferencję międzysymbolową
i inne błędy demodulacji transmisji cyfrowej;
– dyspersja w torze audio powoduje spadek jakości odsłuchu.
Opóźnienie grupowe matematycznie definiuje się jako zanegowaną pochodną charakterystyki fazowej względem częstotliwości:
τ (θ) = −dϕ(θ)/dθ
(4.14)
Można udowodnić, że filtr, którego odpowiedź impulsowa jest symetryczna względem
pewnego punktu P : 2P ∈ Z
h(P + n) = h(P − n)
(4.15)
lub antysymetryczna
h(P + n) = −h(P − n)
(4.16)
będzie miał stałe opóźnienie grupowe (i wyniesie ono P – czyli może być całkowite lub połówkowe).
Prosty dowód pozostawiamy Czytelnikowi6 .
Decyzja: SOI czy NOI?
+
+
+
+
+
+
+
Skrótowo podamy tu wady (-) i zalety (+) obu typów filtrów
Filtry SOI (FIR):
łatwo zaprojektować metodą algorytmiczną
zawsze są stabilne
łatwo w nich zapanować nad zakresem dynamicznym sygnału
typowe metody ich projektowania gwarantują stałe opóźnienie grupowe
pozwalają stosunkowo łatwo zrealizować charakterystykę pasmowozaporową
wymagają wysokich rzędów do osiągnięcia wąskich pasm przejściowych
Filtry NOI (IIR):
pozwalają osiągnąć wymaganą charakterystykę znacznie mniejszym kosztem (obliczeń i
pamięci)
stosunkowo łatwo w nich implementować charakterystykę pasmowoprzepustową
5
6
Słowo “żądana” można też napisać bez polskich liter: “zadana” i, o dziwo, sens się nie zmieni.
Wystarczy zacząć od nieprzyczynowego filtru z P = 0 i można zobaczyć po co komu ta symetria.
2014-11-16 3:16
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
9
- niosą ze sobą ryzyko niestabilności
- są wrażliwe na efekty kwantowania współczynników
- wymagają dodatkowych zabiegów w celu ograniczenia ryzyka przekroczenia zakresu liczbowego
- są trudne w projektowaniu
- nie mogą zapewnić stałego opóźnienia grupowego
SOI: metoda obcięcia odpowiedzi impulsowej (szeregu Fouriera)
Metoda obcięcia odpowiedzi impulsowej jest prosta, po przeprowadzeniu projektowania
zgodnie z podanym “przepisem” uzyskujemy dobry wynik w określonej, deterministycznej
ilości obliczeń.
Metodę pokażemy na przykładzie filtru dolnoprzepustowego z pasmem przepustowym do
θp .
– Zaczynamy od idealnego filtru: A0 (θ) =


1 dla
|θ| < θp
i o zerowej fazie.
0 dla θp < |θ| ¬ π
– Odpowiedź impulsową obliczymy z odwrotnej transformaty Fouriera:

h0 (n) =
θp sin nθp
1 Zπ
H0 (ejθ ) ejnθ dθ =
2π −π
π n θp
i otrzymujemy idealny, ale nieprzyczynowy filtr o nieskończonej odpowiedzi....
– Przycinamy więc odpowiedź, aby była skończona: hP [n] = h0 [n] g[n]
(funkcja g[n] = 0 dla |n| > P – czyli okno, np. prostokątne)
– Aby filtr był przyczynowy wystarczy przesunąć odpowiedź impulsową (opóźnić sygnał o P
próbek): h[n] = hP [n − P ]
−→ Ostatecznie otrzymamy
H(z) =
2P
X
h(n) z −n = z −P HP (z)
n=0
Jest to filtr o liniowej charakterystyce fazowej – a więc o stałym opóźnieniu grupowym
równym P (z poprzedniego rozdziału pamiętamy że to jest ważne w wielu zastosowaniach np.
telekomunikacyjnych – filtrowane impulsy nie ulegną dyspersji).
Jak ma się taki “obcięty” filtr do filtru idealnego?
Aby odpowiedzieć na to pytanie, znów uciekniemy się do mnożenia w dziedzinie czasu i
równoważnego splatania w dziedzinie widma. Otóż, obcinając odpowiedź impulsową pomnożyliśmy ją przez okno prostokątne g[n] o długości L = 2P + 1. To znaczy, że w dziedzinie
Lθ/2
.
widma spletliśmy idealną charakterystykę z funkcją G(θ) = sin
sin θ/2
Taki splot:
– rozmył nam ostre przejście z pasma przepustowego do zaporowego – uzyskało ono teraz
praktycznie szerokość równą szerokości listka głównego G(θ)
– przeniósł nieco energii z pasma przepustowego do zaporowego, splatając z listkami bocznymi G(θ) – skutkiem są zafalowania w pasmie przepustowym i niepełne tłumienie w pasmie
zaporowym (w obu przypadkach zobaczymy tu kształt listków bocznych – jest to znany z
syntezy sygnału prostokątnego efekt Gibbsa).
10
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2014-11-16 3:16
Rys. 4.5: Efekt Gibbsa (zielony) i jego zmniejszenie z użyciem okna Hamminga (niebieski)
Efekt zafalowań możemy zmniejszyć używając innego okna – ale kosztem będzie szersze
pasmo przejściowe (bo “lepsze” okna mają szerszy listek główny G(θ)).
Warto podkreślić, że obcięcie oknem prostokątnym prowadzi do optymalnej aproksymacji
w sensie średniokwadratowym (która jednak nie jest optymalna w sensie zdrowego rozsądku).
SOI i NOI – metody optymalizacyjne
Metody optymalizacyjne projektowania filtrów zazwyczaj pozwalają spełnić wymagania
przy niższym rzędzie filtru, niż metody “deterministyczne”. Za to obarczone są ryzykiem długich obliczeń w czasie projektowania i ewentualnego nieuzyskania dobrego rozwiązania.
Metody optymalizacyjne rozwiązywania wszelkich zagadnień polegają na sformułowaniu funkcji celu i znalezieniu jej maksimum – lub odwrotnie, sformułowaniu funkcji kary i
szukanie minimum. Nie jest celem tego przedmiotu wykład metod, jakimi się to osiąga; ograniczymy się do pokazania, jak taką funkcję kary można sformułować.
Otóż celem przy projektowaniu filtru jest uzyskanie charakterystyki A(θ) mozliwie bliskiej charakterystyce idealnej A0 (θ) – oznacza to, że chcielibyśmy minimalizować odchyłkę
|A(θ) − A0 (θ)| na całym interesującym nas przedziale wartości θ (możemy np. wykluczyć z
minimalizacji pasmo przejściowe). Trzeba więc sprowadzić nasz cel do minimalizacji pewnej
wartości skalarnej ε, charakteryzującej odchyłkę na całym przedziale.
Ponieważ do minimalizacji zatrudnimy komputer, odchyłkę będziemy obliczać w skończonej liczbie punktów z tego przedziału (przy czym niektóre metody zmieniają rozkład tych
punktów w trakcie iteracji). Popularne podejście zwane średniokwadratowym polega na sumowaniu kwadratów odchyłek:
ε=
X
|A(θk ) − A0 (θk )|2
(4.17)
k
Podejście średniokwadratowe często prowadzi do efektywnych algorytmów minimalizacji.
Warto jednak przypomnieć sobie przykład efektu Gibbsa: zachodzi on właśnie dla najlepszego
średniowadratowo przyblizenia funkcji prostokątnej; mimo, że średniokwadratowy błąd jest
mały, to maksymalny błąd pozostaje duży.
Dlatego w projektowaniu filtrów często stosuje się podejście zwane minimaksowym – minimalizuje się w nim maksymalną odchyłkę. Polega to na zdefiniowaniu funkcji kary jako
sumy błędów podniesionych do wysokiej potęgi (duże wartości p, a często – p narastające w
2014-11-16 3:16
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
11
kolejnych iteracjach):
ε=
X
|A(θk ) − A0 (θk )|2p
(4.18)
k
Praktycznie taką metodykę realizują gotowe funkcje MATLABa®:
– funkcja firpm pozwala zaprojektować filtr SOI metodą minimaksową
– funkcja yulewalk aproksymuje średniokwadratowo wymaganą charakterystykę dla filtru
NOI.
NOI – projektowanie za pomocą prototypu analogowego
Poniższe metody projektowania pozwalają uzyskać stosunkowo dobre wyniki przy deterministycznym nakładzie obliczeń.
We wstępnych rozważaniach zauważyliśmy, że potrzebujemy niełatwej aproksymacji zadanej funkcji wielomianami trygonometrycznymi. Dla filtrów analogowych opracowano wiele metod łatwej aproksymacji zwykłymi wielomianami. Tu spróbujemy ten olbrzymi zasób
wiedzy wykorzystać, projektując filtr analogowy a następnie przenosząc projekt do dziedziny
filtrów cyfrowych.
Zasadniczymi różnicami między pojęciem częstotliwości dla sygnałów z czasem dyskretnym w sotsunku do sygnałów z czasem ciągłym są:
– unormowanie częstotliwości do częstotliwości próbkowania,
– okresowość osi częstotliwości
To właśnie okresowość częstotliwości jest przyczyną, dla której charakterystyki częstotliwościowe są opisane wielomianami trygonometrycznymi. Aby uniknąć wynikających z tego kłopotów, potrzebujemy przekształcić jeden okres osi pulsacji θ (od −π do π) na całą oś pulsacji
ω (od −∞ do +∞). Zastosujemy do tego funkcję
ω=
θ
2
tg
Ts 2
(4.19)
Należy pamiętać, że jest to funkcja nieliniowa.
Z takim przekształceniem związane jest tzw. przekształcenie biliniowe przeprowadzające
całą dziedzinę z na dziedzinę s
2 1 − z −1
(4.20)
s=
Ts 1 + z −1
Przekształcenie to przeprowadza oś pulsacji z = ejθ na oś pulsacji s = jω, i wnętrze okręgu
jednostkowego |z| < 0 na lewą półpłaszczyznę Res < 0. Filtr zaprojektowany jako stabilny
w s zostanie więc przekształcony an filtr stabilny w z (patrz rys. 4.6).
Procedura projektowania tą metodą polega więc na:
– przeliczeniu wymaganych unormowanych częstotliwości granicznych w dziedzinie dyskretnej na dziedzinę czasu ciągłego (wzór (4.19) – po angielsku nazywa się tę operację terminem prewarp),
– zastosowaniu gotowych metod aproksymacji znanymi wielomianami i obliczeniu transmitancji prototypu Ha (s)
– podstawieniu zamiast s wyrażenia biliniowego (4.20).
Korzystając z gotowych funkcji MATLABa® realizujących tę procedurę, warto jedynie
znać właściwości typowo stosowanych rodzin wielomianów:
12
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
Rez
o
x
o
θ = +π
x
Ims = jω
x
o
x
x
Imz
x
x
θ = −π
x
2014-11-16 3:16
Res
o
θ=0
x
o
x
o
o
ω=0
x
o
x
Rys. 4.6: Przekształcenie biliniowe
Rys. 4.7: Poglądowe charakterystyki amplitudowe dolnoprzepustowych filtrów zaprojektowanych z wykorzystaniem aproksymacji a) Butterwortha, b),c) Czebyszewa typ I i II, d) Cauera
– wielomiany Butterwortha dają aproksymację maksymalnie płaską (bez zafalowań)7
– wielomiany Czebyszewa dają zafalowania w jednej części (typ I – w pasmie przepustowym,
II – w zaporowym), a płaską charakterystykę w drugiej,
– wielomiany Cauera (eliptyczne) dają zafalowania w obu pasmach.
Poglądowo aproksymacje te (dla dziedziny ciągłej) przedstawiono na rys. 4.7.
4.1.4. Triki implementacyjne
Problemy implementacyjne zostaną tu tylko zasygnalizowane skrótowo.
7
Ciekawym zbiegiem okoliczności “butter” oznacza “masło”, a masło jest gładkie...
2014-11-16 3:16
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
13
Oszczędne implementacje filtrów SOI
Spełnienie wymagań przez filtry SOI często wymaga użycia wysokich rzędów filtru. Jest
jednak kilka sposobów na zmniejszenie złożoności obliczeniowej filtru SOI.
Po pierwsze, w filtrze o liniowej charakterystyce fazowej można wykorzystać symetrię
odpowiedzi impulsowej – najpierw zsumować dwie próbki sygnału, a potem raz je pomnożyć
przez odpowiedni współczynnik, i w ten sposób oszczędzić połowę mnożeń.
Po drugie, jeśli odpowiedź impulsowa fitru jest długa, warto zastąpić splot w dziedzinie
czasu mnożeniem w dziedzinie widma – FFT i IFFT są algorytmami bardzo efektywnymi.
Trzeba tylko pamiętać, że w ten sposób realizujemy splot kołowy – aby był on równoważny
liniowemu, trzeba dopełnić sygnały zerami (a potem odpowiednio sklejać wyniki filtrowania
kolejnych bloków)8 .
Po trzecie, w niektórych sytuacjach (filtr dolnoprzepustowy, uśredniający bardzo wiele
próbek) można wykorzystać kaskadę filtrów grzebieniowych, w których nie potrzeba mnożenia (współczynniki są równe 0 lub 1)9 .
Problem dynamiki
Po zaprojektowaniu filtru należy rozważyć, jak duże liczby mogą się pojawić wewnątrz
układu filtru (np. po pomnożeniu sygnału przez duży współczynnik, albo po zakumulowaniu
próbek w pętli sprzężenia zwrotnego w filtrze NOI) – przekroczenie zakresu reprezentacji
liczbowej grozi nieprzyjemnymi efektami, które bardzo trudno zanalizować.
Ryzyko takich efektów można zmniejszyć, dzieląc filtr na sekcje niższego rzędu i odpowiednio ustawiając kolejność sekcji oraz ich wzmocnienia.
Problem stabilności
Filtr NOI może być niestabilny z kilku powodów.
– Procedura projektowania (np. optymalizacyjna) może dać w wyniku biegun poza okręgiem
jednostkowym – wtedy można zareagować, przenosząc ten biegun do wewnątrz p := 1/p,
co nie zmienia charakterystyki amplitudowej.
– Kwantowanie wartości współczynników może “wyprowadzić” biegun, który leżał blisko
okręgu jednostkowego poza tę granicę. Radą na to jest dzielenie filtru na sekcje niskiego
rzędu (najczęściej rzędu 2 czyli bikwadratowe) – wtedy zmniejsza się skala wartości współczynników. Inną metodą jest zastosowanie struktury kratowej filtru, w której wrażliwość na
błędy współczynników jest mniejsza (za cenę większej złozoności obliczeniowej).
8
Więcej informacji można szukać pod hasłem “overlap-add” i “overlap-save” – to są nazwy dwóch metod
sklejania bloków danych filtrowanych w taki sposób.
9
Ten temat jest tylko zasygnalizowany – można poszukać w literaturze lub na wykładzie z przedmiotu TRA.
14
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2014-11-16 3:16
4.1.5. Zadania do pracy własnej studenta
Podobne zadania mogą znaleźć się na wejściówce. Nie dotyczy to zadań oznaczonych tu jako
”trudne”.
1) Idealny filtr LP.
Oblicz odpowiedź impulsową idealnego filtru dolnoprzepustowego o charakterystyce amplitudowej jak na rysunku. Przyjmij θb = π/4 i charakterystykę fazową równą zeru.
−π
−θb
0
θb
π
Wskazówka: Przecałkowanie funkcji wykładniczej w zadanych granicach nie jest trudne.
2) Obcinając wynik poprzedniego zadania oblicz współczynniki przyczynowego filtru
SOI rzędu 8 (czyli mającego odpowiedź impulsową o długości 9 próbek). Naszkicuj odpowiedź impulsową, zastanów się jakie będzie on miał opóźnienie grupowe.
Wskazówka: Zajrzyj do opisu metody projektowania filtrów “poprzez obcięcie szeregu Fouriera”.
3) Myśląc kategoriami “mnożenie w czasie = splot w częstotliwości” spróbuj naszkicować
charakterystykę uzyskanego filtru przyczynowego i oszacować szerokość pasma przejściowego.
4) Jak zmieniłaby się w/w charakterystyka, gdyby zamiast obcięcia użyć okna (nie-prostokątnego)?
5) Oblicz i naszkicuj charakterystykę amplitudową filtru SOI o współczynnikach:
a) [1, − 1]
b) [1, 1, 1]
c) [1, − 2, 1]
6) Przeanalizuj filtr NOI o jednym biegunie rzeczywistym w punkcie a. (Wybierz a : |a| <
1, bo nie chcemy filtru niestabilnego).
a) Zapisz jego transmitancję w dziedzinie Z
b) Znajdź charakterystykę filtru, spróbuj ją naszkicować (do tego celu wylicz wartości w
charakterystycznych punktach – max, min itd...)
c) Znajdź opdpowiedź impulsową
7) Przeanalizuj filtr NOI o dwóch biegunach sprzężonych w punktach re±jθp . Sam wybierz
parametry r i θp , ale dopilnuj aby filtr był stabilny.
4.2. Dostępny sprzęt i oprogramowanie
4.2.1. Standardowe funkcje MATLABa®
Filtracja cyfrowa w MATLABie® zaimplementowania została w standardowej funkcji filter.
2014-11-16 3:16
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
15
Parametrami polecenia filter(B,A,x) są:
B – wektor współczynników licznika (części SOI),
A – wektor współczynników mianownika (części NOI); jeśli realizujemy filtr SOI, wstawiamy tu 1,
x – sygnał do przefiltrowania (wynik będzie miał taki sam rozmiar jak x –zazwyczaj podajemy tu wektor sygnału, ale x może też być macierzą, i wtedy każda jej kolumna zostanie
przefiltrowana oddzielnie).
Charakterystykę częstotliwościową filtru najsprawniej oblicza się za pomocą funkcji
[h w]=freqz(B,A,N), gdzie B i A to współczynniki licznika i mianownika, natomiast
N – liczba punktów na osi częstotliwości od 0 do π (domyślnie 512).
Jeśli pominiemy parametry wyjściowe, otrzymamy wykres; w przeciwnym przypadku wynikiem jest wektor zespolonych wzmocnień h i wektor pulsacji unromowanych w, z których
można samemu stworzyć wykres charakterystyki amplitudowej i fazowej.
4.3. Eksperymenty do wykonania w laboratorium – projektowanie i wykorzystanie filtrów cyfrowych
4.3.1. Filtr SOI i NOI, związek zer i biegunów z charakterystyką
4.3.1.1. Usuwanie składowej stałej
Wygeneruj sygnał sinusoidalny ze składową stałą. Użyj częstotliwości unormowanej równej
0.1 + numerstanowiska/50
» x=2+sin(f*2*pi*[0:99]);
» plot(x)
» mean(x)%obliczenie wart. sredniej
Zanotuj wyrażenie użyte do generacji sygnału oraz obliczoną wartość średnią (składową
stałą).
Oblicz współczynniki wielomianu o podwójnym zerze w punkcie ej0 , umieść je w zmiennej
B
Wskazówka: help poly
Zanotuj obliczone współczynniki
Przefiltruj sygnał filtrem, którego transmitancja jest znalezionym wielomianem, obejrzyj
wynik
» y=filter(B,1,x);
» plot(0:99,x,0:99,y);
» mean(y)
Zanotuj wartość składowej stałej w sygnale po filtracji
Odpowiedz na pytanie: Jakiego typu (SOI/NOI) filtr użyto w tym eksperymencie? Zapisz
wyrażeniem matematycznym jego transmitancję H(z) i charakterystykę amplitudową A(θ).
4.3.1.2. Prosty rezonator
Przygotuj (oblicz współczynniki) fitru 2 rzędu o biegunach w punktach 0.9e±j0.2π i z zerami jak w poprzednim zadaniu. Dla zgodności z help'em do funkcji filter umieść
Zanotuj
Zanotuj
Zanotuj
Odpowiedz
16
Zanotuj
Naszkicuj
Zanotuj
Zanotuj
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2014-11-16 3:16
współczynniki licznika w zmiennej B, a mianownika – w A.
Wskazówka: Konieczne jest znalezienie współczynników wielomianu, a więc znów
przyda się poly. Zanotuj współczynniki na wszelki wypadek.
Zbadaj przygotowany filtr.
– Utwórz wykres odpowiedzi impulsowej filtru (impuls jednostkowy uzyskasz np. tak:
dlt=zeros(1,64); dlt(1)=1;),
– Oblicz charakterystykę częstotliwościową
» [h, w]=freqz(…);,
– Oblicz opóźnienie grupowego (przybliż dφ/dθ skończonymi różnicami):
» grd=-diff(angle(h))./diff(w);
– Wykreśl na wspólnym wykresie charakterystykę (amplitudową) i opóżnienie grupowe
» plot(w,abs(h),w(2:end),grd);
Jeśli wolisz, zmień oś poziomą wykresu z pulsacji (częstości) na częstotliwość unormowaną10 .
Uwaga: Jeżeli faza angle(h) wychodzi nieciągła z powodu przekroczenia π, możesz
użyć unwrap(angle(h)); nieciągłością dla punktu θ = 0 można się nie przejmować
– wzmocnienie jest tu zerowe11 . Naszkicuj
wykres opóźnienia grupowego i wzmocnienia
✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿
filtru
(charakterystyki częstotliwościowej), Zanotuj maksymalne opóźnienie i jego lokalizację
✿✿✿✿✿
na osi częstotliwości.
Przetestuj filtr w kilku punktach charakterystyki. W każdym punkcie wygeneruj sinusoidę o
odpowiedniej częstotliwości, przefiltruj, i sprawdź czy zmierzone (z wykresu sygnału wejściowego i wyjściowego) wzmocnienie jest zgodne z wykresem uzyskanym z freqz().
Wyniki zanotuj w tabelce wpisując konkretne wartości częstotliwości
(zero) (nieduża) (w max. ch-ki) (duża)
Częstotliwość
Amplituda we
Amplituda wy
Wzmocnienie z charakterystyki
Wzmocnienie z testu
4.3.1.3. Extra Prosty rezonator II
Powtórz poprzednie zadanie dla biegunów w 0.9e±j0.8π .
10
Student powinien już pamiętać, że pulsacja unormowana θ = π odpowiada częstotliwości unormowanej
fn = 0.5 albo częstotliwości fizycznej f = 0.5fs . Ten przypis powstał dlatego, że niektórzy nie pamiętają i
zadają prowadzącym głupie pytania
11
Jeśli masz nieciągłość gdzieś indziej, być może zrobiłeś jakiś błąd – nieciągłość może się pojawić w charakterystyce fazowej filtru, ale przy tym filtrze jej nie ma.
2014-11-16 3:16
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
17
4.3.2. Bezpośrednie projektowanie filtrów SOI – metoda obcięcia szeregu
Fouriera
4.3.2.1. Filtr o odpowiedzi sinc()
Spróbujemy teraz zaprojektować idealny filtr dolnoprzepustowy (o prostokątnej charakterystyce częstotliwościowej i o zerowej fazie). Granicą pasma przepustowego filtru będzie θG =
(2 + nrstanowiska)/20 · π.
extra Wygeneruj przebieg będący odpowiedzią impulsową idealnego filtru LP (dolnoprzepustowego) o żądanej pulsacji granicznej
» n=-1023:1024;% oś czasu
» thetaG=(2+nrs)/20*pi
» x=n*thetaG;
» h=sin(x)./x;
» h(n==0)
W ostatnim poleceniu wykorzystujemy tzw. indeksowanie logiczne; operator n==0 generuje wektor zer i jedynek (na indeksach, na których elementy wektora n /nie spełniają/spełniają/ wyrażenia logicznego), i tym wektorem indeksujemy wektor h – to oznacza
wybór z wektora h elementów, dla których wektor indeksów ma wartość prawdy (czyli 1). Odpowiedz
Odpowiedz na pytanie: Jaką wartość powinna mieć funkcja h(n) dla n = 0?
Przypomnij sobie pojęcia granicy i ciagłości funkcji. Zastąp w obliczonym wektorze podejrzany element12 wartością, odpowiadającą zerowej próbce uciąglonej funkcji sin(x)/x.
» h(n==0)=.....% tu samodzielna decyzja studenta ;-)
» h=h*thetaG/pi;%normalizacja, aby wzmocnienie w pasmie przepustowym było =
» plot(n,h,'-*');
Zanotuj
Zanotuj (analityczne) obliczenia granicy.
Jeśli nie robiłeś zadania extra, oblicz odpowiedź impulsową korzystając z funkcji sinc
(zdefiniowanej jako sinπxπx )
» n=-1023:1024;% oś czasu
» thetaG=(2+nrs)/20*pi
» x=n*thetaG;
» h=thetaG/pi*sinc(x*pi);
» plot(n,h,'-*'); ✿✿✿✿✿✿✿✿✿
Powiększ✿✿✿✿✿✿✿✿
wykres ✿i ✿✿✿✿✿✿✿✿✿✿
naszkicuj ✿✿✿
go ✿✿✿
dla✿✿✿✿✿✿✿✿✿✿✿✿
−10 < n10
Naszkicuj
Wyświetl transformatę Fouriera odpowiedzi impulsowej (obliczoną przez FFT z dopełnieniem zerami do 216 )
» A=(abs(fft(h,2ˆ16)));
» plot(A)
Odpowiedz
Odpowiedz na pytania:
– (z teorii) Jaka jest zależność między obliczoną transformatą a charakterystyką częstotliwościową filtru?
– (z przyjrzenia się rysunkowi) Czy obliczona odpowiedź impulsowa była rzeczywiście
idealna? Wskazówka: Na jakiej dziedzinie jest określona funkcja sinc?
– (wykonaj pomiar kursorem na rysunku) Jaka jest amplituda zafalowań w okolicy skoku
charakterystyki? Zanotuj wartość jako % skoku oraz przeliczoną na dB.
Wyświetl ten sam wykres w skali decybelowej
12
Jeśli czytasz ten tekst nie wykonując ćwiczenia, domyśl się, co mógł obliczyć Matlab jako sin(0)/0.
18
Zanotuj
Zanotuj
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2014-11-16 3:16
» plot(20*log10(A)))
» axis([0 2ˆ16 -50 30])
Wykreśl transformatę Fouriera funkcji okna prostokątnego
» G=abs(fft(ones(size(h)),2ˆ16));
» figure
» plot(G);
Zanotuj szerokość pasma przejściowego filtru i porównaj z szerokością listka głównego
transformaty okna
Popraw charakterystykę filtru używając okna Hamminga
» hh=h(:).*hamming(length(h)); Wykreśl na ekranie charakterystykę poprawionego filtru oraz transformatę Fouriera funkcji okna
Zanotuj szerokość pasma przejściowego filtru i porównaj z szerokością listka głównego
transformaty okna
4.3.2.2. Filtr o zadanej charakterystyce częstotliwościowej
Zanotuj
Zanotuj
Zaprojektuj pasmowozaporowy (bandstop) filtr SOI usuwający z sygnału zakłócenie o częstotliwości Fc = (1 + numerstanowiska/10) kHz. W dalszej częsci ćwiczenia będziesz usuwać z rzeczywistego sygnału takie zakłócenie wygenerowane generatorem laboratoryjnym.
Do projektu załóż, że sygnał będzie próbkowany z częstotliwością Fs = 48 kHz.
» Fs=48e3;
Spróbujemy wykonać ten projekt „ręcznie” – krok po kroku, oglądając wyniki pośrednie.
Droga ta jest długa i żmudna, ale bardzo zalecamy przejście jej samodzielnie, gdyż pokazuje
ona rozmaite niespodziewane efekty o dużej wartości dydaktycznej. Tylko w razie poważnego
braku czasu można udać się „na skróty”, tj. użyć gotowej procedury MATLABa® fir2.
Ćwiczona tu metoda projektowania polega na obliczeniu odpowiedzi impulsowej filtru poprzez odwrotną transformatę Fouriera żądanej charakterystyki. Można to zrobić analitycznie,
ale my posłużymy się komputerem (oraz odwrotną DTF). W tym celu żądaną charakterystykę
filtru zadamy w postaci spróbkowanej (rys. 4.8).
Sprawdź, z jaką dokładnością można ustawić częstotliwość na generatorze i przyjmij do projektu pasmo zaporowe 1.5 raza szersze13 . Zanotuj przyjęte założenia projektowe, wyrażone
w dziedzinie częstotliwości unormowanej.
Załóż, że pasmo przejściowe filtru może mieć szerokość porównywalną z 1/4 pasma zaporowego. Zastanów się, jaki z tego wynika minimalny rząd filtru L. Wskazówka: Wykorzystaj wyniki poprzedniego zadania co do związku szerokości pasma przejściowego z listkiem
głównym transformaty okna. Zastanów się jaka jest szerokość listka głównego transformaty
impulsu prostokątnego o długości L + 1..
Zanotuj obliczony minimalny rząd.
Przyjmij, że charakterystykę filtru spróbkujesz w Lh = 4 · (L + 1) punktach (gdzie L jest
wyznaczonym przed chwilą rzędem filtru, zaokrąglonym do liczby nieparzystej).
Oblicz zakres indeksów punktów, w których charakterystyka ma być wyzerowana.
» Lz1=....;% indeks początkowy
» Lz2=....;%indeks końcowy
Utwórz wektor H zawierający pożądaną charakterystykę filtru dla czestości od 0 do π, wypełniając ją jedynkami (a zerami w pasmie zaporowym).
13
Nawet jeśli masz bardzo pewną rękę, nie przyjmuj mniej niż ±50 Hz.
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2014-11-16 3:16
−π
0
19
π
Rys. 4.8: Sposób zadania charakterystyki filtru
» H=ones(1,Lh/2);
» H(Lz1:Lz2)=0;
Sprawdź, czy projektujesz właściwy filtr – wykreśl H w funkcji częstotliwości fizycznej
» plot([0:(Lh/2-1)]*Fs/Lh,H);
Teraz “dostaw” drugą połówkę charakterystyki (dla ujemnych częstotliwości, co przy cykliczności widma odpowiada częstotliwościom powyzej Fs /2)
» H=[H H(end:-1:1)];
» plot([0:(Lh-1)]*Fs/Lh,H);
Oblicz odwrotną transformatę Fouriera charakterystyki(za pomocą IFFT) – czyli odpowiedź
impulsową filtru (operator real() usunie efekty błędów numerycznych)
» h=real(ifft(H));
» plot(h); Jak widać, odpowiedź impulsowa jest cykliczna (wynika to z właściwości
DFT) – utnij ją do czasu od −L/2 do +L/2 i ustaw w odpowiedniej kolejności
» h=[h((end-L/2):end) h(1:(L/2+1))];
» plot(h);
Prawie gotowe – sprawdź co wyszło!!!
» freqz(h,1);
Odpowiedz na pytanie: Czy wyszedł Ci filtr, jakiego oczekiwałeś(-aś)? Spróbuj określić
przyczyny niepowodzenia…
Zmodyfikuj współczynniki filtru z użyciem okna Hamminga
» hh=h(:).*hamming(length(h)); Zweryfikuj charakterystykę filtru (np. z użyciem freqz). Zanotuj szerokości pasma przejściowego i zaporowego i porównaj z założeniami.
Jeśli filtr teraz spełnia Twoje oczekiwania, warto dla pewności zapisać współczynniki do
pliku.
» save nazwapliku.mat hh
Odpowiedz
Zanotuj
4.3.3. Ekstra Projektowanie filtrów SOI metodą optymalizacyjną
Zaprojektuj filtr dolnoprzepustowy SOI metodą optymalizacyjną ( firpm). Przyjmij “łatwe”
parametry filtru – szerokie pasmo przejściowe (około 1/20 częstotliwości próbkowania).
Uwaga: Wszystkie procedury MATLABa® przeznaczone do projektowania filtrów przyjmują specyfikację częstotliwości w postaci liczb od 0 do 1, gdzie 1 odpowiada θ = π.
Przyjmij pasmo przepustowe do częstotliwości (2 + nrstanowiska) · π/24.
Użyj rzędu 10, zwiększ jeśli potrzeba. Zanotuj wynikowe pasmo przejściowe i rząd filtru.
Utrudnij zadanie optymalizacji – przy tych samych pozostałych parametrach wymuś węższe
pasmo przejściowe.
Zwiększ rząd, aby zniwelować niekorzystne efekty zaostrzenia wymagań.
Zanotuj
20
Odpowiedz
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2014-11-16 3:16
Odpowiedz na pytanie: Określ ilościowo (w przyblizeniu), jakiej zmiany rzędu wymaga dwukrotne zwężenie pasma przejściowego.
4.3.4. Projektowanie filtrów NOI z prototypu analogowego
Prototyp analogowy będzie przekształcony w filtr cyfrowy przy wykorzystaniu transformacji
biliniowej zmiennej s w zmienną z. W Matlabie zazwyczaj projektowanie jest dwuetapowe –
najpierw obliczamy rząd filtru konieczny do spełnienia wymagań (i ew. parametry pomocnicze) funkcją ***ord, a następnie podajemy je do funkcji znajdującej współczynniki.
Uwaga: Wszystkie procedury MATLABa® przeznaczone do projektowania filtrów przyjmują specyfikację częstotliwości w postaci liczb od 0 do 1, gdzie 1 odpowiada θ = π.
4.3.4.1. Projektowanie filtru
Zanotuj
Zaprojektuj filtr NOI dolnoprzepustowy (LP) o parametrach:
– pasmo przepustowe (passband) do 0.2π,
– pasmo zaporowe (stopband) od 0.3π,
– zafalowania w paśmie przepustowym (passband ripple) 0.5 dB,
– tłumienie w paśmie zaporowym (stopband attenuation) 80 dB
(przy niektórych prototypach nie wszystkie parametry są wykorzystywane).
Porównaj wyniki projektowania z użyciem różnych prototypów (w razie braku czasu
wybierz dwa):
1) Butterworth'a (buttord, butter)
2) Czebyszewa typ I i II (cheb1ord, cheby1, cheb2ord, cheby2)
3) Cauera (eliptyczny: ellipord, ellip)
W kazdym przypadku wyświetl uzyskaną charakterystykę i sprawdź, czy spełnia wymagania.
Zanotuj rząd filtru w każdym przypadku i opisz zachowanie w pasmie zaporowym i
przepustowym (zafalowania, sposób zanikania zafalowań z częstotliwością itp.)
4.3.5. Realizacja filtrów i zastosowania filtrów
4.3.5.1. Filtracja sygnału zarejestrowanego
– Zarejestruj sumę sygnału sinusoidalnego o częstotliwości 1 kHz i mowy z mikrofonu (rys. 4.9
– przedwzmacniacz pełni również rolę sumatora sygnałów)
– Wykorzystaj filtr zaprojektowany w zadaniu 4.3.2.2 do usunięcia zakłócenia
– Sprawdź widma sygnału wejściowego i wyjściowego filtru.
– Odsłuchaj wynik.
4.3.5.2. Ekstra Kwantyzacja współczynników
Aplikacja lab4receiver.vi służy do analizy wpływu kwantyzacji na charakterystyki filtrów cyfrowych.
2014-11-16 3:16
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
21
Rys. 4.9: Polączenia do zakłócania mowy sygnałem z generatora
Współczynniki filtru, tak przed jak i po kwantyzacji pokazane są w tabelach w zakładce
„Filter coefficients”. Domyślnie wczytany filtr jest filtrem FIR rzędu 100 o częstotliwości odcięcia 0.075 · fs . Możliwe jest manualne zdefiniowanie współczynników filtru (po kliknięciu
przycisku Reset i wpisaniu własnych wartości) lub wczytanie współczynników filtru z pliku.
Format pliku czytanego przez aplikację to dwukolumnowy plik ASCII, gdzie kolumny oddzielone są tabulatorem a separatorem dziesiętnym jest kropka. Pierwsza kolumna pliku definiuje
kolejne współczynniki licznika, poczynając od potęgi 0, druga mianownika.
Liczba bitów stosowanych po kwantyzacji do reprezentacji współczynników filtru jest wartością z kontrolki „filter coeffs word length after quantization”.
W zakładce „frequency domain” znajdują się wykresy widma amplitudowego sygnału
odebranego przed i po filtracji cyfrowej.
Zakładka „filter plots” zawiera wykresy odpowiedzi impulsowej, zer i biegunów na płaszczyźnie S oraz charakterystyki amplitudowej wczytanego filtru przed i po kwantyzacji. Poszczególne wykresy można wyłączać/włączać checkboxami przy legendzie (jedynie, kiedy
aplikacja nie jest w stanie odbioru!).
Wykorzystując lab4receiver.vi zbadaj wpływ kwantyzacji współczynników na charakterystykę filtru.
– Zaprojektuj w Matlabie filtr wysokiego rzędu i sprawdź jego charakterystykę (freqz).
Propozycje filtrów:
– Filtr SOI z zadania 4.3.2.2
– Filtr NOI z zadania 4.3.4.1
– Zapamiętaj jego współczynniki (fwsp musi być tablicą o 2 kolumnach – wektory A i B w
razie potrzeby musisz usupełnić zerami do równych długości):
» fwsp=[B(:),A(:)];
» save('fileName.txt', '-ascii','-double','-tabs','fwsp');
– Załaduj współczynniki do lab4receiver
– sprawdź jak zmienia się charakterystyka filtru gdy zmieniasz liczbę bitów kwantyzacji
– sprawdź jak filtr filtruje sygnał z generatora (sin, chirp...)