Om den diskreta fouriertransformen och elementär frekvensanalys Avhandling för losoe kandidatexamen inom utbildningsprogrammet för matematik av Mikael Kurula Matematiska Institutionen vid Åbo Akademi Åbo, Finland Under handledning av Professor Olof Staans (Matematiska institutionen) Oktober 2
Innehåll Inledning 2 2 Denitioner 4 3 Några resultat 8 4 Cykliska faltningar 5 Ekvidistant diskretisering 4 6 Tolkning av spektrum 6 7 Den snabba fouriertransformen 2 8 Aliasing 25 9 Läckage och fönsterfunktioner 27 Sammandrag och problem 3 Symbol- och källförteckning 33
Inledning Denna uppsats behandlar ytligt de tankar som lägger grunden för den snabba fouriertransformen (FFT, fast Fourier transform). Resonemanget bygger på den så kallade överlagrings- eller superpositionsprincipen som innebär, att då ett antal vågrörelser samverkar (interfererar), så adderas de och bildar på så sätt komponenter i det interferensmönster som uppstår. Det är faktiskt så att en godtycklig begränsad periodisk funktion f, som har ett ändligt antal extremvärden per period, kan beskrivas som en överlagring av cosinus- och sinusfunktioner. (Det att f är begränsad är en onödigt stark förutsättning.) Vi kallar ett par C ( cos(2παt) + i sin(2παt) ) = C e 2πiαt, C C för en frekvenskomponent med frekvensen α. Se gur, där den diskontinuerliga funktionen {, 2 f(t) = t, annars har utvidgats -periodiskt och approximerats med hjälp av ändliga summor av frekvenskomponenter..8.6.4.2.2.2.4.6.8.2 t Figur : Här har en periodisk funktion approximerats med summor av cosinus- och sinusfunktioner. Vår approximation går faktiskt mot f i L -mening, det vill säga, arean mellan f och approximationen kan göras godtyckligt liten. De olika approximationerna innehåller, 5 respektive 49 så kallade övertoner. Den k:te övertonen är paret av frekvenskomponenter med frekvenserna ±(k + )f, där 2
f är grundtonens frekvens (den lägsta frekvenskomponenten, större än noll, som man för tillfället betraktar). Grundtonen är egentligen paret av frekvenskomponenter med frekvenserna ±f (jämför med den :te övertonen). Approximationen f m är således överlagringen av grundtonen och de m första övertonerna så att f m (t) = m k= m C k e 2πif kt. I gur på sidan 2 har vi använt f = Hz. Fouriertransformationen spjälker upp en funktion av tiden i sina frekvenskomponenter (dekomposition) så, att man får en alternativ representation av samma funktion. I stort sett är denna transformation omvändbar och genom att använda den så kallade inversa fouriertransformen kan man transformera frekvensdata tillbaka till tidsdata (syntes). Genom att förfara på detta sätt, kan man redigera en signals frekvenser i stället för direkt redigering i tiden, vilket ofta kan vara fördelaktigt, bland annat vid implementering av digitala frekvenslter. Man kan med hjälp av den inversa FFT:n (IFFT) framställa en syntetisk signal utgående från hur starkt man representerar de olika frekvenserna, det vill säga, man kan generera en ton med en viss klang, eftersom det är sammansättningen av grundtonen och övertonerna som bestämmer tonens klang. Här presenteras den komplexa fouriertransformen, trots att det också existerar en reell version. Orsaken är att den komplexa, även om den kanske kan vara litet svårare att få ett konkret grepp om, är lättare att hantera matematiskt. Det blir svårt att utveckla fourierteorin om man använder den reella transformen på grund av rent tekniska problem och dessutom behöver man vara bekant med den komplexa versionen för att kunna förstå facklitteraturen inom ämnet. Se [Smith], kapitel 3. Trots att fourieranalysen har vissa ibland påtagliga nackdelar, har den diskreta fouriertransformen mycket viktiga tillämpningar inom många vetenskapsgrenar, bland andra bildbehandling, kristallogra, optik och ljudbehandling, där man vill analysera en signals frekvenskomponenter, till exempel se vilka toner som ingår i ett stycke vid en viss tidpunkt. FFT:n används ofta också rent räknetekniskt, exempelvis för att beräkna snabba faltningar. Speciellt i och med att J. W. Cooley och J. W. Tukey återupptäckte den snabba diskreta fouriertransformen blev fourieranalysen populär, eftersom man i och med den kunde börja beräkna fouriertransformer i praktiken i (nästan) realtid med hjälp av datorer. Med tiden har en mängd olika varianter i form av vidare optimeringar utvecklats. Se till exempel [FFTW]. 3
2 Denitioner Alla integreringar i denna uppsats kommer att ske i lebesguemening, trots att det inte alls är nödvändigt i vårt fall. Lebesgueteorin lämpar sig väl för fourieranalys och används därför allmänt inom området. Mätbarheten ställer inte till problem i praktiska beräkningar, eftersom alla i praktiken förekommande funktioner är mätbara och satiserar de så kallade dirichletvillkoren, som ställdes på f i inledningen. Se [Arfken], kapitel 4. Denition Om f : R C är (mätbar,) periodisk med perioden a ( < a < ) och sådan att (i lebesguemening) så är integraluttrycket a f(n) = a f(t) dt <, a f(t) e 2πint/a dt () konvergent för alla n och f kallas för fouriertransformen av funktionen f i L ( [, a) ). Mängden av alla talpar ( n, f(n) ) kallas för f:s spektrum. Anmärkning 2 Konvergensen visas på följande sätt. a a f(t) e 2πint/a dt f(t) e 2πint/a dt = a a f(t) e 2πint/a dt = f(t) dt <, enligt antagande. I [Gasquet], sidan 57, har man använt sig av en något annorlunda denition på spektrum, som passar bättre i det sammanhanget (distributioner), men denna enklare version duger gott och väl här. En annan vanlig denition är att spec f = { n : f(n) }, men den använder vi oss inte av. En motivering till denition kan vara följande. Vi har att f L p( [, a) ) a, p < f(t) p dt. Man kan visa, att f L p = f L q, där q < p. Funktionsfamiljen ϕ n (t) = a e2πint/a, n Z 4
utgör en fullständig ortonormal bas för L 2( [, a) ). Detta betyder att ϕ m, ϕ n = a ϕ m (t) ϕ n (t) dt = n m = och att alla f L 2( [, a) ) kan skrivas på formen f(t) = n= {, m = n, m n f(n) ϕ n (t). (2) kallas för Kroneckers delta (i Z) och vår fouriertransform f(n) är precis projektionen a f(n) = f, ϕ n = f(t) a e2πint/a dt = a f(t) e 2πint/a dt a av f på ϕ n. Eftersom alla funktioner i L 2( [, a) ) också nns i L ( [, a) ) är det naturligt att utöka denna denition att gälla också för funktioner i L ( [, a) ) \ L 2( [, a) ). Uttryck () på sidan 4 är väldenierat och konvergent också i detta fall. Då man tittar på den noggrannaste approximationen f 5 i gur på sidan 2, så ser man att det förekommer så kallade över- och underskott vid f : s diskontinuitetspunkter. Dessa verkar inte försvinna punktvis, fastän antalet övertoner går mot oändligheten. I själva verket är konvergensen i formeln (2) inte är punktvis, utan den sker i mass- respektive energimening, det vill säga, konvergensen är i normen L p för det rum som f tillhör, till exempel f L 2 (T) medför att lim f(t) f m (t) a m L 2 = lim f(t) f m (t) 2 dt =, m där f m (t) = m n= m f(n) ϕ n (t). Det faktum, att överskottet inte går mot noll bär namnet Gibbs fenomen, se [Arfken], kapitel 4 och [Gasquet], lektion 4. Påstående 3 För en periodisk funktion f med perioden a (märk att a inte ens behöver vara den minsta perioden) behöver man inte integrera uttrycket f(n) = a a f(t) e 2πint dt över intervallet [, a). Ett godtyckligt intervall med längden a duger. 5
Bevis: Vi gör ett direkt bevis. Tag ett godtyckligt halvöppet intervall av ovanstående typ med längden a och skriv det på formen I = [b, b + a), där b är entydigt bestämt. I varje sådant intervall nns ett entydigt heltal c, som är en heltalsmultipel av a, alltså c I c = ma, m Z. Då har vi (också enligt reglerna för beräkning av lebesgueintegraler, se [Royden], kapitel 4): a b+a b f(t) e 2πint/a dt= a = a = a = a = a c b c+a b+a c+a b+a c+a c a f(t) e 2πint/a dt + a b+a f(t a) e 2πin(t a)/a dt + a f(t) e 2πint/a e 2πin dt + a f(t) e 2πint/a dt = a c a f(t) e 2πint/a dt b+a c b+a f(t + ma) e 2πint/a e 2πinm dt = a c f(t) e 2πint/a dt f(t) e 2πint/a dt f(t + c) e 2πin(t+c)/a dt a f(t) e 2πint/a dt, ty f är a-periodisk och e ±2πin = cos(±2πn) + i sin(±2πn) =, n Z. Denition 4 Med T menas ett godtyckligt intervall med längden a. Med beteckningen f L (T) menas att att f är som i denition på sidan 4. Om man beräknar fouriertransformen () på sidan 4 numeriskt med hjälp av trapetsregeln får man, om man använder steglängden h = a/n, uttrycket (se till exempel [Persson], avsnitt 7.) f(n)= a = h a a ( N = N f(t) e 2πint/a dt = a k= N k= a g(hk) + g() 2 + g(a) 2 ) f(hk) e 2πinhk/a = N g(t) dt a = a an N k= f N k= ( N k= g(hk) + g (h(k + )) h 2 ) g(hk) + g() = N N k= g(hk) ( k a ) e 2πink/N. (3) N Vi har använt hjälpfunktionen g(t) = f(t) e 2πint/a. Vi har också utnyttjat det faktum att f och ϕ n är a-periodiska, varför också g är a-periodisk och g() = g(a). Uttryck (3) kan tolkas så att vi gör en ekvidistant diskretisering av funktionen f(t) under en period och sedan utför en så kallad diskret fouriertransform (DFT) på denna följd. 6
Denition 5 Den diskreta fouriertransformen f(m) = N N k= f(k) e 2πimk/N (4) avbildar en (begränsad) N-periodisk komplex talföljd {f(n)} på en annan talföljd { f(m)}. Mängden av alla begränsade N periodiska komplexa följder med perioden N betecknas Π N. f:s spektrum denieras här som spec f = {( m, f(m) ) : N/2 < m N/2 }. Anmärkning 6 Analogt med påstående 3 på sidan 5 behöver man (tack vare periodiciteten) inte summera från till N. Summan av N på varandra följande termer ger korrekt resultat startpunkten är godtycklig. Beviset blir analogt med beviset för påstående 3. Då indata f(k) är begränsat, kan vi inte få några problem med konvergensen. Vi ser att fouriertransformen av både en funktion i L (T) och en talföljd i Π N är en talföljd. Man brukar kalla elementen i dessa följder för fourierkoecienter. I det första fallet gäller att f(n) då n (Riemann- Lebesgues sats, se [Gasquet], sidan 4), medan nästa sats ger att fouriertransformen av f Π N är periodisk. Vi kommer att se att förhållandet mellan frekvensen för en komponent i kontinuerlig tid och frekvensen hos dess diskretiserade version beror på hur diskretiseringen görs, så vi låter bli att deniera frekvensen hos en diskret komponent. (Se avsnitt 6.) 7
3 Några resultat Sats 7 Följande resultat gäller för den diskreta fouriertransformen: a) DFT:n är en linjär operation. g, h Π N : k : f(k) = α g(k) + β h(k) = m : f(m) = α ĝ(m) + β ĥ(m) b) DFT:n avbildar Π N på Π N. [ c) m Z, f Π N : e 2πiMk/N f(k) ] (m) = f(m + M) och d) [ f(k M) ] (m) = e 2πimM/N f(m), för alla konstanta heltal M. e) Om f är udda (jämn), så är f udda (jämn). Bevis: a) Vi genomför följande räkning. f(m)= N N k= k= f(k) e 2πimk/N = N N k= [ α g(k) + β h(k) ] e 2πimk/N =α N g(k) e 2πimk/N + β N h(k) e 2πimk/N N N =α ĝ(m) + β ĥ(m). b) Klart att f är en talföljd, vidare visar vi att f är N-periodisk: k= f(m + N)= N = N N k= N k= f(k) e 2πi(m+N)k/N = N N k= f(k) e 2πimk/N ( e 2πi) N k = N f(k) e 2πimk/N e 2πiNk/N k= f(k) e 2πimk/N k = f(m). c) En enkel räkning, liknande den i b)-fallet. d) Vi substituerar l := k + M och utnyttar anmärkning 6 på sidan 7. N [ ] (m)= f(k M) f(k M) e 2πimk/N = N N k= M+N l=m f(l) e 2πim(l+M)/N = e 2πimM/N M+N f(l) e 2πiml/N = e 2πimM/N f(m) N l=m 8
e) Vi genomför ett kort bevis för fallet, då f är udda. Det andra fallet bevisas analogt. f( m)= N = N N k= f(k) e 2πimk/N = N l= N N k= f(l) e 2πiml/N = f(m), där vi har satt l := k och använt anmärkning 6. ( f(k) ) e 2πimk/N Anmärkning 8 Motsvarigheter till dessa påståenden gäller också för andra typer av fouriertransformer. Påstående d) betyder, att det inte har någon större betydelse för spektrumet om funktionen förskjuts i tiden, endast fasen för spektrumet ändras. Påstående c) betyder att man, genom att multiplicera insignalen med ett roterande komplext tal med längden ett, kan förskjuta spektrumet. Om M >, så sänks spektrumet, varvid den inversa fouriertransformen (se senare) av den transformerade funktionen blir den ursprungliga funktionen, men med sänkt frekvensinnehåll. Tonerna har alltså sänkts genom multiplikation. (Vi behöver inte ens transformera.) Enligt [Sprenger], Time and Pitch Scaling of Audio, avsnitt, används denna teknik i så kallade pitch shifters, som tonförskjuter till exempel signalen från mikrofonerna på en gitarr. Problemet är det, att alla toner förskjuts lika långt absolut sett, då de egentligen borde förskjutas lika många procent, vilket leder till att till exempel en ren oktav inte längre är en ren oktav efter förskjutning. Resultatet av en behandling av ovanstående slag blir naturligtvis musikaliskt horribelt i de esta fall. Tyvärr kallas också ofta implementeringar av andra metoder för förskjutning av signalers spektrum populärt (och, enligt [Sprenger], felaktigt) för pitch shifters. Lemma 9 Sätt m, l Z. Då gäller att N k= e 2πik(m l)/n = N δ m l = { N, m = l + nn, n Z, annars. δ kallas för Kroneckers delta (i Π N ). 9
Bevis: (i) m = l + nn = N k= e2πik(m l)/n = N k= (e2πi ) kn = N = N. (ii) m l + nn. Här har vi en geometrisk talföljd och kort räkning ger, då m l Z och e 2πi(m l)/n (e 2πi ) kn =, att N k= N ( e 2πik(m l)/n = ) e 2πi(m l)/n k ( e 2πi(m l)/n) N = e 2πi(m l)/n k= = (e2πi ) m l e 2πi(m l)/n = e 2πi(m l)/n =. Sats Den inversa diskreta fouriertransformen (IDFT) ges av g (m) = N k= g(k) e 2πimk/N. (5) För alla k Z gäller att f(k) = ( f ) (k) och (f ) (k) = f( k)/n. Bevis: Vi gör en direkt beräkning och använder lemma 9. [ ] ( f) N (m)= e 2πimk/N N e 2πilk/N f(l) N k= = N l= l= N N f(l) e 2πik(m l)/n = N k= N l= f(l) N δ m l = N N [ f() δ m +... + f(m) δ m m +... + f(n ) δ m N ] = f(m). För det andra påståendet har vi per denition f (m) = N f ( m) för alla m Z, varur vi med några rader visar att (f ) (k) = N (f ) ( k) k och vi har (f ) (k) = f( k)/n k Z.
4 Cykliska faltningar Denition Den cykliska faltningen (eller konvolutionen) av två följder f, g Π N denieras enligt (f g)(n) = N k= f(k) g(n k). (6) Märk att faltningen också är linjär och att n : (f g)(n) = (g f)(n). Se [Gasquet], sidan 7. I detta avsnitt betraktas ofta enbart intervallet [, N ], men man bör minnas, att alla funktioner är N-periodiska (nedan visas, att också faltningsfunktionen är det). Anmärkning 2 Det nns också andra typer av faltningar. I denna uppsats betyder faltning underförstått cyklisk faltning. Förledet cyklisk kommer från det faktum, att insignalen antas vara periodisk (cyklisk), vilket måste utnyttjas då man beräknar faltningen, eftersom vissa index n k hamnar utanför intervallet [, N ]. Värt att lägga märke till är också, att vi i likhet med anmärkning 6 på sidan 7 kan summera N godtyckliga på varandra följande termer, eftersom f(k) g(n k) är N-periodisk med avseende på k. Direkt ur formel (6) ser vi att vi kan skriva (f g)(n) = f() g(n) + f() g(n ) +... + f(n ) g(n N + ). Tolkningen av detta är, att f ger amplituderna och fasförskjutningarna för N stycken kopior av g, som har förskjutits,,...,n steg åt höger (eller tvärtom) och faltningen är överlagringen av alla dessa kopior. (Vissa kan givetvis ha amplituden och således inte nnas med). Se gurerna 2 och 3.
.8.6.4.2 5 5 m 2 3 4 5 6 7 8 2 3 4 5 6 7 8 m 5 Figur 2: Till vänster nns f avbildad och till höger g. Märk, att de båda egentligen är 8-periodiska. 5 m 2 3 4 5 6 7 8 5 5 Figur 3: Faltningen f g av f och g. Här anger g amplituderna och faserna för de fyra förekomsterna av f (och tvärtom). Både f och g är för åskådlighetens skull reella här. Den första loben till vänster är svansen av den kopia av f, som nns längst till höger i föregående period. 2
Sats 3 Med funktionen (f g)(m) menas m: (f g)(m) = f(m) g(m). a) Faltningen f g, där f och g är N-periodiska, är N-periodisk. b) m Z : (f g) (m) = N ( f ĝ ) (m) och c) (f g) (m) = ( f ĝ ) (m). Bevis: a) Då g enligt antagande är N-periodisk fås (f g)(n + m) = N k= f(k) g(n + m k) = N k= f(k) g(m k) = (f g)(m). b) Vi gör substitutionen n := k + l = l = n k och använder att e 2πimn/N f(k) g(n k) är N-periodisk med avseende på n (jämför anmärkning 2 på sidan ). N ( [ ) N ] N f ĝ (m) = f(k) e 2πimk/N N = N = N N k= N N l= N k= n= =(f g) (m). k= N N f(k) g(l) e 2πim(k+l)/N = N l= f(k) g(n k) e 2πimn/N = N g(l) e 2πiml/N N k= N n= k+n n=k f(k) g(n k) e 2πimn/N N e 2πimn/N k= f(k) g(n k) c) Vi tar F = f G = ĝ och använder (ii), sats på sidan och anmärkning 2 på sidan. ( ) ( ) (F G) (m)= N (F G ) (m) = N 2 F G ( m) N = N F (k) N N G ( m k) = F ( k) G (m + k) k= k= N = F (l N) G (m l + N) = ( F Ĝ ) (m), l= där vi har satt k = N l. 3
5 Ekvidistant diskretisering Nu följer en beskrivning av hur fourieranalysen kan tillämpas i praktiken, en så kallad korttids diskret fouriertransform (STDFT, Short-Time Discrete Fourier Transform), där man beräknar frekvensspektrumet hos en signal som ändrar med tiden. Se [Sprenger], Pitch Scaling using the Fourier Transform. Antag att vi har en begränsad insignal f(t), som är diskontinuerlig i ett numrerbart antal punkter (men inte nödvändigtvis periodisk). Denna signal går genom ett lågpasslter, som eektivt ltrerar bort alla komponenter med en frekvens F N eller högre. Signalen blir bandbegränsad till α < F N. Under tiden a = N/2F N, N Z +, observerar vi vid tidpunkterna k/2f N, k [, N ] f:s värde och lagrar dessa i g, så att ( ) k k [, N ] : g(k) := f, 2F N där N = a/2f N. Då är g en diskretiserad version av f. I praktiken används en ADC (Analog-to-Digital Converter). Eftersom vi alltid avläser f:s värde med lika långa tidsintervall a/n = /2F N, säger vi att diskretiseringen är ekvidistant. Med begreppet sampling menar vi just ekvidistant diskretisering på ovanstående sätt och samplingsfrekvensen är det konstanta antalet observationer per sekund (2F N ). Nu utökar vi g N-periodiskt genom att sätta k [, N ] = g(k) := g(k mod N). Detta svarar mot att vi antar att f är a-periodisk och samplar under tiden < t <. Då gäller att g Π N, varför vi kan göra en DFT på g. Denna transform beskriver frekvenssammansättningen under tiden [, a). (Se nästa avsnitt för närmare förklaring.) För att sedan beräkna spektrumet under [a, 2a) upprepas samma förfarande ( g(k) := f(a + k/2f N ) ). Då man beräknar en STDFT delar man alltså in signalen i kortare bitar med längden a och analyserar dessa kortare bitar med hjälp av en vanlig DFT. STDFT:n består då av alla dessa mindre analyser och man får alltså reda på frekvenssammansättningen under varje tidsperiod [ na, (n + )a ), n N. Vi säger att vi har tidsupplösningen a. Gränsfrekvensen F N kallas för nyquistfrekvensen och den är alltid halva samplingsfrekvensen. I praktiken går man oftast tillväga så, att man först väljer en lämplig bandgräns α (Hz) för insignalen och sedan väljer en bekväm samplingsfrekvens, som är minst så hög, att nyquistfrekvensen blir större än α. 4
Då vi gör f a-periodisk får vi f L (T) och f(n) = f(t) e 2πint dt. a T Ett annat sätt att utvidga f vore, att sätta t [, a) = f(t) =. Då har vi f L (R) och enligt formeln för fourierintegraler (de behandlas ej desto närmare här, se [Gasquet], lektion 7) är a f(ω) = f(t) e 2πiωt dt = f(t) e 2πiωt dt. För ω Z, så är alltså de två transformerna lika på konstanten /a när, varför man kanske kan anse att det inte egentligen är så förskräckande, att utan vidare utvidga f a-periodiskt. Exempel 4 Vi tar nu funktionen (t ges i sekunder) { 3 cos(2πt) sin(6πt), t < 2 f(t) = godtycklig, annars, som är bandbegränsad till 3 Hz, om vi gör en 2-periodisk utvidgning, varför det räcker gott och väl att använda samplingsfrekvensen 6 Hz (nyquistfrekvensen blir då 8 Hz). Vi samplar alltså f under två sekunder (a = 2) med frekvensen 6 Hz och lagrar resultatet i g. N = 2 6 = 32 och k [, 3] : g(k) := f(k a/n) = f(k/6), varefter vi utvidgar g 32-periodiskt. Se gur 4. Då har vi g Π 32, varför vi kan beräkna ĝ(m) för alla m [, 3] enligt formeln (4) för DFT på sidan 7. I exemplet ovan skulle det tydligen räcka med en samplingsfrekvens större än 6 Hz, eftersom den mest högfrekventa komponenten ligger på ±3 Hz. Om samplingsfrekvensen vore 6 Hz, skulle vi dock inte få ett korrekt resultat. För att inse detta, sampla sin(2πt) med frekvensen 2 Hz. Den samplade funktionen blir identiskt noll, vilket uppenbart inte är korrekt, trots att sin(2πt) är bandbegränsad till Hz=F N. 5
3 2 t 2 3 2 3 3 2 2 2 m 4 6 2 3 Figur 4: Till vänster har funktionen f i exempel 4 avbildats och till höger nns den periodiskt utvidgade funktionen g. Märk att vi har perioden N = 32 och att tre perioder nns utritade i guren till höger. (Streckena mellan punkterna är utritade enbart för tydlighets skull. De har ingen matematisk innebörd.) 6 Tolkning av spektrum I formeln (5) g(k) = N m= ĝ(m) e 2πimk/N för IDFT på sidan ser man att koecienten ĝ() anger styrkan för den komponent, som roterar exakt ett varv i positiv riktning under en period k [, N ]. ĝ(2) anger styrkan för den som roterar två varv i positiv riktning och så vidare ända till f(n/2), men till exempel f(n 2) bör tolkas som f( 2), det vill säga f(n 2) ger styrkan för komponenten med frekvensen 2 varv i negativ riktning per period. Det, att en komponent i g roterar ett varv under en period N, svarar mot att motsvarande komponent i f roterar ett varv under tiden a (en period), varför den har frekvensen /a. Om en komponent i g roterar k varv under en period N, så roterar motsvarande komponent i f alltså k varv under tiden a, varvid den har frekvensen k/a. Vi valde i föregående avsnitt g så att den interpolerar f i punkterna k/2f N, varför koecienterna ĝ tydligen beskriver frekvenssammansättningen hos den funktion som har ett frekvensinnehåll som är begränsat till α < F N och interpolerar f i punkterna k/2f N. I följande korta beräkning antas att N är jämnt. I annat fall förblir beräkningen densamma, men alla termer som innehåller f(n/2) eller f (N/2) 6
försvinner, då N/2 Z i så fall. Vi använder att sinus är en udda funktion och att cosinus är jämn. f(k) = N m= f(m) e 2πimk/N = f() + m <N/2 = f() + ( e iπ)k f(n/2) + f(m) ( cos(2πmk/n) + i sin(2πmk/n) ) + m<n/2 m<n/2 f( m) ( cos( 2πmk/N) + i sin( 2πmk/N) ) f(m) e 2πimk/N + f(n/2) e πik = f() + ( ) k f(n/2)+ [ ] ( ) ( ) f(m)+ f( m) cos(2πmk/n)+i f(m) f( m) sin(2πmk/n) m<n/2 (7) f() är tydligen endast en additiv konstant, förskjutningen av jämviktsläget från tidsaxeln. Vi ser att det är naturligt att f(n/2) inte har något par, eftersom det inte har någon betydelse om man går ett halvt varv runt en cirkel moturs eller medurs. Om f är udda, så är f(k) + f( k) = för alla k och f har endast sinuskomponenter (och konstanter) varför f är udda. Om å andra sidan f är jämn, så är f(k) f( k) = k och f är jämn. Påståendet att f är udda (jämn) är alltså enligt sats 7 på sidan 8 ekvivalent med påståendet att f är udda (jämn). Då man betraktar summan ser man att fouriertransformen delar upp funktionen f i dess sinus- och cosinuskomponenter med de olika rotationshastigheterna m varv per period. Denition 5 Med en funktions f Π N amplitudspektrum avser vi mängden {( n, f(n) ) : N/2 < n N/2 } och med funktionens fasspektrum menas mängden {( n, arg [ f(n) ]) : N/2 < n N/2 }. Utan vidare motivering konstaterar vi, att amplituden ofta är det intressanta medan fasen är onödig och ibland är fasen helt avgörande samtidigt som amplituden i stort sett inte spelar någon roll. Örat gör till exempel alltid någoting som påminner om en mekanisk fouriertransform av det inkommande ljudet och det transformerade datat skickas sedan vidare till hjärnan. Transformen sker så att örats små hår kommer i resonans med frekvenskomponenter i det inkommande ljudet och naturligtvis krävs det en viss tid innan tillräckligt med energi har snappats upp av hårstråna för att de 7
ska kunna vibrera kännbart, varvid informationen om fasen redan har gått förlorad. Se [Syreeni]. Vid bildbehandling kan man å andra sidan utföra en erdimensionell fouriertransform, där fasen innehåller väsentligare information än amplituden. Se [Cowtan], A Little Animal Magic. Sats 6 Antag att f Π N är reellvärd. Då gäller att m < N/2 : f(m) = f( m), (8) vilket i sin tur medför att f:s fasspektrum är udda och amplitudspektrumet är jämnt, om N är udda. Om N är jämnt saknar f(n/2) par, men i övrigt gäller resultatet. (Vi har ju f( N/2) = f(n/2 N) = f(n/2).) Bevis: Vi stöder oss på följande tre resultat för komplexa tal, vilka enkelt visas: a R a = a, a b = a b och a + b +... + z = a + b +... + z. f(m)= N = N N k= N k= f(k) e 2πimk/N = N f(k) e 2πimk/N = N N k= N k= f(k) e 2πimk/N = N N k= f(k) e 2πimk/N = f( m) f(k) e 2πimk/N Per denition av argumentet för ett komplext tal gäller då att arg f(m) = arg f( m) = arg f( m) för alla m, varför fasspektrumet är udda och vidare är f(m) = f( m) = f( m) för alla m, så amplitudspektrumet är jämnt. Anmärkning 7 Ovanstående sats innebär bland annat, att vi ibland inte behöver beräkna era koecienter f(m) än de, för vilka m N/2, då de övriga enkelt kan konstrueras med hjälp av satsen om f R. Man ska inte låta sig luras att tro, att man har information om också de frekvenskomponenter som ligger ovanför nyquistfrekvensen, för att man har koecienter med m > N/2. Den korrekta tolkningen är att man (tack vare periodiciteten hos f ekvivalent) betraktar de komponenter f(m), för vilka N/2 < m N/2. Följande sats motiverar att man använder sig av fourieranalys då man analyserar en signals frekvenssammansättning och är således en av de grundläggande satserna vid frekvansanalys med fouriertransformer. 8
Sats 8 Om f Π N är reell, så anger amplitudspektrumet precis halva amplituden för de frekvenser, som ingår i f, så att f(m), m < N/2 ger halva amplituden för komponenten med frekvensen m varv per period N. Bevis: Den så kallade hjälpvinkelmetoden säger att A, B R φ [, 2π) : A cos(αt) + B sin(αt) = A 2 + B 2 sin(αt φ), (9) där φ är en konstant, som inte intresserar oss. Se [Persson], sidorna 76-78. Om f R, så är f( m) = f(m) och uttryck (7) på sidan 7 kan med hjälp av (9) skrivas som f(k)= f() + ( ) k f(n/2) + [( ) ( ) f(m) + f(m) cos(2πmk/n) + i f(m) f(m) m N/2 = f() + ( ) k f(n/2) + [ 2 Re m N/2 ( f(m) ) cos(2πmk/n) + i 2 2 Im ] sin(2πmk/n) ( ) ] f(m) sin(2πmk/n) = f() + ( ) k f(n/2) + [ ( )] 2 [ ( )] 2 2 Re f(m) + 2 Im f(m) sin(2πmk/n φm ) m N/2 = f() + ( ) k f(n/2) + m N/2 2 f(m) sin(2πmk/n φ m ). Vi ser härur, att f(m) i amplitudspektrumet ger exakt halva amplituden för den komponent, som roterar med hastigheten m varv under en period N. Satserna 6 och 8 gör att det är motiverat att säga att fourierkoef- cienterna f(m), m N/2 beskriver hur starkt de olika frekvenserna nns representerade i en diskret, reell funktion f och därmed oftast (approximativt) också för den icke-diskretiserade funktionen. I själva verket är också φ m relaterade till f:s fasspektrum. 9
Exempel 9 Vi använder igen funktionen f(t) = 3 cos(2πt) sin(6πt), som i exempel 4 på sidan 5 men samplar med frekvensen 8 Hz under en sekund och beräknar DFT:n av den 8-periodiska utvidgningen. ( ) ka g(k) :=f N ĝ (m)= 7 8 = 3 6 = { 3 2 k= = 3 cos πk 4 3 cos πk 4 e 2πimk/8 = 3 6 7 e iπk( m)/4 + 3 6 k= 3πk sin 4 = g (k) + g 2 (k) = 7 ( e iπk/4 + e iπk/4) e πimk/4 k= 7 e iπk( m)/4 = 3 6 8 δm k=, m mod 8 = m mod 8 =, annars, + 3 6 8 δm enligt lemma 9 på sidan 9. Analogt får vi ĝ 2 (m) = i 2 δm 3 i 2 δm 3 och eftersom DFT:n är linjär och δ k = δ N k, får vi ĝ(m) = ĝ (m) + ĝ 2 (m) för alla m, det vill säga 3/2, m =, 7 i/2, m = 3 ĝ(m) = i/2, m = 5, annars ĝ ser ut som i gur 5, där vi har ritat ut de reella respektive imaginära komponenterna i en bild och f:s fas- respektive amplitudspektrumen i den andra. Ur vardera paret kan man återskapa g och därmed också f genom att använda formeln (5) för IDFT. Se kommentaren till Shannons samplingsteorem i nästa avsnitt. Då man analyserar frekvensinnehållet i till exempel musik, är det en god idé att börja med att bestämma sig för vilken frekvensupplösning man vill ha, det vill säga, hur nära varandra två frekvenser får ligga utan att de tolkas som en och samma. Om man vill ha en upplösning på Hz, så bör man sampla under a = / s, varvid elementen i spektrumet beskriver styrkan hos komponenter med frekvenserna Hz, Hz, 2 Hz och så vidare. Om man igen vill ha upplösningen Hz (fortfarande ganska grovt vid låga frekvenser), så måste man sampla under en sekund. Det som sedan avgör hur höga frekvenser man kan analysera är N, eftersom den högsta frekvensen som kan analyseras är lägre än F N = N/2a.. 2
.5.5 3 2 2 3 4 m.5.5.5 3 2 2 m 3 4.5.5 Figur 5: Till vänster har ĝ:s spektrum avbildats, rutorna representerar de reella komponenterna hos koecienterna och cirklarna de imaginära. Till höger nns ĝ:s amplitudspektrum (jämnt) och fasspektrum (udda), där rutorna anger amplituden och cirklarna fasen. 7 Den snabba fouriertransformen FFT:n upptäcktes av Gauss i mitten av 8-talet. Vi presenterar här idén i korthet. Vi betraktar en period av den diskreta, N-periodiska funktionen f(k) som en vektor f k, k [, N ] och en period av den diskreta fouriertransformen som en annan vektor f k. Vi ser att det erforderliga antalet räkneoperationer för att beräkna hela f k med hjälp av formel (4) på sidan 7 är av storleksordningen N 2 (vi skriver O(N 2 )), eftersom N koecienter ska beräknas och varje koecient kräver C N räkneoperationer, där C är en konstant. Detta är inte acceptabelt då N vanligen är av storleksordningen minst. Härnäst presenteras en enkel men briljant idé som gör det möjligt att beräkna en DFT med en kostnad av O(N log N), en version av den snabba diskreta fouriertransformen (FFT). Den säges ha basen två, eftersom den kräver att N kan skrivas på formen N = 2 n, n N. FFT:er med andra baser existerar också och de kan härledas på motsvarande sätt. Se [Gasquet], lektion 9. Idén är att man beräknar de udda koecienterna skilt och de jämna skilt. En annan, mindre optimering är, att man beräknar koecienterna ω k = e 2πik/N = ( e 2πi/N) k ( ), k [, N/2 ] i förväg i linjär tid O(N) och lagrar dem i en vektor. Som vi kommer att se, behöver man faktiskt bara hälften av koecienterna ω k. Det att ω k kan beräknas i förväg och återanvändas (vid till exemepel STDFT) gör, att man i praktiken får dessa koecienter gratis. 2
Vi börjar alltså med att sätta k [, N ] : g k := f(k)/n. (Man kunde naturligtvis lika gärna låta bli att dividera f med N i början och sedan dividera slutresultatet istället, eftersom DFT:n är linjär.) Det är lämpligt att tolka g som en vektor med N element. Vi beräknar en jämn koecient (ett element i g med jämnt platsindex) genom att ta m Z och N := N/2. f(2m)= N N k= N/2 = k= f(k) e 2πi2mk/N f(k) N e 2πimk/(N/2) + N k=n/2 f(k) N e 2πimk/(N/2) N = [g k e 2πimk/(N ) ] + g k+n/2 e 2πim(k+N/2)/(N ) k= = N k= [ (gk + e 2πim ) g k+n/2 e 2πimk/N ] N = k= g k e 2πimk/N = ĝ (m), där g k = g k + g k+n/2. Vi har nu fått en ny vektor med halva längden att transformera, varför arbetet för att beräkna de jämna koecienterna har minskat till en fjärdedel, om man skulle använda sig av formeln (4) på sidan 7 (jämför totala arbetet O(N 2 ) med den metoden). Nu utför vi en analog beräkning för en udda koecient. f(2m + )= N = N k= N/2 k= f(k) e 2πi(2m+)k/N [g k e 2πi(2m+)k/N + g k+n/2 e 2πi(2m+)(k+N/2)/N] N = [g k e 2πi(2m+)k/N + g k+n/2 e 2πi(2m+)k/N e 2πi(2m+) N/2/N] k= = N k= N = [e ( 2πik/N g k + g k+n/2 e πi(2m+)) 2πimk/N ] e h k e 2πimk/N = ĥ (m). k= Eftersom e πi(2m+) = (e 2πi ) m e πi = e πi =, har vi här satt h k = ω k ( gk g k+n/2 ). Nu har vi också minskat arbetet att beräkna de udda koecienterna till en fjärdedel. Då krävs totala arbetet 2 C N 2 /4 = C N 2 /2 22
för att beräkna hela f k. Totala arbetet har alltså halverats. Men vår metod kräver fortfarande O(N 2 ) räkneoperationer. Dock kan vi göra så, att vi på samma sätt reducerar våra två nya vektorer till fyra ännu kortare, så att arbetet igen halveras. På detta sätt fortsätter vi tills vi är klara (se nedan). Det gäller att fouriertransformen av en diskret funktion med perioden är (det konstanta) värdet självt: f(k) e 2πimk/ = f(k) k= Vi är alltså klara då vår procedur har upprepats log 2 N gånger, ty då har vi N små vektorer som alla innehåller exakt ett element. Vid varje log N steg beräknas alla N (temporära) koecienter, varför vi med denna metod har beräknat hela DFT:n med O(N log N) räkneoperationer. Märk att vi inte har specicerat vilken logaritm det är fråga om i O(N log N). Det handlar egentligen om 2-logaritmen, men detta spelar ingen roll, eftersom N > : log q N = log 2 N/ log 2 q. Alla logaritmer är alltså lika, på en konstant när, och då man pratar om körtiden O ( F (N) ) för en algoritm, bryr man sig inte om multiplikativa konstanter. För jämförelsens skull kan konstateras, att med N = 248 blir N 2 = 49434 och N log 2 N = 22528. Vi ser att FFT:n är av storleksordningen gånger snabbare i detta fall, men med ökande N blir naturligtvis nyttan större och större, då log 2 N växer mycket långsammare än N. För elementär teori om algoritmanalys, se [Weiss], kapitel 2. Observeras bör, att FFT:n i sig inte är en ny transform, utan enbart ett smartare sätt att beräkna en helt vanlig DFT. Lägg också märke till, att det är mycket lätt att på helt analogt sätt implementera en invers FFT, man låter bli att dividera med N och använder koecienterna w k = ω k = e 2πi/N istället för ω k ( jämför f (m) = Nf ( m) ). Exempel 2 Vi använder oss av funktionen f(t) = 3 cos(2πt) sin(6πt) som i exempel 9 på sidan 2. Vi har alltså N = 8, varför vi behöver log 2 8 = 3 iterationer för att beräkna hela FFT:n. Beräkningarna illustreras i schemat nedan, där vi dividerar bort N till sist, för åskådlighetens skull. Vi har för N = 8 följande värden på ω k : ω =, ω = e 2πi/8 = i 2, ω 2 = e πi/2 = i och ω 3 = e 3πi/4 = i 2. I, II och III står för situationen efter första, andra respektive tredje iterationen och exempelvis II 3 står för tredje delvektorn efter andra iterationen. (Kom ihåg att idén var att halvera vektorer.) 23
k f(k) I- I-2 3 3 + ( 3) = 2 [3 ( 3)] ω = 6 2 2 + ( 2) = 3 2 2 [ 2 ( 2)] ω = 2 2i 4 3 + ( ) = 5 2 [ ( )] ω 2 = 2i 6 2 2 + 2 2 = 7 2 2 [ 2 2 2 2] ω 3 = 4 + 4i k II- II-2 II-3 II-4 + 6 + ( 2i) 2 [ ] ω 3 [6 ( 2i)] ω 4 + 5 2 2i + 4 + 4i 6 [ ] ω 2 7 [2 2i (4 + 4i)] ω 2 k III- III-2 III-3 III-4 III-5 III-6 III-7 III-8 2 2 3 4i 4 5 4i 6 7 2 Nu har alla vektorer längden ett och slutligen samlar vi ihop koecienterna och dividerar dem med N = 8 och får alltså 3/2, m =, 7 i/2, m = 3 ĝ(m) = i/2, m = 5, annars Jämför detta med exempel 9 på sidan 2 vi ck exakt samma svar. Märk att vi använder ω 2 n k i n:te iterationen, inte ω k.. 24
Tolkningen av amplitudspektrumet är här, enligt tidigare, att vi har en ( komponent med amplituden 2 3 2 2) + 2 = 3 och frekvensen varv per samplingstid och en komponent med styrkan 2 2 + ( 3 2 2) = och frekvensen 3 varv per samplingstid. Då samplingstiden är precis en sekund, så blir de båda frekvenserna faktiskt Hz respektive 3 Hz, som väntat. (Kom ihåg, att amplitudspektrumet egentligen ger halva amplituden och att vi bara behöver betrakta ĝ(m) : m N/2.) En enkel, men något jobbig räkning visar, att vi för f L (T) får f(n) = 3/2, n = ± (3 cos 2πt sin 6πt) e 2πint i/2, n = 3 dt = i/2, n = 3, annars (Använd till exempel Eulers formler.) Om man betraktar 8-periodiciteten hos ĝ i detta exempel och i exempel 9, så stämmer resultaten precis. I fallen med DFT:n och FFT:n så är det fråga om en approximation, men här har vi ju exakt det svar vi hoppades få. Våra approximationer gav korrekta resultat, tack vare bandbegränsningen och en lämpligt vald samplingstid. Det exempel som vi har använt oss av är emellertid vilseledande enkelt, på grund av vi har samplat under exakt en av f : s perioder. I verkligheten har man i allmänhet inte denna möjlighet, utan man måste använda sig av så kallade fönsterfunktioner, som behandlas i avsnitt 9.. 8 Aliasing Genom att betrakta teorin för fouriertransformer av distributioner (speciellt Diracs deltadistribution och den så kallade Diracs kam) kan man visa att det som händer då man diskretiserar en periodisk signal f med samplingsfrekvensen 2F N och lagrar resultatet i g är, att man gör f:s spektrum periodiskt med perioden 2F N (i distributionsmening). Spektrumet klipps inte av vid skarvarna mellan perioderna, utan g:s spektrum är överlagringen av f:s spektrum förskjutet till punkterna, ±2F N, ±4F N,... Se [Gasquet], avsnitt 37.3. Om f är bandbegränsad till α < F N, så överlappar inte kopiorna av f:s spektrum varandra alls i g:s spektrum, eftersom f:s spektrum i distributionsmening har bredden högst 2α < 2F N. Shannons samplingsteorem säger, att då nns all information som behövs för att återskapa f kvar i ĝ. Det betyder 25
i sin tur, att f är helt bestämd av g. Det nns alltså exakt en funktion, som är bandbegränsad till α och interpolerar g. Se [Gasquet], introduktionen till lektion 38 och avsnitt 38.. Om man å andra sidan vill vara säker på att få ett korrekt resultat vid sampling med frekvensen 2F N (man vill ha en korrekt bild av frekvensinnehållet), så måste insignalen vara bandbegränsad till nyquistfrekvensen. Eftersom aliasing är ett fenomen som kan uppstå redan vid samplingen, är det nödvändigt att ltreringen görs innan samplingen äger rum. Sats 2 En komponent i en icke-diskretiserad insignal med frekvensen ±(F N + ξ), F N ξ > får efter sampling med samplingsfrekvensen 2F N exakt samma utseende som en frekvenskomponent med samma amplitud och fasförskjutning, men frekvensen (ξ F N ). Bevis: Den egentliga komponenten kan skrivas på formen u (t) = C e ±i2π(f N +ξ)t, där fasförskjutningen och amplituden innehålls i konstanten C. Vi bildar funktionen (aliasen) u 2 (t) = C e i2π(f N ξ)t och diskretiserar u och u 2 i punkterna t k = k/2f N, det vill säga k [, N ] : v (k) := u (k/2f N ) v 2 (k) := u 2 (k/2f N ). Då får vi att v v 2 är identiskt noll, varför de två diskretiserade komponenterna tydligen måste vara identiska och därmed är satsen bevisad. v v 2 =C e ±i2π(f N +ξ)k/2f N C e i2π(f N ξ)k/2f N [ =C e ±iπξk/f N e iπk e iπk] [ =C e ±iπξk/f N ( ) k ( ) k] =, k Z Anmärkning 22 Om ξ F N > F N, så fås genom upprepad användning av satsen, att aliasen är så högfrekvent, att den i sin tur får en alias med frekvensen ±(F N 2ξ) och så vidare. På så vis inser man, att en komponent med en frekvens utanför B = ( F N, F N ] alltid har en alias med frekvensen i B. Det att aliasen ibland har motsatt rotationsriktning gör inte att man i allmänhet kan skilja den från en äkta komponent med samma frekvens. Ett exempel på en situation då man i vardagen kan observera aliasing är att hjulen på en barnvagn kan se ut att rotera fel väg. 26
.5.5.2.4.6.8 t.2.4.6.8 t.5.5 Figur 6: Vi har två komponenter med frekvenserna 3 Hz respektive 7 Hz samplade med frekvensen Hz. Den reella delen nns till vänster och den imaginära till höger. Samplingspunkterna är inritade och vi ser att de två funktionerna interpolerar varandra i dessa, varför funktionerna efter sampling kommer att vara identiska. 9 Läckage och fönsterfunktioner I föregående avsnitt såg vi hur man kan använda DFT:n för att analysera vilka frekvenser som ingår i en signal. Det exemplet var emellertid förberett så att resultatet skulle bli enkelt. I allmänhet är insignalen inte periodisk (före man har klippt ut en bit och utvidgat den periodiskt), så det är omöjligt att sampla under en naturlig period och få så na analyser. För att illustrera detta, samplar vi en periodisk signal under en tid, som inte är en exakt period, för att se hur resultatet grumlas till. Ett annat sätt att se på saken är följande. I skarven mellan perioderna uppstår ofta diskontinuiteter i den periodiskt utvidgade funktionen. Dessa medför, att f(n) avtar ungefär som / n då n. Mycket långsamt med andra ord. DFT:n stryker de högre frekvenserna (vi antar att f är bandbegränsad), varför vi i allmänhet kan få ett märkbart trunkeringsfel. Vi samplar f (som fortfarande är som i de tidigare exemplen) under tiden π/2, alltså inte under exakt en period, med N = 32 och utför sedan en DFT (gärna en FFT) på den samplade och periodiskt utvidgade funktionen g. Resultatet blir som i gur 7. Vi ser, att vi inte längre har två klara stolpar i amplitudspektrumet, utan de har spritts ut. Detta fenomen kallas för läckage (engelska leakage), energi har läckt ut. Man brukar säga, att det har uppstått kjolar (skirts) i spektrumet. För att kunna analysera detta fenomen ordentligt, borde man använda sig av teorin för distributioner, men den är alltför omfattande för att kunna tas upp här. 27
.2.8.6.4.2 2 4 6 8 2 4 6 m Figur 7: g:s amplitudspektrum har inte riktigt det utseende, som vi önskar oss. En klar topp syns vid n = 2, vilket svarar mot frekvensen 2/a Hz = 2/(π/2) Hz = 4/π Hz, 27 Hz. Däremot syns toppen vid 3 Hz /π Hz, det vill säga n = 5 nästan inte alls. Man kan inte i allmänhet minska på läckaget enbart genom att öka samplingsfrekvensen, eftersom all extra information som därvid fås, går åt till att beskriva de högre frekvenskomponenterna (man får större N för samma a). En lösning på problemet är att multiplicera signalen med en fönsterfunktion (window function). Man brukar säga att man använder ett rektangulärt fönster, om man inte multiplicerar med någon speciell fönsterfunktion. Här presenteras ett så kallat hanningfönster (eller hannfönster ), men det nns också många andra fönster, med något olika egenskaper. För en mera ingående analys av olika fönsterfunktioner, se [Reichard], sidorna.23-.24. Se [Gasquet], avsnitt 4.2. Att kjolarna här ser ut just på detta sätt, beror på att vi har använt oss av ett rektangulärt fönster vid samplingen. Om vi betraktar m som en kontinuerlig variabel får vi att 28
N k : w(k)= = ŵ(m) = e 2πimk/N = e 2πim N N e k= [ ] 2 ŵ(m) = cos( 2πm) + sin 2 ( 2πm) N [ ] = 2 cos( 2πm/N) + sin 2 N ( 2πm/N) 2πim/N = se gur 8 och märk att m mod N [, N ] ŵ(m) =. cos(2πm) cos(2πm/n),.8.8.6.6.4.4.2.2 4 3 2 2 3 4 m 8 6 4 2 2 4 6 8 m Figur 8: Det rektangulära fönstrets ampitudspektrum som en kontinuerlig funktion. Märk, att ŵ(m) = δ m, om man endast betraktar m Z. Sidoloberna krymper långsamt och därmed är också sannolikheten stor, att vi ska träa på en sidolob. Funktionen f(t) w(t) diskretiseras alltså och transformeras, varvid fouriertransformen ( f w ) = f ŵ beräknas. Vi får alltså en (allmännare) faltning med fönsterfunktionens fouriertransform som resultat. Om vi samplar en sinusoid (sinus- eller cosinusfunktion) under ett helt antal perioder, så kommer ŵ att förskjutas så, att det enda bidraget till ( f ŵ)(k), alltså den transform vi egentligen beräknar, i en punkt kommer från mittloben i ŵ, eftersom alla andra termer i faltningen är noll, då ŵ är noll. Om vi däremot inte samplar under exakt en period, så kommer inte ŵ att förskjutas så, utan vi kommer att få bidrag också från sidoloberna. Exakt var på sidoloberna man träar är rätt så ointressant. Om man vill ha en skattning uppåt av läckaget, kan man använda sig av de lokala maxima i fönsterfunktionens amplitudspektrum. Se [Reichard], sidorna.9-.22. Fönsterfunktionerna minskar på läckage genom att göra sidoloberna lägre. En ideal fönsterfunktion förvränger amplituden så litet som möjligt, har en smal mittlob, för att inte ge dålig frekvensupplösning, och låga sidolober för att ge litet läckage. Alla hittils kända fönsterfunktioner är dock 29
en kompromiss av dessa egenskaper och beroende på tillämpning kan man välja ett lämpligt fönster. Man kan gärna komma ihåg, att egenskaperna hos fönsterfunktionerna ibland överskattas och för vanliga tillämpningar kan man i praktiken ofta välja vilken funktion som helst, som går från till och tillbaka till. En fönsterfunktion gör också rent konkret, att diskontinuiteterna i skarvarna försvinner (vid periodisk utvidgning av kontinuerliga funktioner). Ett hanningfönster är en upp-och-nervänd cosinusfunktion som normaliserats så, att den har största värdet ett och får värdet noll i samplingsintervallets ändpunkter: h(k) = 2 [ cos(2πk/n) ] För illustrationens skull skisserar vi hanningfönstrets amplitudspektrum (lägg märke till de låga sidoloberna) och eekten av användning av fönstret. Notera att mittloben är dubbelt så bred men bara hälften så hög hos hanningspektrumet, som hos det rektangulära fönstrets spektrum. Som exempel har vi tagit f(t) = 3 cos(2πt) sin(6πt) och multiplicerat med ett hanningfönster innan vi har beräknat spektrumet. I det första fallet blir resultatet sämre, då vi samplar under en hel naturlig period, men i det andra fallet blir det klart bättre (vi samplar här under tiden a = π/2). Man ser också, att vi inte får bättre resultat även om samplar med högre frekvens under samma tid (större N). Om vi vill få bättre upplösning i frekvensen, måste vi acceptera sämre upplösning i tiden och sampla under en längre tid. I den sista bilden har vi också samplat under dubbelt så lång tid med samma frekvens. Då får vi dubbelt så bra frekvensupplösning, och de båda topparna borde vara ungefär vid m = 3 och m = 9, 5. Avsikten med de heldragna linjerna mellan punkterna är enbart att göra bilden tydligare. Se [Reichard]. Sammandrag och problem Vi har sett hur man ska diskretisera en lågpassltrerad insignal med en frekvens större än dubbla bandgränsfrekvensen för att undvika aliasing, hur man sedan kan multiplicera det diskretiserade datat med en lämplig fönsterfunktion för att minska läckage och sedan transformera det med hjälp av en eektiv FFT. I frekvensplanet kan datat (frekvensinnehållet i signalen) sedan redigeras på önskat sätt, men dock med beaktande av en viss försiktighet, med tanke på att spektrumet sedan transformeras tillbaka till en faltning av den ursprungliga signalen och fouriertransformen av den funktion, som man har använt för 3
.5.4.3.2. 8 6 4 2 2 4 6 8 m.7.6.5.4.3.2. 2 4 6 8 m.6.5.4.3.2..7.6.5.4.3.2. 2 4 6 8 m 2 4 6 8 2 4 6 m Figur 9: Uppe till vänster nns hanningfönstrets spektrum avbildat. Då vi nere till höger samplar med dubbel frekvens får vi det spektrum som beskrivs av rutorna och då vi samplar under dubbelt så lång tid med samma frekvens får vi resultatet som ges av cirklarna. att redigera spektrumet. Ett spektrum kan exempelvis åskådliggöras graskt på olika sätt eller transformeras tillbaka till tidsplanet med hjälp av en IFFT. Så fungerar till exempel kausala digitala frekvenslter (FIR lter), enligt [Bourke]. Man kan också syntetisera en signal, genom att skapa ett frekvensspektrum och sedan utföra en IFFT på detta, för att få en diskretiserad signal, som innehåller just de frekvenskomponenter man önskar. Trots att fourieranalysen är mycket användbar, har den naturligtvis också nackdelar. Man utvecklar en funktion i en, förvisso ortogonal, men inte lokaliserad bas, eftersom e 2πint är aktiv överallt i alla intervall. Utvecklingarna bygger oftast på att ett stort antal termer upphäver varandra och därför kan man tänka sig, att man skulle kunna representera funktioner med en mindre mängd information, än vad fourieranalysen tillåter genom att använda en bas som är lokaliserad i både tid och frekvens. Ta till exempel 3
δ (m) = N N k= δ k e 2πimk/N = N e, m = δ (k) = N m= N e2πimk/n. Då man beräknar en STDFT, måste man sampla under en lång tid åt gången för att få en bra upplösning i spektrumet, men då förlorar man samtidigt noggrannhet i tiden, man måste alltid kompromissa mellan dessa två då man använder denna metod. (Ett försök att komma runt detta är, att använda sig av överlappande fönster.) Waveletanalysen påminner om fourieranalysen, men har era fördelar framom denna. Förenklat kan man säga att en waveletbas är en ortonormal bas av små vågpaket som byggs upp av en så kallad moderwavelet ψ. På moderwaveleten ställs naturligtvis en del krav, men den kan rätt långt formas lämplig efter tillämpning. Till exempel icke-periodiska pulserande signaler (EKG-signaler är ett exempel), som inte riktigt lämpar sig för fourieranalys, kan utvecklas i denna ortonormala bas, ofta med hjälp av mycket mindre data än fourieranalysen tillåter. Waveletanalysen är också sådan, att låga frekvenser har den långa utsträckning i tiden, som krävs för att få en hög frekvensupplösning medan högfrekventa vågpaket är korta, så att man kan lokalisera dem noggrannare i tiden. Vi har att ψ j,k (t) = 2 j/2 ψ(2 j t k), j, k Z, t R är en ortonormal bas för L 2 (R). Varje f L 2 (R) kan alltså skrivas f(t) = f, ψ j,k ψ j,k (t) i L 2. k Z j Z Se [Bachman], kapitel 7. 32
Symbol- och källförteckning Använda beteckningar Symbol Betydelse Z Mängden av heltal N Mängden av naturliga tal (inklusive ) R Mängden av reella tal C Mängden av komplexa tal F N Nyquistfrekvensen, 2F N = samplingsfrekvensen f Grundtonens frekvens, δ Kroneckers delta i Z respektive Π N f, f, F Fouriertransformen av f f Inversa fouriertransformen av f f g Punktvisa produkten av f och g f, g Inre produkten av f och g (i denna ordning) f g Faltningen av f och g Källor [Arfken] Mathematical Methods for Physicists - G. Arfken, H. Weber - Academic Press 999 [Bachman] Fourier and Wavelet Analysis - G. Bachman, L. Narici, E. Beckenstein - Springer 2 [Gasquet] Fourier Analysis and Applications - C. Gasquet, P. Witomski - Springer 999 [Persson] Analys i en variabel - A. Person, L-C Böiers - Studentlitteratur 99 [Royden] Real Analysis - H. L. Royden - Macmillan 998 [Weiss] Data Structures and Algorithm Analysis in Java - M. A. Weiss - Addison-Wesley 999 33
Från Internet [Bourke] Fourier Method of Designing Digital Filters - P. Bourke - Internet 999 http://astronomy.swin.edu.au/pbourke/analysis/lter [Cohen] Wavelets - A New Orthonormal Basis - J. Cohen - Internet 992 http://www.cwp.mines.edu/wavelets/uncompressed/tutor.ps (Verkar inte nnas i WWW för tillfället.) [Cowtan] Kevin Cowtan's Book of Fourier - K. Cowtan - Internet http://www.ysbl.york.ac.uk/~cowtan/fourier/fourier.html [FFTW] The Fastest Fourier Transform in the West - Massachusetts Institute of Technology - Internet 999 http://www.tw.org [Press] Numerical Recipes in C: The Art of Scientic Computing - W. H. Press, S. A. Teukolsky, W. T. Vetterling, B. P. Flannery - Internet 992 http://www.ulib.org/webroot/books/numerical_recipes/bookcpdf.html [Reichard] Discrete Fourier Transform Analysis of Signals - K. M. Reichard - Internet 2 http://www.ece.orst.edu/~ece352/lecture_notes/ FFT_application_notes.pdf [Smith] The Scientist and Engineer's Guide to Digital Signal Processing - S. W. Smith - Internet 997 http://www.dspguide.com/pdfbook.htm [Sprenger] The DSP Dimension - S. M. Sprenger - Internet 2 http://www.dspdimension.com/pdf/dspdimension.pdf [Syreeni] Hearing, Physiological and Psychological Aspects of - S. Syreeni - Internet 2 http://www.helsinki./~ssyreeni/dsound/dsndc4.en.html 34