diff --git a/ntnu/ttt4120/summary/figures/idealFilter.svg b/ntnu/ttt4120/summary/figures/idealFilter.svg new file mode 100644 index 0000000..7793fe2 --- /dev/null +++ b/ntnu/ttt4120/summary/figures/idealFilter.svg @@ -0,0 +1,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ntnu/ttt4120/summary/summary.md b/ntnu/ttt4120/summary/summary.md index 4369622..d7b2f22 100644 --- a/ntnu/ttt4120/summary/summary.md +++ b/ntnu/ttt4120/summary/summary.md @@ -912,4 +912,217 @@ $$ \end{aligned} $$ -> Den spektrale utgangstettheten er produktet av den spektrale inngangstettheten og amplituderesponsen til filteret kvadrert. \ No newline at end of file +> Den spektrale utgangstettheten er produktet av den spektrale inngangstettheten og amplituderesponsen til filteret kvadrert. + +## Estimering + +Mangler, kommer kanskje senere + +## Design av digitale filter + +Alle filtere beskrevet under kan lages med funksjonen `filterDesigner` i MatLab. + +Digitale filtere brukes for å modifisere et signal i frekvensdomenet, eller i tidsdomenet. +Det kan forskyve signalet, forsterke/fjerne gitte frekvenser, fjerne støy og så videre. + +Det finnes flere måter å implimentere et digitalt filter, men de to hovedtypene er FIR (Finite Impulse Response, Endelig impulsrespons) og IIR (Infinite Impulse Response, Uendelig impulsrespons). + +De fem hovetypene av filter er: + +* Lavpass +* Høypass +* Båndpass +* Båndstopp +* Allpass + +Det ideelle lavpassfilteret har skarpe kanter ved knekkfrekvensen. + +![Ideelt filter](figures/idealFilter.svg) + +Impuls responsen til dette filteret er ikke kausal og har uendelig lengde, kompleksitet og forsinkelse. +Det er derfor ikke fysisk mulig å implimentere. + +For å konstruere et filter, pleier man å finne løsningen med minst kompleksitet for gitte spesifikasjoner. + +* Det vil forekomme små rippler i passbåndet +* Amplituden i stoppbåndet er ikke konstant +* Overgansbåndet (ved knekkfrekvensen) må ha en lengde. + +Desto strammere spesifikasjonene er, desto mer komnplekst blir systemet. + +Kausalt filter, med reelle verdier på formen: + +$$ H(z) = \frac{b_0 + b_1 z^{-1} + \cdots + b_M z^{-M}}{1 + a_1 z^{-1} + \cdots + a_N z^{-N}} $$ + + +### FIR mot IIR + +FIR: + +$$ +\begin{gathered} + H(z) = \sum_{k=0}^{M-1} b_k z^{-k} \\ + \Downarrow\\ + y[n] = \sum_{k=0}^{M-1} b_k x[n-k] +\end{gathered} +$$ + +* Alltid stabile +* Kan oppnå lineær fase +* Enkelt å designe med lineære metoder +* Enkel å implimentere + +IIR: + +$$ +\begin{gathered} + H(z) = \frac{\sum_{k=1}^{M-1} b_k z^{-k}}{1 + \sum_{k=0}^{N-1} a_k z^{-k}} \\ + \Downarrow\\ + y[n] = -\sum_{k=0}^{N-1} a_k y[n-k] + \sum_{k=0}^{M-1} b_k x[n-k] +\end{gathered} +$$ + +* Ferre parametere +* Mindre minne +* Lav forsinkelse +* Mindre komplese utregninger +* Typisk designet ved å transformere et analogt filter + + +### FIR + +For at det skal være mulig å lage et lineært fast filter må ha en symmetrisk impulsrespons. + +Det finnes fire alternativer, der lengden av impulsresponsen er $M$: + +* Type I + * M er odd, og $h[n]$ er symmetrisk +* Type II + * M er lik, og $h[n]$ er symmetrisk +* Type III + * M er odd, og $h[n]$ er anti-symmetrisk +* Type IV + * M er lik, og $h[n]$ er anti-symmetrisk + + +For å designe et FIR filter, kan vi starte med ønsket spesifikasjon, $H(\omega)$, for å så finne impulsresponsen ved å invers foriertransformere. +Resultatet har typisk ikke en endelig lengde, så responsen må avgrenses (truncate). + +Ved bruk av et rektangulært vindu, vil vi få den smaleste hovedloben, men mer sidelober (som ikke demper riktig), og den totale dempingen i stoppbåndet er ikke veldig stor. + +#### Equiripple-design + +En ulempe med vindumetoden er at du har lite kontroll over de kritiske frekvensene og dempingen i stoppbåndet. + +Vi ønsker heller å desgine et filter som minimerer det maksimale avviket fra den ønskede spesifikasjonen. + +##### MatLab + +{% highlight matlab %} +E = [0 0.3 0.4 1]; +A = [1 1 0 0]; +M = 15; +B = firpm(M-1, E, A) +w = linspace(0,pi,500); +H = freqz(B,1,w); +figure +subplot(2,1,1), +stem(B); +subplot(2,1,2), +plot(w/pi,abs(H)); +{% endhighlight %} + + +### IIR + +Brukes mest for bevegende og rekursivt snitt. + +Filteret har både poler og nuller. + +$$ H(z) = \frac{\sum_{k=1}^{M-1} b_k z^{-k}}{1 + \sum_{k=0}^{N-1} a_k z^{-k}} $$ + +For en gitt filterorden, vil den kunne ha strammere spesifikasjoner enn FIR. + +Finnes i hovedsak tre måter å designe et IIR filter på. +Man kan se på følgende: + +* Systemfunksjonen +* Impulsresponsen +* Differensiallikninger + + +Videre ser vi på systemfunksjonen. +For å designe et IIR filter, er det ganske annerledes enn et FIR filter. +Prosessen er delt opp i fire deler: + +1. Bestem filterspesifikasjoner $\{\omega_p, \omega_s, \delta_1, \delta_2\}$ +2. Overfør spesifikasjonene til det analoge domenet. $\omega_p \rightarrow \Omega_p$ og $\omega_s\rightarrow \Omega_s$. +3. Design et analogt filter med motstander, kondensatorer, spoler osv, ved hjelp av Laplace transformasjonen $H(s)$. +4. Deretter bruker vi en funksjon $s=f(z)$ eller $H(z) = H(s)\|_{s=f(z)}$. + +#### Bilinæer transformasjon + +$$ s=\frac{2}{T}\frac{z-1}{z+1} \text{ eller } z=\frac{\frac{2}{T}+s}{\frac{2}{T}-s}$$ + +Dersom vi setter $s=\sigma+j\Omega$ og $z=e^j\omega$, får vi en transformasjon for frekvensene også. + +$$ +\begin{gathered} + \omega = 2 \arctan\frac{\Omega T}{2} \\ + \text{eller} \\ + \Omega = \frac{2}{T}\tan\frac{\omega}{2} +\end{gathered} +$$ + +I $s$-planet vil innsiden av sirkelen i $z$-planet være hele venste halvplan, eller 2. og 3. kvadrant. +Utsiden av sirkelen er hele høyre halvplan, eller 1. og 4. kvadrant. +Og enhetssirkelen vil være den imaginære aksen i $s$-planet. + +Tre klasser med IIR filter: + +##### Butterworth +* I MatLab: `butter` +* Ikke noe ripples i $\|H(\omega)\|$, maksimalt flatt +* Glattest overgang fra passbånd til stoppbånd + +$$ +\begin{aligned} + |H(\Omega)|^2 &= \frac{1}{1 + \left(\frac{\Omega}{\Omega_c}\right)^{2N}}\\ + &= \frac{1}{1 + \epsilon^2 \left(\frac{\Omega}{\Omega_p}\right)^{2N}} +\end{aligned} +$$ + +Her ligger de $N$ polene i en sirkel med radius $\Omega_c$ i $s$-planet. Man velger $N$ basert på hvor flatt man ønsker filteret i passbånd og hvor fort den skal minke. Huskeregel er $-20$dB per dekad per andre filterorden $N$. + +##### Chebyshev + +* Finnes to typer, enten så er det ripples i passbånd, eller i stoppbånd +* I MatLab: `cheby1` (ripples i passbånd) og `cheby2` (ripples i stoppbånd) + +Chebychev I: + +$$ + |H(\Omega)|^2 = \frac{1}{1 + \epsilon^2 T_N^2 \left(\frac{\Omega}{\Omega_c}\right)} +$$ + +Chebyshev II: + +$$ + |H(\Omega)|^2 = \frac{1}{1 + \frac{1}{\epsilon^2 T_N^2 \left(\frac{\Omega}{\Omega_c}\right)}} +$$ + +Der $T_N(x)$ er $N$-te ordens chebyshev poler. $\epsilon$ bestemmer hvor mye ripple det er i passbånd. Polene ligger på en ellipse i $s$-planet. + +##### Elliptisk +* I MatLab: `ellip` +* Rippler i både stopp- og passbånd +* Skarpeste overgang fra pass- til stoppbånd + +$$ + |H(\Omega)|^2 = \frac{1}{1 + \epsilon^2 U_N^2\left(\frac{\Omega}{\Omega_c}\right)} +$$ + +Der $U_N$ er den $N$-te ordens Jacobi elliptiske funksjon. +$\epsilon$ bestemmer rippel i passbånd. +Dersom $N$ er et partall, vil det være mindre rippel i passbånd, men mer i stoppbånd. +For $N$ oddetall er det mer rippel i passbånd, men mye flatere i stoppbånd. \ No newline at end of file