You are on page 1of 5

Postopki obdelave signalov

5. vaja – časovno-diskretni sistemi
Časovno-diskretni sistem lahko opišemo kot transformacijo T( ), oziroma računski postopek, ki vhodni niz x[n] pretvori v izhodni niz y[n] :
x[n]

y[n] = Τ(x[n])

Vhodni niz x[n] predstavlja zaporedje vzorcev vhodnega signala, zato lahko rečemo, da 'teče' skozi sistem, pri tem pa na izhodu dobimo zaporedje vzorcev izhodnega signala. Transformacijo T( ) pa predstavimo na naslednje načine: • z diferenčno enačbo, • z blokovno shemo, • s prevajalno funkcijo h[n]. Pri našem delu se bomo omejili le na tako imenovane linearne časovno-neodvisne (LČN) sisteme. Pogoj časovne neodvisnosti zahteva, da se sistem s časom ne spreminja, T( ) je vedno enaka. Zaradi linearnost pa lahko zamenjamo vrstni red operacij, v tem primeru vsote in T( ):
x1 [n]
x2 [n]

y1[n]
y2 [n]

α1

α2

Σ

y[n]

x1 [n]
x2 [n]

α1 α2
Σ

x[n]

y[n]

Z diferenčno enačbo opišemo transformacijo, ki v danem trenutku izračuna vzorec na izhodu kot kombinacijo vzorcev na vhodu in izhodu:
k = −∞

∑ ak ⋅ y[n − k ] =

l = −∞

∑ b ⋅ x[n − l ]
l

Tak zapis je splošen, konkretno diferenčno enačbo določajo izbrani koeficienti a k in bl . Oglejmo si, kaj pomenijo negativne in kaj pozitivne vrednsoti indeksov k in l. V ta namen zapišimo nekaj členov niza y v okolici n-tega vzorca: y = [..., y[n − 2], y[n − 1], y[n], y[n + 1], y[n + 2],...] . Če za izhodišče postavimo n-ti vzorec, potem ta predstavlja sedanjost, levo nastopajo pretekli vzorci desno pa prihodnji vzorci. Enačba, ki uporablja prihodnje vzorce, je nerealna, saj operira z vzorci, ki jih v danem trenutku še ne poznamo. Tak primer imenujemo tudi nekavzalen. Nasprotno primer, ko enačba operira s sedanjimi in preteklimi vzorci imenujemo kavzalen, oziroma posledičen. Ker se bomo omejili na realne (kavzalne) primere diferenčnih enačb, lahko splošno diferenčno enačbo nekoliko predelamo, in sicer odstranimo prihodnje vzorce (negativni indeksi k in l), ter se omejimo na končno število preteklih vzorcev: K L L 1 K a k ⋅ y[n − k ] = ∑ bl ⋅ x[n − l ] y[n ] = ∑ bl ⋅ x[n − l ] − ∑ a k ⋅ y[n − k ] ∑ a 0 k =1 l =0 k =0 l =0 Z blokovno shemo grafično predstavimo diferenčno enačbo. Poznamo dva tipa blokovnih shem, ki se razlikujeta v vrstnem redu operacij. Blokovne sheme operirajo z zakasnilnimi celicami (D), ki imajo vlogo zadrževalnika vrednosti preteklih vzorcev. Več zakasnilnih celic pomeni večjo porabo pomnilnika.

x[n]
D

b0

Σ

Σ

a0

y[n]
D

x[n]

b1
D

a1
D

Σ

a0
D

b0

Σ

y[n]

a1
D

b1 b2

b2

a2

a2

Prevajalno funkcijo h[n] nam da odziv sistema na enotin impulz δ [n] : L ⎧1; n = l 1 K h[n] = ∑ bl ⋅ δ [n − l ] − ∑ a k ⋅ h[n − k ] , δ [n − l ] = ⎨ a 0 k =1 l =0 ⎩0; n ≠ l
Odziv sistema na poljubni vhodni niz pa dobimo s pomočjo konvolucije:

y[n] = x[n] ∗ h[n] =

k = −∞

∑ x[k ]⋅ h[n − k ]

Vrstni red konvuliranja lahko tudi zamenjamo:

y[n] = h[n] ∗ x[n] =

k = −∞

∑ h[k ]⋅ x[n − k ]

