1257 lines
33 KiB
Markdown
1257 lines
33 KiB
Markdown
|
---
|
|||
|
title: "Oppsumering av TTT4120"
|
|||
|
description: "En liten oppsummering og formler i TTT4120, høsten 2020."
|
|||
|
date: 2020-12-06
|
|||
|
math: true
|
|||
|
---
|
|||
|
|
|||
|
## Diskret tid
|
|||
|
|
|||
|
Denne typen signaler baserer seg på at de kan representeres av en sekvens med tall.
|
|||
|
Sekvensen kan representere amplituden til et signal, ved tidspunkt $n$.
|
|||
|
|
|||
|
$$ x[n] = \{\ldots, x[-1], \underline{x[0]}, x[1], \ldots\} $$
|
|||
|
|
|||
|
Der verdien med strek under er målingen ved $n=0$.
|
|||
|
|
|||
|
### Sampling
|
|||
|
|
|||
|
Signalene kan lages ved å *sample* et analogt signal.
|
|||
|
|
|||
|
$$ x[n] \stackrel{_\Delta}{=} x_a(nT)$$
|
|||
|
|
|||
|
Der tiden mellom samples er gitt ved $T = \frac{1}{F_S}$, der samplings-frekvensen (samples per sekund) er $F_S$.
|
|||
|
|
|||
|
$T$ trenger ikke å være tid, men f.eks. posisjonen på en stang.
|
|||
|
|
|||
|
### Diskret-tid operasjoner
|
|||
|
|
|||
|
**Skalering, addering, og multiplikasjon:**
|
|||
|
|
|||
|
$$
|
|||
|
\begin{gather*}
|
|||
|
y[n] = ax[n] \\
|
|||
|
y[n] = x_1[n] + x_2[n] \\
|
|||
|
y[n] = x_1[n]x_2[n]
|
|||
|
\end{gather*}
|
|||
|
$$
|
|||
|
|
|||
|
**Tidsforskyvninger og folding**
|
|||
|
|
|||
|
$$
|
|||
|
\begin{gather*}
|
|||
|
y[n] = x[n-k] \\
|
|||
|
y[n] = -x[n]
|
|||
|
\end{gather*}
|
|||
|
$$
|
|||
|
|
|||
|
**Tidsforskyvninger sammen med folding**
|
|||
|
|
|||
|
$$ y[n] = x[-n+k] $$
|
|||
|
|
|||
|
|
|||
|
### Egenskaper til Diskret tid
|
|||
|
|
|||
|
En sekvens $x[n]$ er **kausal** dersom:
|
|||
|
|
|||
|
$$ x[n] = 0, n<0 $$
|
|||
|
|
|||
|
En sekvens $x[n]$ er **periodisk** med en periode $N$ dersom:
|
|||
|
|
|||
|
$$ x[n+N] = x[n], \forall n $$
|
|||
|
|
|||
|
### Klassifikasjoner til Diskret tid
|
|||
|
|
|||
|
En sekvens $x[n]$ er **bundet** dersom:
|
|||
|
|
|||
|
$$ |x[n]| \leq B_x \leq \infty $$
|
|||
|
|
|||
|
En sekvens $x[n]$ er **Absolutt summerbar** dersom:
|
|||
|
|
|||
|
$$ \sum_{n=-\infty}^\infty |x[n]| < \infty $$
|
|||
|
|
|||
|
En sekvens $x[n]$ er **Kvadratisk-summerbar** dersom energien:
|
|||
|
|
|||
|
$$ E_x = \sum_{n=-\infty}^\infty |x[n]|^2 < \infty $$
|
|||
|
|
|||
|
Dette signalet er et **energisignal**, ikke alle sekvenser er energisignaler. Periodiske er ikke.
|
|||
|
|
|||
|
Den gjennomsnittlige effekten til en sekvens, er derfinert:
|
|||
|
|
|||
|
$$ P_x = \lim_{n\rightarrow\infty} \frac{1}{2N + 1}\sum_{n=-N}^N |x[n]|^2 $$
|
|||
|
|
|||
|
### Viktige typer sekvenser
|
|||
|
|
|||
|
#### Enhetspulsen (Delta-puls)
|
|||
|
|
|||
|
$$ \delta[n-k] =
|
|||
|
\begin{cases}
|
|||
|
1 & n=k \\
|
|||
|
0 & n\neq k
|
|||
|
\end{cases} $$
|
|||
|
|
|||
|
Denne du får standardversjonen ved å sette $k=0$.
|
|||
|
|
|||
|
#### Enhetssteg
|
|||
|
|
|||
|
$$ u[n-k] =
|
|||
|
\begin{cases}
|
|||
|
1 & n\geq k \\
|
|||
|
0 & n < k
|
|||
|
\end{cases}
|
|||
|
$$
|
|||
|
|
|||
|
Denne du får standardversjonen ved å sette $k=0$.
|
|||
|
|
|||
|
|
|||
|
#### Sinus
|
|||
|
|
|||
|
Dersom en sinus-kurve skal være periodisk med en periode $N$, og siden vi vet at en diskret-tid sinus er periodisk med $2\pi$, har vi at:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
\cos(2\pi n) &= \cos(2\pi f (n+N)) \\
|
|||
|
\Rightarrow 2\pi f N &= 2\pi k \\
|
|||
|
\Rightarrow f &= \frac{k}{N}
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
### Kompleks-eksponensial
|
|||
|
|
|||
|
$$ x[n] = Ae^{[2\pi f n + \theta]} $$
|
|||
|
|
|||
|
Denne har også en periodisitet på $2\pi$, og sekvensen er periodisk dersom $f$ er rasjonell.
|
|||
|
|
|||
|
Denne er veldig viktig i diskret-tid Fourier representasjon.
|
|||
|
|
|||
|
### Sampling av en sinus-funksjon
|
|||
|
|
|||
|
Anta vi sampler en analog sinus-funksjon med intervallene $nT = \frac{n}{F_S}$:
|
|||
|
|
|||
|
$$ x_a(t) = A\cos(\Omega t) = A\cos(2\pi F t) $$
|
|||
|
|
|||
|
Da vil den diskrete sekvensen være:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
x[n] &= x_a(nT) \\
|
|||
|
&= A\cos\left[2\pi\frac{F}{F_S}n\right] \\
|
|||
|
&= A\cos\left[2\pi f n\right]
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
Der vi har $f=\frac{F}{F_S}$ eller $\omega = \Omega T$, som er den relative/normaliserte frekvensen (uavhengig av samlingfreksensen).
|
|||
|
|
|||
|
Fra før vet vi at:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
-\frac{1}{2} < &f \leq \frac{1}{2} \\
|
|||
|
-\frac{F_S}{2} < &f \leq \frac{F_S}{2}
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
|
|||
|
### Dekomponering av signaler
|
|||
|
|
|||
|
Vi kan få ut en verdi av en sekvens ved å gange inn enhetspulsen på en gitt $n$.
|
|||
|
|
|||
|
$$ x[k] = x[n]\delta[n-k] $$
|
|||
|
|
|||
|
Der hele signalet kan gis som en sum av hver sekvensverdi:
|
|||
|
|
|||
|
$$ x[n] = \sum_{k=-\infty}^\infty x[k]\delta[n-k] $$
|
|||
|
|
|||
|
### Diskret-tid-systemer
|
|||
|
|
|||
|
Et diskret-tid-system kan klassifiseres som:
|
|||
|
* Lineær eller ikke-lineær
|
|||
|
* Tidsinvariant eller tidsvariant
|
|||
|
* Kausale eller ikkekausale
|
|||
|
|
|||
|
I diskret-tid-systemer gjelder følgende:
|
|||
|
* Superpossisjon (lineæritet)
|
|||
|
* Varierer ikke med tiden (tidsinvariant)
|
|||
|
* Kausalt
|
|||
|
* Resultatet er kun avhengig av tidligere eller nåværende verdier
|
|||
|
* Ikke-kausalt
|
|||
|
* Gunstig å implimentere der vi vet alle verdier i en sekvens, men ikke i sanntidssystemer.
|
|||
|
* Stabile
|
|||
|
* Et system er kun stabilt dersom for hvert bundet inngangssignal er det et bundet utgangssignal.
|
|||
|
|
|||
|
### Impulsrespons
|
|||
|
|
|||
|
Vi sender ut en enhetspuls og ser på hvordan systemet utvikler seg.
|
|||
|
|
|||
|
![Impulsrespons](figures/impulseResponse.png)
|
|||
|
|
|||
|
Vi kan finne impulsresponsen ved å sette $x[n] = \delta[n]$.
|
|||
|
Da får vi at $y[n] = h[n]$.
|
|||
|
|
|||
|
### Konvolusjon
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
y[n] &= \mathcal{H}\{x[n]\} \\
|
|||
|
&= \mathcal{H}\left\{\sum_k x[k]\delta[n-k]\right\}\\
|
|||
|
&= \sum_k x[k]\mathcal{H}\left\{\delta[n-k]\right\} \\
|
|||
|
&= \sum_k x[k] h[n-k] \\
|
|||
|
&= x[n] * h[n]
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
Det er mulig å gjøre konvolusjon både stegvis eller med en matrise.
|
|||
|
|
|||
|
Matrisen er bare å lage en "gangetabell med verdiene i sekvensene, gange sammen og summere anti-diagonalene.
|
|||
|
|
|||
|
![Utregning av Konvolusjon](figures/diagonalConv.png)
|
|||
|
|
|||
|
Dersom lengden av sekvensen $x[n]$ er $N_x$ og lengden av $h[n]$ er $N_h$, vil lengden av konvolusjonen være:
|
|||
|
|
|||
|
$$ N_y = N_x + N_h - 1 $$
|
|||
|
|
|||
|
### Lengde av systemer
|
|||
|
|
|||
|
Det finnes to typer lengde på impulsresponsen. IIR og FIR.
|
|||
|
|
|||
|
#### IIR
|
|||
|
|
|||
|
"Infinite(-duration) impulse response", er et system der lengden av impulsresponsen er uendelig i lengde. Typisk er utgangen avhengig av forrige resultat.
|
|||
|
|
|||
|
#### FIR
|
|||
|
|
|||
|
"Finite(-duration) impulse response", er et system der impulsresponsen har en endelig lengde.
|
|||
|
|
|||
|
|
|||
|
## Diskret-tid Fourieranalyse
|
|||
|
|
|||
|
Analytisk transformasjon (DTFT)
|
|||
|
|
|||
|
$$ X(\omega) = \sum_{n=-\infty}^\infty x[n]e^{-j\omega n} $$
|
|||
|
|
|||
|
Og invers transformasjon (syntetisk transformasjon)
|
|||
|
|
|||
|
$$ x[n] = \frac{1}{2\pi}\int_{-\pi}^\pi X(\omega) e^{j\omega n} d\omega$$
|
|||
|
|
|||
|
Grensene for frekvensdomenet er fra $-\pi$ til $\pi$.
|
|||
|
|
|||
|
Notasjonen er som følger
|
|||
|
|
|||
|
$$ x[n] \stackrel{\mathcal{F}}{\leftrightarrow} X(\omega) $$
|
|||
|
|
|||
|
### Egenskaper
|
|||
|
|
|||
|
#### Symmetri
|
|||
|
|
|||
|
Odde og like funksjoner, likt som imaginære og ikke imaginære (reelle).
|
|||
|
|
|||
|
* Odd: $x[-n] = -x[n]$
|
|||
|
* Lik: $x[-n] = x[n]$
|
|||
|
|
|||
|
Man kan skrive en sekvens på formen:
|
|||
|
|
|||
|
$$ x[n] = \underbrace{x_R[n]}_{\text{reell}} + \underbrace{jx_I[n]}_{\text{imaginær}} $$
|
|||
|
|
|||
|
![DTFT symmetrier](figures/DTFTSymmetry.png)
|
|||
|
|
|||
|
#### Andre egenskaper
|
|||
|
|
|||
|
* Tidsforskyvning
|
|||
|
|
|||
|
$$ x[n-k] \stackrel{\mathcal{F}}{\leftrightarrow}e^{-j\omega n}X(\omega) $$
|
|||
|
|
|||
|
* Tidsreversering
|
|||
|
|
|||
|
$$ x[-n] \stackrel{\mathcal{F}}{\leftrightarrow} X(-\omega) $$
|
|||
|
|
|||
|
* Konvolusjon
|
|||
|
|
|||
|
$$ x_1[n] * x_2[n] \stackrel{\mathcal{F}}{\leftrightarrow} X_1(\omega)X_2(\omega) $$
|
|||
|
|
|||
|
* Frekvensskifting
|
|||
|
|
|||
|
$$ e^{j\omega_0 n}x[n] \stackrel{\mathcal{F}}{\leftrightarrow} X(\omega - \omega_0) $$
|
|||
|
|
|||
|
* Modulasjon
|
|||
|
|
|||
|
$$
|
|||
|
\begin{gather*}
|
|||
|
x[n] \cos(\omega_0 n) \\
|
|||
|
\updownarrow\mathcal{F} \\
|
|||
|
\frac{1}{2}\left[(X(\omega - \omega_0)+ (X(\omega + \omega_0)\right]
|
|||
|
\end{gather*}
|
|||
|
$$
|
|||
|
|
|||
|
* Parseval
|
|||
|
|
|||
|
$$
|
|||
|
\begin{gather*}
|
|||
|
\sum_n |x[n]|^2\\
|
|||
|
\updownarrow\mathcal{F} \\
|
|||
|
\frac{1}{2\pi}\int_{-\pi}^\pi X(\omega)d\omega
|
|||
|
\end{gather*}
|
|||
|
$$
|
|||
|
|
|||
|
* Vindu
|
|||
|
|
|||
|
$$
|
|||
|
\begin{gather*}
|
|||
|
x_1[n]x_2[n]\\
|
|||
|
\updownarrow\mathcal{F} \\
|
|||
|
\frac{1}{2\pi}\int_{-\pi}^\pi X_1(\lambda)X_2(\omega - \lambda)d\omega
|
|||
|
\end{gather*}
|
|||
|
$$
|
|||
|
|
|||
|
## Z-transformasjon
|
|||
|
|
|||
|
Z-transformasjonen av et diskret sekvens er gitt som:
|
|||
|
|
|||
|
$$ X(z) = \mathcal{Z}\{x[n]\} = \sum_{n=-\infty}^\infty x[n]z^{-n} $$
|
|||
|
|
|||
|
Notasjonen er:
|
|||
|
|
|||
|
$$x[n] \stackrel{\mathcal{Z}}{\leftrightarrow} X(z)$$
|
|||
|
|
|||
|
$$x[n] = \mathcal{Z}^{-1}\{X(z)\}$$
|
|||
|
|
|||
|
Transformasjonen transformerer en sekvens til den tilsvarende representasjonen i det komplekse $z$-planet.
|
|||
|
|
|||
|
ROC (Region of convergence) er settet med alle verdier av $z$ der $X(z)$ har en endelig verdi.
|
|||
|
|
|||
|
Transformasjonen bestemmer ikke unikt tids-sekvensen.
|
|||
|
Ved å velge en ROC kan vi lage et ønsket signal/filter.
|
|||
|
|
|||
|
Dersom vi har at ROC er alt utenfor en sirkel, er sekvensen *kausal*.
|
|||
|
|
|||
|
Dersom ROC er innsiden av en sirkel, er sekvensen ***anti**kausal*.
|
|||
|
|
|||
|
### Egenskaper
|
|||
|
|
|||
|
* Lineær
|
|||
|
* ROC av resultatet er minst $\mathcal{R}\_{X_1} \cap \mathcal{R}\_{X_2}$
|
|||
|
* Tidsforskyvning
|
|||
|
* ROC lik som for $X(z)$
|
|||
|
|
|||
|
$$ x[n-k] \stackrel{\mathcal{Z}}{\leftrightarrow}z^{-k}X(z) $$
|
|||
|
|
|||
|
* Skalering
|
|||
|
* Dersom ROC før skalering er $r_1 < \|z\| < r_2$, så er ROC etter lik $\|a\|r_1 < \|z\| < \|a\|r_2$.
|
|||
|
|
|||
|
$$ a^n x[n] \stackrel{\mathcal{Z}}{\leftrightarrow} X(a^{-1} z) $$
|
|||
|
|
|||
|
* Tidsreversering
|
|||
|
* Dersom ROC er $r_1 < \|z\| < r_2 $, så er ROC etter tidsreversering $\frac{1}{r_2} < \|z\| < \frac{1}{r_1}$
|
|||
|
|
|||
|
$$ x[-n] \stackrel{\mathcal{Z}}{\leftrightarrow} X(z^{-1}) $$
|
|||
|
|
|||
|
* Konvolusjon
|
|||
|
* ROC minst snittet av ROC til $X_1$ og $X_2$.
|
|||
|
|
|||
|
$$ x_1[n]*x_2[n]\stackrel{\mathcal{Z}}{\leftrightarrow} X_1(z)X_2(z)$$
|
|||
|
|
|||
|
* Derivering
|
|||
|
* ROC er den samme
|
|||
|
* Initialverditeroremet: $x[0] = \lim_{z\rightarrow \infty}X(z)$, betyr at $x[n]$ er kausalt.
|
|||
|
|
|||
|
$$ nx[n] \stackrel{\mathcal{Z}}{\leftrightarrow} -z\frac{dX(z)}{dz} $$
|
|||
|
|
|||
|
### Rasjonelle z-transformasjoner
|
|||
|
|
|||
|
Rasjonell dersom transformasjonen kan bli representert som forholdet mellom to polynomer i $z^{-1}$ eller $z$.
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
X(z) &= \frac{B(z)}{A(z)} \\
|
|||
|
&= \frac{b_0 + b_1 z^{-1} + \ldots + b_M z^{-M} }{a_0 + a_1 z^{-1} + \ldots + a_N z^{-N}} \\
|
|||
|
&= \frac{b_0}{a_0}\frac{\prod_{k=1}^M \left(1-z_k z^{-1}\right)}{\prod_{k=1}^N \left(1-p_k z^{-1}\right)}
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
|
|||
|
### Systemanalyse
|
|||
|
|
|||
|
![Systemanalyse](figures/linearTimeInvariant.png)
|
|||
|
|
|||
|
Dersom vi har et system som vist over, sender inn en sekvens $x[n]$ eller $X(z)$ og observerer utgangen $y[n]$ eller $Y(z)$, kan vi finne systemfunksjonen.
|
|||
|
|
|||
|
$$h[n] = \frac{y[n]}{x[n]}$$
|
|||
|
|
|||
|
$$ H(z) = \frac{Y(z)}{X(z)} $$
|
|||
|
|
|||
|
Vi kan bruke transformasjonen til å gå mellom dem.
|
|||
|
|
|||
|
Begge er helt ekvivalente.
|
|||
|
|
|||
|
#### Kausalitet og stabilitet
|
|||
|
|
|||
|
For at et system skal være kausalt, må ROC være alt utenfor en sirkel.
|
|||
|
|
|||
|
For at et system skal være BIBO stabilt, må enhetssirkelen $z = e^{-j\omega}$ være med i ROC.
|
|||
|
|
|||
|
Det er mulig å bestemme om et system er kausal og stabilt ved å velge ROC.
|
|||
|
|
|||
|
ROC må heller ikke inneholde noen poler.
|
|||
|
|
|||
|
#### Frekvensrespons
|
|||
|
|
|||
|
For å finne frekvensresponsen til et system, "går" man langs enhetsirkelen, fra $-\pi$ til $\pi$.
|
|||
|
|
|||
|
|
|||
|
##### Utregning
|
|||
|
|
|||
|
Dersom vi har frekvensresponsen til et system:
|
|||
|
|
|||
|
$$ H_1(z) = \frac{1}{1-\frac{1}{2}z^{-1}} $$
|
|||
|
|
|||
|
Matlabløsningen er som under
|
|||
|
|
|||
|
{% highlight matlab %}
|
|||
|
B = 1;
|
|||
|
A = [1 -0.5];
|
|||
|
figure(1)
|
|||
|
zplane(B,A)
|
|||
|
figure(2)
|
|||
|
[H,W]=freqz(B,A);
|
|||
|
plot(W/pi,abs(H));
|
|||
|
{%endhighlight%}
|
|||
|
|
|||
|
|
|||
|
## Filteregenskaper
|
|||
|
|
|||
|
Frekvensresponsen til et system bestemmer hvordan type system det er.
|
|||
|
|
|||
|
* Båndpass
|
|||
|
* Slipper gjennom visse frekvenser
|
|||
|
* Båndstopp
|
|||
|
* Stopper visse frekvenser
|
|||
|
* Lavpass
|
|||
|
* Slipper gjennom lave frekvenser
|
|||
|
* Høypass
|
|||
|
* Slipper gjennom høye frekvenser
|
|||
|
|
|||
|
### Lavpass
|
|||
|
|
|||
|
I et lavpassfilter ønsker vi å putte polene nærme(re) $z=1$, og nuller nærme(re) $z=-1$.
|
|||
|
|
|||
|
Dersom vi ser på et pol-null-plot ser vi at frekvensen er $0$ ved $z=1$, og poler forsterker et signal når vi er "nærme" det (ref tilbake til hvordan finne frevensresponsen til en z-transformasjon).
|
|||
|
|
|||
|
### Høypass
|
|||
|
|
|||
|
I et høypassfilter ønsker vi det motsatte av et lavpassfilter. Vi ønsker å putte så mange nuller nærheten av $z=1$, og så mange poler i nærheten av $z=-1$.
|
|||
|
|
|||
|
Dette er av samme grunn som for et lavpass.
|
|||
|
|
|||
|
### "Notch"-filter
|
|||
|
|
|||
|
Kan isolere seg rundt en veldig spesifik frekvens og fjerne den.
|
|||
|
|
|||
|
For å oppnå dette, så kan man putte noen nuller på enhetssirkelen og noen poler i nærheten av nullene. Da får vi veldig smale bånd.
|
|||
|
|
|||
|
### Kamfilter
|
|||
|
|
|||
|
Litt som et omvendt "notch"-filter. Det er periodiske nuller langs enhetssirkelen. Ender opp med noe som ligner på en kam.
|
|||
|
|
|||
|
### Allpassfilter
|
|||
|
|
|||
|
Dette filteret har en amplituderespons på $1$. Men den kan endre fasen på signalet ved gitte frekvenser.
|
|||
|
|
|||
|
### Lineær-fase-filtere
|
|||
|
|
|||
|
Dette er ønskelig, fordi da får vi kun en tidsforsinkning i utgangssignalet i båndpass.
|
|||
|
For et lavpass er dette for lave frekvenser.
|
|||
|
|
|||
|
$$ \angle H(\omega) = a + b\omega $$
|
|||
|
|
|||
|
Der
|
|||
|
|
|||
|
$$H(\omega) = |H(\omega)| e^{j\angle H(\omega)} $$
|
|||
|
|
|||
|
Da vil nullene komme i resiproke par.
|
|||
|
Altså dersom vi har en null i en vinkel, og avstand fra enhetssirkelen. Da vil den resiproke nullen være i samme vinkel, men samme avstand fra enhetssirkelen, bare på andre siden av sirkelen.
|
|||
|
|
|||
|
![Lineær fase](figures/LinearPhase.svg)
|
|||
|
|
|||
|
## Inverse- og minimumsfase-systemer
|
|||
|
|
|||
|
Dersom et system $\mathcal{T}$ er inverterbart, kan vi finne inngangssignalet dersom vi har utgangsignalet og den inverterbare systemgfunksjonen.
|
|||
|
|
|||
|
$$
|
|||
|
\begin{gather*}
|
|||
|
h[n]*h_I[n] = \delta[n] \\
|
|||
|
\updownarrow\mathcal{Z} \\
|
|||
|
H(z)H_I(z) = 1
|
|||
|
\end{gather*}
|
|||
|
$$
|
|||
|
|
|||
|
|
|||
|
### Minimumsfasefilter
|
|||
|
|
|||
|
Et system kalles minimumfase dersom alle nuller og poler ligger innenfor enhetssirkelen.
|
|||
|
|
|||
|
Et stabilt pol-null-system som er av typen minimum fase har en stabil invers som også er minimum fase.
|
|||
|
|
|||
|
## Korrelasjon
|
|||
|
|
|||
|
Korrelasjon er et mål på likhet.
|
|||
|
|
|||
|
### Krysskorrelasjon
|
|||
|
|
|||
|
Dersom vi har en sekvens $x[n]$ og $y[n]$, vil kryssrelasjonen mellom disse to være:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
r_{xy}[l] &= \sum_{n=-\infty}^\infty x[n]y[n-l] \\
|
|||
|
&= \sum_{n=-\infty}^\infty x[n + l]y[n] \\
|
|||
|
&\phantom{=} \text{der } l = \pm 1, \pm 2, \ldots
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
Denne måler likheten mellom signalene $x[n]$ og $y[n]$.
|
|||
|
|
|||
|
Denne er ikke "kommutativ", altså $r_{xy}[l] \neq r_{yx}[l]$.
|
|||
|
|
|||
|
Men følgende holder:
|
|||
|
|
|||
|
$$r_{yx}[l] = r_{xy}[-l]$$
|
|||
|
|
|||
|
### Autokorrelasjon
|
|||
|
|
|||
|
Måler selvlikhet, $y[n] = x[n]$.
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
r_{xx}[l] &= \sum_{n=-\infty}^\infty x[n]x[n-l] \\
|
|||
|
&= \sum_{n=-\infty}^\infty x[n + l]x[n] \\
|
|||
|
&\phantom{=} \text{der } l = \pm 1, \pm 2, \ldots
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
#### Egenskaper til autokorrelasjon
|
|||
|
|
|||
|
Energi i sekvenser $x[n]$:
|
|||
|
|
|||
|
$$ E_x = \sum_{n=-\infty}^\infty x^2[n] = r_{xx}[0] \geq 0 $$
|
|||
|
|
|||
|
Autokorrelasjonen har maksimum lag $l=0$:
|
|||
|
|
|||
|
$$ |r_{xx}[l]| \leq r_{xx}[0] = E_x $$
|
|||
|
|
|||
|
Autokorrelasjon er en lik funksjon:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
r_{xy}[l] &= r_{yx}[-l] \\
|
|||
|
&\Downarrow \\
|
|||
|
r_{xx}[l] &= r_{xx}[-l]
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
Normaliserte versjoner:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
\varrho_{xx}[l] &= \frac{r_{xx}[l]}{r_{xx}[0]} \\
|
|||
|
&\Downarrow \\
|
|||
|
|\varrho_{xx}[l]| &\leq 1 \\ \\
|
|||
|
\varrho_{xy}[l] &= \frac{r_{xy}[l]}{\sqrt{r_{xx}[0]r_{yy}[0]}}\\
|
|||
|
&\Downarrow \\
|
|||
|
|\varrho_{xy}[l]| &\leq 1
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
### Spektral tetthet (Energi)
|
|||
|
|
|||
|
Størrelsen $S_{xx}(\omega)\geq 0$ er den *spektrale tettheten* til $x[n]$.
|
|||
|
|
|||
|
For å finne denne størrelsen, gjør vi en Fourier-transformasjon av autokorrelasjonen $r_{xx}[n]$:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
r_{xx}[l] &= x[l] * x[-l] \\
|
|||
|
&\updownarrow \mathcal{F} \\
|
|||
|
S_{xx}(\omega)&= X(\omega)X^*(\omega) \\
|
|||
|
&= |X(\omega)|^2
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
Størrelsen $S_{xy}(\omega)$ er den *kryssspektrale tettheten*.
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
r_{xy}[l] &= x[l] * y[-l] \\
|
|||
|
&\updownarrow \mathcal{F} \\
|
|||
|
S_{xy}(\omega)&= X(\omega)Y^*(\omega)
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
### Inngang-utgangs-korrelasjoner
|
|||
|
|
|||
|
![Inngang-utgangs-korrelasjoner](figures/input-output-corr.png)
|
|||
|
|
|||
|
#### I z-transformasjon
|
|||
|
|
|||
|
$$
|
|||
|
\begin{gathered}
|
|||
|
h[l]*h[-l] \\
|
|||
|
\updownarrow\mathcal{Z} \\
|
|||
|
H(z)H(z^{-1}) \\ \\
|
|||
|
|
|||
|
r_{xy} = h[l]*r_{xx}[l] \\
|
|||
|
\updownarrow\mathcal{Z} \\
|
|||
|
H(z)S_{xx}(z) \\ \\
|
|||
|
|
|||
|
r_{yy} = r_{hh}[l]*r_{xx}[l]\\
|
|||
|
\updownarrow\mathcal{Z} \\
|
|||
|
H(z)H(z^{-1})S_{xx}(z)
|
|||
|
\end{gathered}
|
|||
|
$$
|
|||
|
|
|||
|
#### Utgangs og kryssspektral tetthet
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
S_{yy}(\omega) &= |H(\omega)|^2 S_{xx}(\omega) \\
|
|||
|
&= |H(\omega)|^2 |X(\omega)|^2 \\ \\
|
|||
|
|
|||
|
S_{yx}(\omega) &= H(\omega)S_{xx}(\omega)
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
## Invers Z-transformasjon
|
|||
|
|
|||
|
![Z-transformasjonen](figures/z-transform.png)
|
|||
|
|
|||
|
Det enkleste for å gjøre en invers z-transformasjon er å delbrøkoppspalte likningen.
|
|||
|
|
|||
|
Vi kan skrive:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
x[n] &= \sum_{k=1}^N R_k z^{-1} \\
|
|||
|
&= \sum_{k=1}^N R_k p_k^n u[n]
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
Der $p_k$ er den $k$-ende polen, og $R_k$ er resydyren ved $p_k$.
|
|||
|
|
|||
|
Dersom vi har komplekskonjugerte par, $p_k = p_i^\* $ er også residyrene komplekskonjugerte, $R_k = R_i^*$.
|
|||
|
|
|||
|
For å delbrøkoppspalte, må vi gjøre følgende:
|
|||
|
1. Faktorisere nevnerpolynomet $A(z)$ for å finne alle poler $p_1, \ldots, p_N$.
|
|||
|
2. Deretter finne residyrene $R_1, \ldots, R_N$.
|
|||
|
|
|||
|
Det første punktet er ganske greit, det er bare å faktorisere som vanlig, med komplekse tall.
|
|||
|
Det å finne residyrene er vanskeligere.
|
|||
|
|
|||
|
Finnes to metoder for å finne poler og residyrer, løse lineære likninger, som ofte tar veldig lang tid. Selv om dette er en langvarig prosess, fungerer den alltid.
|
|||
|
|
|||
|
Vi kan også bare gange begge sider med $1-p_k z^{-1}$.
|
|||
|
Da ender vi opp med å få $R_k$ alene uten noen faktorer med poler.
|
|||
|
|
|||
|
Videre setter man $z=p_k$. Da vill alt annet enn $R_k$ forsvinne, og vi finner en verdi for $R_k$.
|
|||
|
|
|||
|
En generell formel er som følger:
|
|||
|
|
|||
|
$$ R_k = (1-p_k z^{-1})X(z)\Big|_{z=p_k} $$
|
|||
|
|
|||
|
### Eksempel (regning)
|
|||
|
|
|||
|
Vi skal delbrøkoppspalte:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
X(z) &= \frac{1}{\left(1-\frac{1}{4}z^{-2}\right)} \\
|
|||
|
&= \frac{1}{\left(1-\frac{1}{2}z^{-1}\right)\left(1+\frac{1}{2}z^{-1}\right)}\\
|
|||
|
&= \frac{R_1}{1-\frac{1}{2}z^{-1}} + \frac{R_2}{1+\frac{1}{2}z^{-1}}
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
Det er da veldig lett å løse residyrene ved bruk av formelen:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
R_1 &= \left(R_1 + \frac{R_2\left(1-\frac{1}{2}z^{-1}\right)}{1+\frac{1}{2}z^{-1}}\right)\Bigg|_{z=\frac{1}{2}} \\
|
|||
|
&= \frac{1}{1+\frac{1}{2}z^{-1}}\bigg|_{z=\frac{1}{2}} = \frac{1}{2}\\ \\
|
|||
|
R_2 &= \left(\frac{R_1\left(1+\frac{1}{2}z^{-1}\right)}{1-\frac{1}{2}z^{-1}} + R_2\right)\Bigg|_{z=-\frac{1}{2}} \\
|
|||
|
&= \frac{1}{1-\frac{1}{2}z^{-1}}\bigg|_{z=-\frac{1}{2}} = \frac{1}{2}
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
### Eksempel 1 (MatLab)
|
|||
|
|
|||
|
Skal finne impulsresponsen på:
|
|||
|
|
|||
|
$$ H(z) = \frac{3 - 4z^{-1}}{1 - 3.5z^{-1} + 1.5z^{-2}} $$
|
|||
|
|
|||
|
Dette kan løses i matlab med koden under.
|
|||
|
|
|||
|
{% highlight matlab %}
|
|||
|
B = [3 -4];
|
|||
|
A = [1 -3.5 1.5];
|
|||
|
|
|||
|
[R,P,C] = residuez(B,A);
|
|||
|
|
|||
|
R % Residues
|
|||
|
P % Poles
|
|||
|
C % Direct terms (if improper)
|
|||
|
{% endhighlight %}
|
|||
|
|
|||
|
### Eksempel 2 (MatLab)
|
|||
|
|
|||
|
Dersom vi også ønsker å plotte frekvensresponsen til en annen funksjon:
|
|||
|
|
|||
|
$$H(\omega) = \frac{1 - e^{-j2\omega}}{1 - 0.81e^{-j2\omega}}$$
|
|||
|
|
|||
|
Så kan det løses i matlab med koden under:
|
|||
|
|
|||
|
{% highlight matlab %}
|
|||
|
B = [1 0 -1];
|
|||
|
A = [1 0 -0.81];
|
|||
|
W = [0:1:500]*pi/500;
|
|||
|
H = freqz(B,A,W);
|
|||
|
|
|||
|
magH = abs(H); phaH = angle(H);
|
|||
|
|
|||
|
subplot(2,1,1); plot(W/pi,magH);
|
|||
|
xlabel('Frequency in pi units')
|
|||
|
ylabel('Magnitude')
|
|||
|
|
|||
|
subplot(2,1,2); plot(W/pi,phaH);
|
|||
|
xlabel('Frequency in pi units')
|
|||
|
ylabel('Phase')
|
|||
|
{% endhighlight %}
|
|||
|
|
|||
|
## Diskret Fouriertransformasjon (DFT)
|
|||
|
|
|||
|
Litt som DTFT, men her sampler vi frekvensdomenet. Som videre kan rekonstrueres tilbake til en fullverdig kontinuerlig frekvensrespons.
|
|||
|
|
|||
|
Denne kan effektiviseres med en algoritme kalt FFT (Rask fouriertransformasjon eller "Fast Fourier Transform").
|
|||
|
|
|||
|
### Frekvenssampling
|
|||
|
|
|||
|
Vi sampler frekvensene i intervallet $0\leq\omega<2\pi$, med $N$ likte mye mellom punktene.
|
|||
|
|
|||
|
$$X(\omega_k) = X(\omega)|_{\omega = \omega_k} $$
|
|||
|
|
|||
|
Der:
|
|||
|
|
|||
|
$$ \omega_k = \frac{2\pi k}{N}, k = 0, \ldots, N-1 $$
|
|||
|
|
|||
|
Siden DTFT av signalet er periodisk med $2\pi$, vet vi at DFT også er periodisk med $N$, $e^{-\frac{j2\pi}{N}n} = e^{-\frac{j2\pi}{N}(n+N)}$
|
|||
|
|
|||
|
Dersom vi tar DTFT av en sekvens $x[n]$ evaluert i punktene $\omega_k$, får vi:
|
|||
|
|
|||
|
$$X(\omega_k) = \sum_{n=0}^{N-1} x_p[n]e^{-\frac{j2\pi k}{N}n} $$
|
|||
|
|
|||
|
Der den periodiske utvidelsen av $x[n]$, $x_p[n]$ er definert:
|
|||
|
|
|||
|
$$ x_p[n] = \sum_{l=-\infty}^{\infty} x[n - lN] $$
|
|||
|
|
|||
|
For at vi skal kunne rekonstruere det orginale spektrumet, må vi vite følgende:
|
|||
|
|
|||
|
> Vi trenger DFT med størrelse $N \geq M + L - 1$, for å unikt rekonstuere $y[n]$ i frekvensdomenet.
|
|||
|
> Der $M$ og $L$ er lengden av to sekvenser vi ønsker å konvulere.
|
|||
|
|
|||
|
### Diskret-tid-fourierrekke
|
|||
|
|
|||
|
$$
|
|||
|
\begin{gathered}
|
|||
|
x_p[n] = \sum_{k=0}^{N-1}c_k e^{\frac{j2\pi k}{N}n}, n=0,\ldots,N-1 \\
|
|||
|
c_k = \frac{1}{N}\sum_{n=0}^{N-1}x_p[n] e^{-\frac{j2\pi k}{N}n} = \frac{1}{N}X\left(\frac{2\pi k}{N}\right)
|
|||
|
\end{gathered}
|
|||
|
$$
|
|||
|
|
|||
|
### Diskret Fouriertransformasjon (DFT)
|
|||
|
|
|||
|
$$X(k) = \sum_{n=0}^{N-1}x[n]e^{-\frac{j2\pi k}{N}n}, k=0,\ldots,N-1 $$
|
|||
|
|
|||
|
### Invers Diskret Fouriertransformasjon (IDFT)
|
|||
|
|
|||
|
$$x[n] = \frac{1}{N}\sum_{k=0}^{N-1}X(k)e^{\frac{j2\pi k}{N}n}, n=0,\ldots,N-1 $$
|
|||
|
|
|||
|
### Egenskaper til DFT
|
|||
|
|
|||
|
Ganske like som i DTFT
|
|||
|
|
|||
|
* Periodisk
|
|||
|
* Lineær
|
|||
|
* Tidsreversering
|
|||
|
* Sirkulær tidsforskyvning
|
|||
|
* Sirkulær frekvensforskyvning
|
|||
|
* Konjugerte
|
|||
|
* Sirkulær konvolusjon
|
|||
|
* Multiplikasjon av to sekvenser
|
|||
|
* Parsevals teorem
|
|||
|
|
|||
|
### Filtrering med DFT
|
|||
|
|
|||
|
Dersom vi har to sekvenser, $x[n]$ og $h[n]$ med lengder $L$ og $M$, må de "paddes" med $0$ på slutten, slik at lengden av sekvensene er begge $N$.
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
x[n] &= \{x[0], \ldots, x[L-1], \underbrace{0,\ldots,0}_{N-L}\} \\
|
|||
|
h[n] &= \{h[0], \ldots, h[L-1], \underbrace{0,\ldots,0}_{N-M}\}
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
Da kan utgangssekvensen beregnes med DFT.
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
y[n] &= \text{IDFT}_N\{Y(k)\} \\
|
|||
|
&= \text{IDFT}_N\{\text{DFT}_N\{h[n]\}\cdot\text{DFT}_N\{x[n]\}\}
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
Dersom vi velger $N < M + L - 1$ vil vi kunne få aliasing i tidsdomenet.
|
|||
|
|
|||
|
### Filtrering av lange sekvenser
|
|||
|
|
|||
|
Dersom vi har veldig lange sekvenser kan det bli veldig utregningsmessig komlekst.
|
|||
|
Dette er spesielt merkbart i sanntidsprossesering (ikke noe start eller slutt).
|
|||
|
|
|||
|
Det er mulig å dele opp sekvensene i mindre biter.
|
|||
|
Da brukes den additive egenskapen til konolusjon.
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
y[n] &= h[n] * (x_1[n] + x_2[n]) \\
|
|||
|
&= h[n] * x_1[n] + h[n] * x_2[n] \\
|
|||
|
&= y_1[x] + y_2[n]
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
Dette brukes videre for å filtrere lange sekvenser:
|
|||
|
|
|||
|
1. Del opp sekvensen $x[n]$ opp i *ikke-overlappende blokker* $x_m[n]$, hver med lengde $L$.
|
|||
|
2. Filtrer hver blokk $x_m [n]$ med $h[n]$ for å produsere *utgangsblokken* $y_m[n]$.
|
|||
|
3. Kombiner blokkene sammen til den totale sekvensen.
|
|||
|
|
|||
|
$$y[n] = \sum_m y_m[n]$$
|
|||
|
|
|||
|
Dersom lengden av $h[n]$ er $M$, vil lengden av $y[n]$ være $L+M-1$.
|
|||
|
Dermed vil de siste $M-1$ verdiene i sekvensen $y_{m-1}[n]$ bli lagt til i starten av neste blokk $y_m[n]$.
|
|||
|
|
|||
|
![Lange sekvenser](figures/longSeq.png)
|
|||
|
|
|||
|
|
|||
|
## Stokastiske signaler
|
|||
|
|
|||
|
**Forventet verdi**:
|
|||
|
|
|||
|
$$ m_X = E\{X\} = \int_{-\infty}^\infty xp_X(x)dx $$
|
|||
|
|
|||
|
**Andre ordens moment**:
|
|||
|
|
|||
|
$$ E\{X^2\} = \int_{-\infty}^\infty x^2 p_X(x)dx $$
|
|||
|
|
|||
|
**Varians**:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
\sigma_X^2 &= E\{(X - m_X)^2\} \\
|
|||
|
&= \int_{-\infty}^\infty (x-m_X)^2 p_X(x)dx \\
|
|||
|
&= E\{X^2\} - m_X\}
|
|||
|
\end{aligned}$$
|
|||
|
|
|||
|
### Autokorrelasjon av en stokastisk prosess
|
|||
|
|
|||
|
$$
|
|||
|
\begin{gathered}
|
|||
|
\gamma_{XX}(n,n+l) = E\{X[n]X[n+l]\} \\
|
|||
|
= \int_{-\infty}^\infty x_1x_2 p_{X[n]X[n-l]}(x_1 x_2)dx_1 dx_2
|
|||
|
\end{gathered}
|
|||
|
$$
|
|||
|
|
|||
|
### Krysskorrelasjon av en stokastisk prosess
|
|||
|
|
|||
|
$$ \gamma_{XY}(n,n+l)) = E\{X[n]Y[n+l]\} $$
|
|||
|
|
|||
|
### Hvitt Gausisk Støy
|
|||
|
|
|||
|
Et viktig signal er det hvite gausiske støyet. Det er uavhengig, og har forventet verdi $0$.
|
|||
|
Variansen til signalet er $\sigma_W^2$ og autokorrelasjonen er $\sigma_W^2 \delta[n]$.
|
|||
|
|
|||
|
Alle verdier i sekvensen er ukorrelerte.
|
|||
|
|
|||
|
### Filtrering av stokastiske signaler
|
|||
|
|
|||
|
Dersom vi har en stokastisk prosess $X[n]$, vil en realisjon av denne prosessen være $x[n]$.
|
|||
|
Dersom vi filtrerer signalet med $h[n]$, hva blir da den forventede verdien.
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
m_Y &= E\{Y[n]\} \\
|
|||
|
&= E\left\{\sum_{k=-\infty}^\infty h[n] X[n-k]\right\} \\
|
|||
|
&= \sum_{k=-\infty}^\infty h[n] E\left\{X[n-k]\right\} \\
|
|||
|
&= m_X \sum_{k=-\infty}^\infty h[n] \\
|
|||
|
&= m_X \sum_{k=-\infty}^\infty h[n] e^{j2\pi 0 k} \\
|
|||
|
&= m_X H(0)
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
**Autokorrealsjonen** av det stokastiske utgangssignalet $Y[n]$:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
\gamma_{YY}[l] &= E\{Y[n]Y[n+l]\} \\
|
|||
|
&= h[-l]*h[l]*\gamma_{XX}[l] \\
|
|||
|
&= r_{hh}[l] * \gamma_{XX}[l]
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
**Spektral tetthet for effekten** av det stokastiske signalet $Y[n]$:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
\Gamma_{YY}(f) &= \mathcal{F}\{\gamma_{YY}[l]\} \\
|
|||
|
&= \mathcal{F}\{r_{hh}[l] * \gamma_{XX}[l]\} \\
|
|||
|
&= \mathcal{F}\{r_{hh}[l]\}\mathcal{F}\{\gamma_{XX}[l]\} \\
|
|||
|
&= S_{hh}(f)\Gamma_{XX}(f) \\
|
|||
|
&= |H(f)|^2 \Gamma_{XX}(f)
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
> 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=0}^{M} b_k z^{-k}}{1 + \sum_{k=1}^{N} a_k z^{-k}} \\
|
|||
|
\Downarrow\\
|
|||
|
y[n] = -\sum_{k=1}^{N} a_k y[n-k] + \sum_{k=0}^{M} 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=0}^{M} b_k z^{-k}}{1 + \sum_{k=1}^{N} 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.
|
|||
|
|
|||
|
### Wienerfilter
|
|||
|
|
|||
|
Kommer kanskje.
|
|||
|
|
|||
|
## Filterstrukturer
|
|||
|
|
|||
|
Det finnes fire hovetyper av filterstrukturer:
|
|||
|
|
|||
|
* Dirkete
|
|||
|
* Implementere ulikhetslikningen, finnes to typer.
|
|||
|
* Kaskade
|
|||
|
* Faktorisere $H(z)$ i faktorer av andre orden.
|
|||
|
* Parallell
|
|||
|
* Delbrøkoppspalte $H(z)$ opp i delbrøker av andre orden.
|
|||
|
* Transponert
|
|||
|
|
|||
|
Frem til nå er det kun beskrevet et filter ved hjelp av systemfunksjon, frekvensrespons og impulsresponsen.
|
|||
|
Filterstrukturer beskriver hvordan de kan implementeres.
|
|||
|
|
|||
|
Forskellige strukturer har forskjellige egenskaper og resultater når man legger til at konstander og kalkulasjoner kun har en endelig presisjon.
|
|||
|
Med uendelig presisjon vil alle strukturer gi ut samme resultat.
|
|||
|
|
|||
|
### Blokker
|
|||
|
|
|||
|
Det brukes tre blokker for å beskrive et digitalt filter:
|
|||
|
|
|||
|
Adderer:
|
|||
|
|
|||
|
![Aderer](figures/adder.svg)
|
|||
|
|
|||
|
Konstant muliplisering:
|
|||
|
|
|||
|
![Mulitply](figures/constant.svg)
|
|||
|
|
|||
|
Enhetsforsinking:
|
|||
|
|
|||
|
![Unit delay](figures/delay.svg)
|
|||
|
|
|||
|
### Rasjonale systemfunksjoner
|
|||
|
|
|||
|
$$ H(z) = \frac{\sum_{k=0}^{M} b_k z^{-k}}{1 + \sum_{k=1}^{N} a_k z^{-k}}, a_0 = 1 $$
|
|||
|
|
|||
|
Systemets orden er $N$ dersom $a_N\neq0$
|
|||
|
|
|||
|
Ulikhetslikning assosiert med IIR:
|
|||
|
|
|||
|
$$y[n] = \sum_{k=0}^{M} b_k x[n-k] - \sum_{k=1}^{N} a_k y[n-k]$$
|
|||
|
|
|||
|
Ved å ednre på rekkefølgen på utregningene kan vi oppnå ulike strukturer.
|
|||
|
|
|||
|
### FIR-implemetasjon
|
|||
|
|
|||
|
Dersom du har impulsrespons og systemfunksjon for et FIR filter, kan du sette opp en "Direkte struktur".
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
y[n] &= \sum_{k=0}^{M-1} b_k x[n-k] \\
|
|||
|
&= \sum_{k=0}^{M} h[k] x[n-k]
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
$$ H(z) = \sum_{k=0}^{M-1}b_k z^{-k} $$
|
|||
|
|
|||
|
Dette kan tegnes:
|
|||
|
|
|||
|
![Direkte I](figures/directFormI.svg)
|
|||
|
|
|||
|
Dersom vi har et FIR filter med lineær fase kan vi halvere mengden regneoperasjoner som må gjøres.
|
|||
|
|
|||
|
Dersom vi feks. har en FIR av lengde 7, og type I, og symetrisk kan denne beskrives:
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
h[n] = &h[0](1 + z^{-6}) + h[1](z^{-1} + z^{-5}) \\
|
|||
|
&+ h[2](z^{-2} + z^{-4}) + h[3]z^{-3}
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
Dette kan impemeteres som under dersom $h[n] = \pm h[M-1-n]$:
|
|||
|
|
|||
|
![Direkte II](figures/DirectTypeII.svg)
|
|||
|
|
|||
|
|
|||
|
### IIR-implementasjon
|
|||
|
|
|||
|
#### Direkte struktur
|
|||
|
Dersom du har impulsrespons og systemfunksjon for et IIR filter, kan du sette opp en "Direkte struktur".
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
y[n] = &\sum_{k=0}^{M} b_k x[n-k] \\
|
|||
|
&- \sum_{k=1}^{N} a_k y[n-k]
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
$$
|
|||
|
\begin{aligned}
|
|||
|
H(z) &= \frac{\sum_{k=0}^{M} b_k z^{-k}}{1 + \sum_{k=1}^{N} a_k z^{-k}} \\
|
|||
|
&= \frac{B(z)}{A(z)} = B(z)\frac{1}{A(z)}
|
|||
|
\end{aligned}
|
|||
|
$$
|
|||
|
|
|||
|
Vi kan tegne Type I av en direkte struktur.
|
|||
|
|
|||
|
Det vil være
|
|||
|
* $M+N+1$ multiplikasjoner
|
|||
|
* $M+N+1$ minneplasser brukt
|
|||
|
|
|||
|
![IIR Direct-form I](figures/IIR_Dir1.svg)
|
|||
|
|
|||
|
Vi kan endre på rekkefølgen av brøken og ende opp med en Type II av direkte struktur.
|
|||
|
|
|||
|
Det vil nå være mange ferre minneplasser, mindre forsinking, men like mange regneoperasjoner.
|
|||
|
|
|||
|
![IIR Direct-form II](figures/IIR_Dir2.svg)
|
|||
|
|
|||
|
|
|||
|
#### Kaskade
|
|||
|
|
|||
|
Her deler man opp en kompleks funksjon i andre ordens faktorer, og kobler filterene i serie.
|
|||
|
Hver ledd lages på samme måte som i Type II av direkte struktur.
|
|||
|
|
|||
|
#### Parallell
|
|||
|
|
|||
|
Her delbrøkoppspalter man problemet, for å så lage en parallell struktur der hver bit er en type II direkte struktur.
|
|||
|
|
|||
|
|