Ćwiczenie nr 4 - Politechnika Warszawska

Transkrypt

Ćwiczenie nr 4 - Politechnika Warszawska
Laboratorium Cyfrowego Przetwarzania Sygnałów
Preskrypt do v.2016L
Ćwiczenie nr 4
(Filtry – właściwości, projektowanie, przetwarzanie
sygnałów)
na prawach rękopisu
Jacek Misiurewicz
Krzysztof Kulpa
Mateusz Malanowski
Piotr Krysik
Damian Gromek
Piotr Samczyński
Łukasz Maślikowski
Artur Gromek
Marcin K. Bączyk
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, 20 czerwca 2016, 23:34
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 . . . . . . . . . . . . . . . . . . . . . . .
R
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
7
12
16
16
16
17
17
19
22
22
23
Ć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. W opisie filtrów liniowych i stacjonarnych można stosować takie bardzo przydatne pojęcia jak:
– odpowiedź impulsowa h[n]
– transmitancja H(z) albo H(ejθ )
– charakterystyki częstotliwościowe1 :
– amplitudowa A(θ) = |H(ejθ )|
– fazowa ϕ(θ) = arg H(ejθ )
.
– opóźnienie grupowe τ (θ) = − dϕ(θ)
dθ
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ę.
1
Po angielsku najczęsciej używa się terminu “frequency response”, a więc “odpowiedź częstotliwościowa”;
po polsku zamiast amplitudowa charakterystyka częstotliwościowa często pisze się się skrótowo “charakterystyka
amplitudowa” albo “charakterystyka częstotliwościowa”. Oczywiście najbardziej poprawnie jest używać terminu
dokładnego.
3
4
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2016-06-20 23:34
Rys. 4.1: Filtr SOI w strukturze transwersalnej
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.
Gdy przypomnimy sobie, że splot w dziedzinie czasu odpowiada mnożeniu w dziedzinie
widma2 , 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
W ten sposób zobaczyliśmy, że H(z) = K
– czyli H(z) jest to transformata Z
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.
P
2
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
2016-06-20 23:34
5
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 pierwiastkó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 punktu z = ejθ od jakiegoś zera zi jest
niewielka, A(θ) jest pod silnym wpływem tego zera.
4.1.2. Sprzężenie zwrotne czyli filtry NOI (IIR)
Układy filtrów SOI 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 nigdy nie zaniknąć. 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.
(4.6)
(4.7)
(4.8)
(4.9)
6
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2016-06-20 23:34
Rys. 4.3: Charakterystyka amplitudowa filtru z rys. 4.2
Spróbujmy wyznaczyć charakterystykę amplitudową filtru.
z
z−a
ejθ
H(ejθ ) = jθ
e −a
1
|H(ejθ )| = jθ
|e − a|
H(z) =
|H(ejθ )| =
1
1
=√
|cosθ − a + jsinθ|
1 − 2a · cosθ + a2
(4.10)
(4.11)
(4.12)
(4.13)
θ
Funkcję tę wykreślono na rys. 4.3 w funkcji częstotliwości unormowanej (czyli 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óżnymi3 biegunami dk ,
X(z) =
MX
−N
r=0
Br · z −r +
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.
3
Co dzieje się przy biegunach wielokrotnych, zalecamy sprawdzić w podręczniku analizy z pierwszego roku
studiów.
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2016-06-20 23:34
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
Warto zauważyć, że para biegunów sprzężonych (w zapisie biegunowym: re+jθ i re−jθ )
wygeneruje razem u(n) · rn · (e+jθn + e−jθn ) czyli zanikającą 4 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).
– 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). Zadanie projektowania filtru zbyt idealnego może skończyć się
niepowodzeniem albo niepotrzebną komplikacją implementacji.
– Zdecydować czy zależy nam na liniowości fazy (stałości opóźnienia grupowego).
4
Chyba, że r > 1, wtedy będzie narastająca – ale układów z takimi biegunami zazwyczaj unikamy.
8
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2016-06-20 23:34
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 przyczynowy5 .
Innymi słowy, projektując filtr rozwiązujemy zagadnienie aproksymacji wielomianowej.
Niestety, wielomian opisujący funkcję A(θ) jest wielomianem trygonometrycznym (H(z) po
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 żądanej6 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 Czytelnikowi7 .
5
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ń.
6
Słowo “żądana” można też napisać bez polskich liter: “zadana” i, o dziwo, sens się nie zmieni.
7
Wystarczy zacząć od nieprzyczynowego filtru z P = 0 i można zobaczyć po co komu ta symetria.
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2016-06-20 23:34
9
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ą
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ń.
(to wartoby zilustrować serią rysunków)
Metodę pokażemy na przykładzie filtru dolnoprzepustowego z pasmem przepustowym do
θp .

 1 dla
|θ| < θp
– Zaczynamy od idealnego filtru: A0 (θ) =
i o zerowej8 fazie – czyli
 0 dla θ < |θ| ¬ π
p
jθ
H0 (e ) = A0 (θ).
– Odpowiedź impulsową obliczymy z odwrotnej transformaty Fouriera:
θp sin nθp
1 sin nθp
1 Zπ
H0 (ejθ )ejnθ dθ =
= ·
h0 (n) =
2π −π
π n θp
π
n
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), tak, aby lewa skrajna próbka znalazła się w n = 0: h[n] = hP [n − P ]
−→ Ostatecznie otrzymamy
H(z) =
2P
X
h(n) z −n = z −P HP (z)
n=0
8
Jak coś jest stale równe zero, to jest liniową funkcją dowolnej zmiennej – np. zmiennej θ.
10
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2016-06-20 23:34
Rys. 4.5: Efekt Gibbsa (zielony) i jego zmniejszenie z użyciem okna Hamminga (niebieski)
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).
Efekt zafalowań możemy zmniejszyć używając innego okna (rys. 4.5)– 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). Aby zastosować metody optymalizacji, trzeba ten nasz
2016-06-20 23:34
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
11
cel sprowadzić 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
średniokwadratowo przybliżenia 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ę. Ponieważ to prowadzi do nieciekawych własności
funkcji kary9 często przybliżamy tę funkcję sumą błędów podniesionych do wysokiej potęgi
(duże wartości p, a często – p narastające w kolejnych iteracjach):
ε=
X
|A(θk ) − A0 (θk )|2p
(4.18)
k
R
Praktycznie taką metodykę realizują gotowe funkcje MATLABa⃝:
– funkcja firpm pozwala zaprojektować filtr SOI metodą minimaksową10
– 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 stosunku 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ę
ω=
9
θ
2
tg
Ts 2
(4.19)
Dobrze jest np. jeśli funkcja kary jest różniczkowalna – po szersze informacje odsyłamy do literatury na
temat optymalizacji.
10
Literki “pm” pochodzą od nazwisk autorów tego algorytmu - Parksa i McClellana.
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
2016-06-20 23:34
Res
o
θ=0
x
o
x
o
o
ω=0
x
o
x
Rys. 4.6: Przekształcenie biliniowe
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
s=
(4.20)
Ts 1 + z −1
Przekształcenie to przeprowadza oś pulsacji z = ejθ na oś pulsacji s = jω, i wnętrze okręgu
jednostkowego |z| < 1 na lewą półpłaszczyznę Res < 0. Filtr zaprojektowany jako stabilny
w s zostanie więc przekształcony na 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).
R realizujących tę procedurę, warto jedynie
Korzystając z gotowych funkcji MATLABa⃝
znać właściwości typowo stosowanych rodzin wielomianów:
– wielomiany Butterwortha dają aproksymację maksymalnie płaską (bez zafalowań)11
– 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.
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.
11
Ciekawym zbiegiem okoliczności “butter” oznacza “masło”, a masło jest gładkie...
2016-06-20 23:34
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
13
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
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)12 . Trzeba też pamiętać, że tu nie uzywa się okien, bo to zniekształciłoby
przebieg sygnału w dziedzinie czasu.
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)13 .
W strukturze transwersalnej (czyli wprost według definicji splotu (4.1)), pokazanej na początku tego rozdziału, na rys. 4.1, wszystkie sumowania wykonuje się kaskadowo. Nie ma
to raczej znaczenia w implementacji programowej na pojedynczym procesorze, natomiast w
implementacjach sprzętowych (albo masywnie wieloprocesorowych) może być krytycznym
czynnikiem ograniczającym prędkość przetwarzania przy wysokich rzędach filtru – dane muszą przepropagować przez wszystkie sumatory w jednym cyklu zegara. W pewnym sensie
każdy sumator “czeka” na wynik z poprzedniego.
Jeśli zamienimy miejscami bloki (rys. 4.8), to każdy sumator ma na wykonanie sumowania cały cykl – minus czas mnożenia przez współczynnik. Innymi słowy, sumatory pracują
równolegle, nie czekając na siebie wzajemnie.
12
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.
13
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
2016-06-20 23:34
Rys. 4.8: Filtr SOI (FIR) w strukturze odwróconej
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.
Sekcja bikwadratowa
Zastanówmy się, jak można filtr wysokiego rzędu podzielić na sekcje niższych rzędów.
Matematycznie polega to na zapisaniu licznika i mianownika w postaci iloczynowej, co pozwala następnie podzielić zera i bieguny na grupy realizowane w różnych sekcjach.
z
. Pamiętamy,
Najmniejszą nietrywialną sekcją jest sekcja rzędu pierwszego H1 (z) = z−z
z−zb
że zera i bieguny transmitancji mogą być zespolone - w takiej sytuacji mielbyśmy kłopot z
implementacją: mimo, że współczynniki filtru i sygnały są rzeczywiste, trzebaby korzystać z
arytmetyki liczb zespolonych. Dlatego najczęściej wykorzystuje się fakt, że jeśli wielomian
o współczynnikach rzeczywistych ma pierwiastki zespolone, to występują one parami sprzężonymi. To oznacza, że warto takie pary zebrać razem, i wtedy otrzymuje się sekcję rzędu
drugiego:
Hbiq (z) =
1 − 2 Re(zz )z −1 + |zz |2 z −2
z − zz z − zz∗
·
=
z − zb z − zb∗
1 − 2 Re(zb )z −1 + |zb |2 z −2
(4.21)
zwaną sekcją bikwadratową.
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ół-
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2016-06-20 23:34
x[n]
15
y[n]
z −1
2 Re(zb )
−|zb |2
z −1
−2 Re(zz )
|zz |2
Rys. 4.9: Implementacja sekcji bikwadratowej w strukturze odwróconej – oszczędzającej zasoby pamięciowe
Rys. 4.10: Struktura kratowa filtru SOI [By Constant314 (Own work) [CC0], via Wikimedia
Commons]
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łożoności obliczeniowej).
Struktura kratowa (ang. lattice)
Struktura kratowa (rys. 4.10 – wersja SOI) jest bardzo często używana w filtrach adaptacyjnych.
16
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2016-06-20 23:34
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
R
4.2.1. Standardowe funkcje MATLABa⃝
R zaimplementowania została w standardowej funkcji filter.
Filtracja cyfrowa w MATLABie⃝
2016-06-20 23:34
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
17
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.
Najprościej (chociaż to jest wersja “dla opornych”) filtry projektuje się przy pomocy Matlab'owego narzędzia fdatool. Jest to narzędzie z interfejsem graficznym, w którym można
z menu zadać klase filtru i częściowo graficznie podać wymagania częstotliwościowe. Potem
można zobaczyć wyniki projetowania i wyeksportować współczynniki. Jak z każdym narzędziem uniwersalnym, czasem nie rozumiemy co robimy, a czasem zaplączemy się przy wydobywaniu z niego współczynników. W tym ćwiczeniu można się fdatool()'em posłużyć
przy niektórych zadaniach extra.
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 ejπ (e do potęgi j pi),
umieść je w zmiennej B.
Wskazówka: Obliczenie współczynników wielomianu – help poly, ale w tym zadaniu szybciej jest pomyśleć samemu.
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
Zanotuj
18
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2016-06-20 23:34
Zanotuj
Zanotuj wartość składowej stałej w sygnale po filtracji
Odpowiedz
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
Zanotuj
Naszkicuj
Zanotuj
Zanotuj
Przygotuj (oblicz współczynniki) fitru 2 rzędu o biegunach w punktach 0.9e±j0.2π i z podwójnym zerem w ejπ = −1. Dla zgodności z help'em do funkcji filter umieść 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. W Matlabie nie ma stałej e, ale jest funkcja exp().
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;,
plot(filter(...))%zastanów się co tu dalej wpisać
– Oblicz charakterystykę częstotliwościową
[H, w]=freqz(...);,
– Oblicz opóźnienie grupowe (przybliż dφ/dθ skończonymi różnicami14 ):
grd=-diff(angle(H))./diff(w);% uwaga na minus!
– 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ą15 .
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 zerowe16 .
Naszkicuj
wykres opóźnienia grupowego i wzmocnienia filtru (charakterystyki częstotli✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿
woś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 (najlepiej o jednostkowej amplitudzie), 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
14
W Matlabie jest funkcja grpdelay(), która oblicza opóźnienie w bardziej wyrafinowany sposób.
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.
16
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 akurat przy tym konkretnym filtrze jej nie ma.
15
2016-06-20 23:34
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
19
(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π .
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 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 element17 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
=1
plot(n,h,'-*');
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;
17
Jeśli czytasz ten tekst nie wykonując ćwiczenia, domyśl się, co mógł obliczyć Matlab jako sin(0)/0.
Odpowiedz
Zanotuj
20
Naszkicuj
Odpowiedz
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2016-06-20 23:34
h=thetaG/pi*sinc(x/pi);
plot(n,h,'-*');
Powiększ
wykres i naszkicuj go dla −10 < n < 10
✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿✿
Wyświetl transformatę Fouriera odpowiedzi impulsowej (obliczoną przez FFT z dopełnieniem zerami do 216 )
A=(abs(fft(h,2^16)));
plot(A)
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ń pasma przepustowego w okolicy skoku charakterystyki? W tabeli wg. wzoru poniżej zanotuj wartość jako
% skoku (zauważ, że obcięliśmy odpowiedź filtru idealnego do zakresu −1023 : 1023,
czyli zastosowaliśmy okno prostokątne!).
W tabeli będziemy notowali wyniki kolejnych eksperymentów.
Użyte okno
zafalowania w %
I listek w dB
szer. pasma przejściowego
szer. listka gł. okna
prostokątne
Hamminga
Zanotuj
Zanotuj
Zanotuj
Wyświetl ten sam wykres w skali decybelowej
plot(20*log10(A)))
axis([0 2^16 -50 30])
Zanotuj w tabelipoziom I listka zafalowań w pasmie zaporowym wyrażony w dB.
Wykreśl transformatę Fouriera funkcji okna prostokątnego
G=abs(fft(ones(size(h)),2^16));
figure
plot(G);
Zanotuj w tabeli szerokość pasma przejściowego filtru i porównaj z szerokością listka
głównego transformaty okna.
Wskazówka: Najprościej będzie notować wartości w próbkach FFT – jest to sensowne,
jeśli rozmiary FFT są takie same. Bądź jednak gotowy/a na pytanie prowadzącego „a ile to
będzie w skali częstotliwości unormowanej?”.
Popraw charakterystykę filtru używając okna Hamminga
gg=hamming(length(h));
hh=h(:).*gg;
Wykreśl na ekranie charakterystykę poprawionego filtru oraz transformatę Fouriera funkcji
okna Hamminga.
Zanotuj w tabeli szerokość pasma przejściowego filtru i porównaj z szerokością listka
głównego transformaty okna. Spróbuj zapisać jakiś wniosek – co poprawiliśmy i jakim
kosztem.
4.3.2.2. Filtr o zadanej charakterystyce częstotliwościowej
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 usu-
2016-06-20 23:34
−π
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
0
21
π
Rys. 4.11: Sposób zadania charakterystyki filtru
wać 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
R fir2, albo
braku czasu można udać się „na skróty”, tj. użyć gotowej procedury MATLABa⃝
(o zgrozo) fdatool.
Ć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.11).
Sprawdź, z jaką dokładnością można ustawić częstotliwość na generatorze i przyjmij do projektu pasmo zaporowe 1.5 raza szersze18 . 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. Wskazówka: Najlepiej sobie narysować ręcznie taką charakterystykę i na niej zaznaczać.
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).
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)];
18
Nawet jeśli masz bardzo pewną rękę, nie przyjmuj mniej niż ±50 Hz.
Zanotuj
Zanotuj
22
Odpowiedz
Zanotuj
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2016-06-20 23:34
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
4.3.3. Ekstra Projektowanie filtrów SOI metodą optymalizacyjną
Zanotuj
Odpowiedz
Zaprojektuj filtr dolnoprzepustowy SOI metodą optymalizacyjną ( firpm). Przyjmij “łatwe”
parametry filtru – szerokie pasmo przejściowe (około 1/20 częstotliwości próbkowania).
R przeznaczone do projektowania filtrów przyjUwaga: Wszystkie procedury MATLABa⃝
mują 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ń.
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.
R przeznaczone do projektowania filtrów przyjUwaga: Wszystkie procedury MATLABa⃝
mują specyfikację częstotliwości w postaci liczb od 0 do 1, gdzie 1 odpowiada θ = π.
4.3.4.1. Projektowanie filtru
Zaprojektuj filtr NOI dolnoprzepustowy (LP) o parametrach:
– pasmo przepustowe (passband) do 0.2π,
2016-06-20 23:34
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
23
Rys. 4.12: Polączenia do zakłócania mowy sygnałem z generatora
– 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 Fc = (1+numerstanowiska/10)
kHz i mowy z mikrofonu (rys. 4.12 – 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 Usuwanie przydźwięku 50 Hz
W tym zadaniu trzeba polegać na własnej fantazji:
skądś wziąć sygnał z przydźwiękiem sieci (dźwięk ze źle połaczona masą? sygnał EMG
pobrany byle jak?)
Zanotuj
24
Filtry – właściwości, projektowanie, przetwarzanie sygnałów
2016-06-20 23:34
przeanalizować sygnał (FFT, a może spektrogram?), aby zrozumieć, jakie w nim występują
zakłócenia
zaprojektować (a potem użyć) odpowiedni filtr.
4.3.5.3. Ekstra Kwantyzacja współczynników
Aplikacja lab4receiver.vi służy do analizy wpływu kwantyzacji na charakterystyki filtrów
cyfrowych.
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...)

Podobne dokumenty