Glede na dolžino odziva ločimo dve vrsti sistemov: s končnim odzivom (FIR – finite impulse responseI in z neskončnim odzivom (IIR – infinite impulse response). Za FIR sistem velja, da ko več ni vhodnega signala, po določenem času tudi na izhodu ne dobimo odziva. Tak primer opisuje diferenčna enačba, ki ima vse koeficiente a k enake nič, razen koeficienta a 0 , ki pa ne sme biti enak nič, saj sicer ne dobimo izhodnega signala. Prevajalno funkcijo, ki opisuje FIR sistem, pa predstavlja niz končne dolžine. Za IIR sistem pa velja, da čeprav sistem prenehamo vzbujati (na vhodu več ni signala), je odziv vedno prisoten (na primer 'eho'). Tak primer opisuje diferenčna enačba z neničelnimi koedficienti a k . Prevajalno funkcijo, ki opisuje IIR sistem, predstavlja niz neskončne dolžine. V IIR sistemih se zaradi neskončnega odziva pojavi problem stabilnosti sistema. In sicer je sistem po kriteriju BIBO (bounded input bounded output) stabilen, če je ob omejenem vhodu tudi izhod omejen (npr 'eho'), če pa izhod ni omejen (npr mikrofonija), je sistem nestabilen.

1.) Kot primer FIR sistema vzemo povprečevalnik, ki povpreči tri zaporedne vzorce – vzorec na izhodu naj bo povprečje treh zaporednih vzorcev na vhodu. a) Zapišite diferenčno enačbo, ki opisuje povprečevalnik

b) Narišite blokovno shemo, ki ustreza diferenčni enačbi

c) Izračunajte prevajalno funkcijo sistema (h). Ali je prevajalna funkcija končna, ali neskončna?

d) Matlab-ova funkcija y = filter(b,a,x) izvaja digitalno filtriranje signala x, kot ga definirata niza koeficientov a in b iz diferenčne enačbe. Če na vhod postavimo enotin impulz δ , potem na izhodu dobimo prevajalno funkcijo h. Zapišite niz koeficientov a in b. Pripravite in skicirajte niz enotinega impulza (imp) dolžine 20. Z uporabo funkcije filter(...) izračunajte in skicirajte odziv na enotin impulz. Primerjajte z izračunano vrednostjo v nalogi c). a=[ b=[ n = 0:20; imp = (n==0); stem(n,imp); h = filter(b,a,imp); stem(n,h);
imp[n] 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0

]; ];

h[n]

0

2

4

6

8

10 n

12

14

16

18

20

0

2

4

6

8

10 n

12

14

16

18

20

e) Vhodni signal naj bo stopnica dolžine 3: x = [1,1,1]. Prvi element niza naj bo pri n=0. S pomočjo konvolucije izračunajte odziv sistema.

f) Skicirajte vhodni signal iz naloge e). Z uporabo funkcije filter(..) izračunajte in skicirajte signal na izhodu. Primerjajte z izračunano vrednostjo v nalogi e). x = [ones(1,3),zeros(1,18)]; stem(n,x) y = filter(b,a,x); stem(n,y)
x[n] 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 y[n]

0

2

4

6

8

10 n

12

14

16

18

20

0

2

4

6

8

10 n

12

14

16

18

20

2.) Kot primer IIR sistema si vzemimo segrevanje štedilnika, in sicer naj se pri prehodu na naslednji korak štedilnik segreje za vrednost na vhodu sistema, ter ohladi za 20% prejšne vrednosti. Začeno stanje štedilnik in okolica naj bosta enaka 0. a) Zapišite diferenčno enačbo, ki opisuje povprečevalnik

b) Narišite blokovno shemo, ki ustreza diferenčni enačbi

c) Izračunajte prevajalno funkcijo sistema (h). Ali je prevajalna funkcija končna, ali neskončna?

d) V Matlab-u z uporabo funkcije filter(...) izračunajte in skicirajte odziv na enotin impulz (glej postopek pri nalogi 1.d). Primerjajte z izračunano vrednostjo v nalogi c).
h[n]

a=[ b=[ n = 0:20; imp = (n==0); stem(n,imp); h = filter(b,a,imp); stem(n,h);

]; ];

1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0

0

2

4

6

8

10 n

12

14

16

18

20

e) Vhodni signal naj bo stopnica dolžine 5 (štedilnik je 'prižgan' pet korakov). Z uporabo funkcije filter(..) izračunajte in skicirajte signal na izhodu (glej postopek pri nalogi 1.f).
x[n] 1 0.9 3 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.5 0.1 0 0 1.5 2.5 3.5 y[n]

2

1

0

2

4

6

8

10 n

12

14

16

18

20

0

2

4

6

8

10 n

12

14

16

18

20