Digitala filter Digitala filter FIR Finit Impulse Response Digitala filter förekommer t.ex.: I Matlab, Photoshop oh andra PCprogramvaror som filtrerar. I apparater med signalproessorer, t.ex. mobiltelefoner, bärbara CD-spelare m.m. 2 Digitala filter Man kan filtrera för att nå ett flertal olika ändamål som brusdämpning, selektering av mätdata,... Lågpassfiltrering, bandpassfiltrering, bandspärr.. För ljud kan man tänka sig: Eko, vibrato, körsimulering, distordering Transformering (växla frekvens) Digitala filter Det finns två olika typer av digitala filter FIR - ike rekursivt filter, FIR Finite Impulse Response IIR - rekursivt filter, IIR Infinite Impulse Response 3 4
FIR - filter FIR-filter Ett kausalt FIR-filter, H, med N tappar har med insignalen x[ oh utsignalen y[ y h * x (faltning) x[ ] Σ y[ y[ N k k] x[ n k] Överföringsfunktionen H(z) skrivs : Z - Z - ] 2] Σ Σ Ett FIR-filter med tre tappar H ( z) N k k] z k Z - 3] Σ 5 6 FIR - filter FIR filter med invers Fouriertransform Ett FIR-filter har ändlig respons. Om man skikar in en enhetspuls, blir utsignalen noll efter N antal klokykler. Jämför gärna med blokshemat eller den matematiska formeln. De är (på grund av detta) stabila. De kan även göras faslinjära så att fasvridningen blir prop. mot frekvensen ω 7 EXEMPEL Vi vill dimensionera ett FIR-filter av lågpasstyp med passband upp till 9 Hz oh spärrband från Hz. Filtret finns i ett system med samplingsfrekvens 8 khz. Frekvenser över Hz ska dämpas minst 4 db -4 4 Hz 9 8
Steg - normerade frekvenser Rita figuren med normerade frekvenser fs 8 Hz motsvarar Ω 2 π Transitionsvidden ΔΩ π*2/4 π/2 Corner frequeny Ω π*/4 π/4 Steg 2 - Idealt filter Ansätt ett idealt filter HH önskat med gränsfrekvens, Ω pi/4 (motsvarar Hz) enligt följande: H ( Ω) Ω < Ω Ω Ω - π π π*/4 π*9/4 9 Idealt filter Steg 3 beräkna impulssvaret Det ideala filtret får då följande beloppskurva - π H π Ω π/4 Ω För att få det önskade impulssvaret inverstransformerar vi överföringsfunktionen. Anm. Frekvensen Ω från π till + π gäller här. 2π 2π π π Ω Ω H ( Ω) e e jnω jnω dω dω 2
I vårt fall med Ω π/4 får vi:.. euler.. sin(n Ω πn Ω Ω sin( n) π π 4 Ω sin( Ω n) ) π Ω n sin( n ) 4 Några kladdiga fotnotantekningar från föregående sida: Sin (x) sin (pi*x) / (pi*x) Om abs ( H) för omega < omega < omega2 oh f.ö. abs ( H) Före fördröjning: (/(2pi)) Integral { exp (j omega n)} domega +Integral { exp ( j omega n)} domega Med gränser för omega: omega2 till - omega resp. omega till omega2 Som blir. (omega2/pi) sin ( (omega2 n)/ pi ) - (omega/pi) sin ( (omega n)/ pi ) Beräkning med sin( ) Fotnotantekningar finns på nästa sida. 3 4 Vi plottar impulssvaret Impulssvaret utan- oh med en fördröjning n_d (ingen fördröjning, rött, vänster ) oh n_d 25 (fördröjt 25 steg, svart, höger) Impulssvaret är ICKE-KAUSALT 5.5..5 Impulssvaret är diskret Här är fördr. n_d8 oh vi har impulssvaret med 37 sampel; L37. Impulssvaret trunkeras utanför dessa 37 sampel -> Blir kausalt. 5.5..5 -.5 -.5 -. -8-6 -4-2 2 4 6 8 t (s) 5 -. 5 5 2 25 3 35 4 n 6
Bra men inte perfekt Vi ökar gradtalet gånger Vi kollar resultatet genom att göra en diskret fouriertransform av resultatet. Vi får då överföringsfunktionen, eg. H(Ω), alias frekvenssvaret.4.2.8.6.4-4 -3-2 - 2 3 4 Ω 7 Med n_d 6 oh impulssvaret i 2 punkter får vi följande överföringsfunktion fortfarande rippel.4.2.8.6.4-4 -3-2 - 2 3 4 Ω 8 Lägg ett fönster över impulssvaret Om man multiplierar impulssvaret med ett fönster - exempelvis ett hammingfönster kan man reduera ripplet Hammingfönstret beskrivs av funktionen 2 π n w[.54.46 os( ) N 9 Fönsterfunktioner Det finns ett antal standardfönster - Hamming, Hanning, Blakman, Bartlett, Kaiser, Hann e.t. Så här ser ett Hammingfönster av längd 28 ut.9.8.7.6.5.4.3. 2 4 6 8 2 4 n 2
Impulssvar - Med oh utan Hammingfönster Här har vi n_d 8. (L37 sampel) rött utan fönster heldragen med fönster. 5.5..5 -.5 -. 5 5 2 25 3 35 4 2 Överföringsfunktion - Med oh utan Hammingfönster Vi beräknar oh ritar överföringsfunktioner för ett filter med gradtal (längd) 37, n_d 8 (med fönster fås mindre skrovlighet ).4.2.8.6.4-4 -3-2 - 2 3 4 Ω 22 Ökat gradtal ger bättre överföringsfunktion Vilket fönster ska väljas? Vi testar med L 37.5..5 -.5 -. 5 5 2 25 3 35 4 H.2.8.6.4-4 -3-2 - w 2 3 4 Ω 23 Det är fönstertypen som bestämmer dämpningen i spärrbandet. Kolla tabell i bok (Oppenh: s. 47, Porat: s. 297) eller se här: rektangulärt 2 db Hamming 53 db Blakman 74 db 24
Hur väljs gradtalet? Det är fönstertypen oh transitionsvidden som bestämmer gradtalet [ Proakis s. 668, Oppenh: s. 47, Porat: s. 297]. I vårt fall har vi transitionsvidden pi/2 För ett Hammingfönster får vi då L 6 (vi vill ha ett udda gradtal). 8π π ; L L 2 6 25 Koden som vi använt (Matlab) Bilda h(n) av handräknade (integral)värden/uttryk. Här fall med impulssvar, h, utan fönster lear; h_length 2+; fs 8; Ts /fs; t :Ts: 5; n_d (h_length - )/2; % h_length är udda % handräkn ger: h(n) (Ω./pi).*sin((Ω./pi).*n); % Ω pi/4 % ike kausalt, trunkera, fördröj med nd steg som ger kausalitet. for n -n_d : : n_d h(n + n_d +) (Ω./pi).* sin ((Ω./pi).* n) end; 26 IMPULSSVARET h (här utan- oh med fönster) N length(h) stem([: N-], h, 'r.'); % impulssvar utan fönster xlabel('n') title('impulssvar h') % Fönstra, obs transponat:et ( )! Märk.* för elementvis hw h.* hamming(n)' ; % length(hw) length(h) stem([ : N-], hw, b. ); % impulssvar med fönster 27 ÖVERFÖRINGSFUNKTION H Frekvenssvaret H(f) Bilda H av h med FFT i det fönstrade fallet N length(hw) df /(N*Ts) % frekvensupplösningen f linspae(-fs/2, fs/2 - df, N); % frekvens f i enheten Hz HW fft(hw); plot( f, fftshift( abs(hw)), 'r'); xlabel( Hz') ylabel(' H. Frequeny response') 28
Frekvenssvaret Bodediagram då impulssvaret är h Matlabfunktion: freqz( ) % Enhet på frekvensen (x-axeln) är Hz % Samplingsfrekvens: fs Hz % FIR: H B/A där A Jämför N : H ( z) k] z k k freqz( h,, length(h), fs ); % numerator h, denum. 29 3 Bodediagram { freqz( ) } Skatta H med vitt brus Okänt system H x vitt brus? y mätdata Genom att sända in vitt brus i ett okänt system kan man skatta motsvarande H(f) (frekvenssvar) med korskorrelation. Korskorrelation, rxy, där impulssvaret är definieras: rxy[k] h * rx dvs impulssvaret faltat med rx; i k-planet. Linjär fas i passbandet 3 Rxy[θ ] H Rx dvs korsspektrum är frekv.svaret multplierat med spektraltätheten; i frekvensplanet. rxy oh Rxy beräknas, med vitt brus är så är rx oh Rx kända > Frekvenssvaret H(f) kan skattas { först uträknas H(θ) }. 32
EXEMPEL PÅ SKATTNING MED VITT BRUS MATLABKOD % Här 5 sek mättid med fs8 Hz % I normalfallet: % Data y uppmätta data, men här % h ett lågpass FIR-filter (som exiteras av det vita bruset) % LP-filtret har Ω +-pi/4, beräkningar.. Som givit: % h(n) 5.* sin (n./4); % före fördröjning fs 8; Ts /fs; t : Ts : 5; L 2+; n_d (L-)/2; for n -n_d : : n_d h(n+n_d+) 5.* sin(n./4); % fördröj med n_d steg end; (forts.) 33 Nb 7 % antal brusvärden % vitt gaussiskt brus, medel, std (stand dev), Nb värden in_brus normrnd (,,, Nb); % Chek mean(in_brus) var(in_brus) % utsignal insignal faltat med impulssvaret h ut onv (h, in_brus); % I normalfallet: ut uppmätta data tfestimate(in_brus, ut(: Nb), [ ],[ ],[ ], fs); % Plotta skattningen, Se figur: 34 Transfer Funtion Estimate via Welh data 4 Sammanfattning Filterkonstruktion (FIR) Magnitude (db) - -2-3 -4-5 -6-7 -8-9.5.5 2 2.5 3 3.5 4 Frequeny (khz) 35 Skissa önskat frekvenssvar, H ( i frekvensplanet) Genomför en IFFT ( ger impulssvaret ). Resultatet blir här ike-kausalt! Välj fönster oh beräkna gradtal med hänsyn till dämpning oh transitionsvidd. Fönstra begränsa rippel. Fördröj i tidsplanet med n d sampel som ger ett kausalt resultat. Förutsätter trunkering av svans oh nos på. Trunkering av nos p.g.a. symmetri/fasgång. Nu skall filtret vara kausalt oh realiserbart. 36