Fourier-muunnoksen käytännön sovellus signaalianalyysiin. Johdanto aloittelijoille

Uskon, että kaikki yleisesti ottaen tietää sellaisen upean matemaattisen työkalun kuin Fourier-muunnos olemassaolosta. Yliopistoissa sitä opetetaan kuitenkin jostain syystä niin huonosti, että suhteellisen harvat ymmärtävät, miten tämä muutos toimii ja miten sitä pitäisi käyttää oikein. Samaan aikaan tämän muunnoksen matematiikka on yllättävän kaunista, yksinkertaista ja tyylikästä. Kehotan kaikkia oppimaan hieman lisää Fourier-muunnoksesta ja siihen liittyvästä aiheesta, kuinka analogiset signaalit voidaan muuntaa tehokkaasti digitaalisiksi laskennallista käsittelyä varten.

Ilman monimutkaisia ​​kaavoja ja Matlabia yritän vastata seuraaviin kysymyksiin:

  • FT, DTF, DTFT - mitkä ovat erot ja miten näennäisesti täysin erilaiset kaavat antavat näin käsitteellisesti samanlaisia ​​tuloksia?
  • Kuinka tulkita FFT (Fast Fourier Transform) -tulokset oikein
  • Mitä tehdä, jos annetaan 179 näytteen signaali ja FFT vaatii tulona sekvenssin, jonka pituus on yhtä suuri kuin kahden teho
  • Miksi, kun yritetään saada sinusoidin spektriä Fourierilla, odotetun yksittäisen "tikkun" sijasta tulee kuvaajaan outo kiemura ja mitä sille voidaan tehdä
  • Miksi analogiset suodattimet asetetaan ennen ADC:tä ja DAC:n jälkeen?
  • Onko mahdollista digitoida ADC-signaali taajuudella, joka on suurempi kuin puolet näytteenottotaajuudesta (koulun vastaus on väärä, oikea vastaus on mahdollista)
  • Kuinka digitaalinen sekvenssi palauttaa alkuperäisen signaalin

Lähden siitä olettamuksesta, että lukija ymmärtää mikä on integraali, kompleksiluku (samoin kuin sen moduuli ja argumentti), funktioiden konvoluutio ja ainakin "sormilla" kuvittelee mikä on Diracin deltafunktio. En tiedä - sillä ei ole väliä, lue yllä olevat linkit. Tässä tekstissä "funktioiden tulolla" tarkoitan aina "pisteittäistä kertolaskua"

Meidän pitäisi luultavasti aloittaa siitä tosiasiasta, että tavallinen Fourier-muunnos on jonkinlainen asia, joka, kuten nimestä voi arvata, muuntaa funktion toiseksi, eli antaa jokaiselle reaalimuuttujan x (t) funktiolle sen spektrin. tai Fourier-kuva y (w):

Jos annamme analogioita, niin esimerkki merkitykseltään samankaltaisesta muunnoksesta voi olla esimerkiksi differentiaatio, joka muuttaa funktion johdannaiseksi. Toisin sanoen Fourier-muunnos on itse asiassa sama operaatio kuin derivaatan ottaminen, ja sitä merkitään usein samalla tavalla piirtämällä funktion päälle kolmiomainen "cap". Vain toisin kuin differentiaatio, joka voidaan määritellä myös reaaliluvuille, Fourier-muunnos ”toimii” aina yleisemmillä kompleksiluvuilla. Tästä johtuen tämän muunnoksen tulosten näyttämisessä syntyy jatkuvasti ongelmia, koska kompleksilukuja ei määritetä yhdellä, vaan kahdella koordinaatilla reaaliluvuilla toimivassa kaaviossa. Kätevin tapa on yleensä esittää kompleksiluvut moduulina ja argumenttina ja piirtää ne erikseen kahdeksi erilliseksi kaavioksi:

Kompleksisen arvon argumentin kuvaajaa kutsutaan usein tässä tapauksessa "vaihespektriksi", ja moduulin kuvaajaa kutsutaan usein "amplitudispektriksi". Amplitudispektri on pääsääntöisesti kiinnostavampi, ja siksi spektrin "vaihe"-osa ohitetaan usein. Tässä artikkelissa keskitymme myös "amplitudi"-asioihin, mutta emme saa unohtaa kaavion puuttuvan vaiheosan olemassaoloa. Lisäksi tavallisen kompleksiarvon moduulin sijaan piirretään usein sen logaritmi kertaa 10. Tuloksena on logaritminen käyrä, jonka arvot näytetään desibeleinä (dB).

Huomaa, että ei kovin paljon negatiivisia lukuja logaritminen kuvaaja (-20 dB tai vähemmän) vastaavat samalla melkein nolla numeroa tavallisella kaaviolla. Siksi tällaisten kaavioiden eri spektrien pitkät ja leveät "hännät", kun ne näytetään "tavallisissa" koordinaateissa, yleensä katoavat. Tällaisen näennäisesti oudolta näyttävän esityksen mukavuus johtuu siitä, että eri funktioiden Fourier-muunnokset on usein kerrottava keskenään. Tällaisella kompleksiarvoisten Fourier-kuvien pisteittäisellä kertolaskulla niiden vaihespektrit lisätään ja niiden amplitudispektrit kerrotaan. Ensimmäinen on helppo tehdä, kun taas toinen on suhteellisen vaikea. Amplitudin logaritmit kuitenkin lisätään amplitudeja kerrottaessa, joten logaritmiset amplitudikuvaajat voidaan vaihekaavioiden tapaan yksinkertaisesti lisätä piste pisteeltä. Lisäksi käytännön ongelmissa on usein kätevämpää toimia ei signaalin "amplitudilla", vaan sen "teholla" (amplitudin neliö). Logaritmisella asteikolla molemmat kaaviot (sekä amplitudi että teho) näyttävät identtisiltä ja eroavat vain kertoimella - kaikki tehokäyrän arvot ovat täsmälleen kaksi kertaa suurempia kuin amplitudiasteikolla. Vastaavasti tehon taajuusjakauman piirtämiseksi (desibeleinä) et voi neliöida mitään, vaan laskea desimaalilogaritmin ja kertoa sen 20:llä.

Oletko tylsistynyt? Odota, vielä vähän, kun artikkelin tylsä ​​osa, jossa selitetään kaavioiden tulkintaa, valmistuu pian :). Mutta ennen sitä, yksi erittäin tärkeä asia on ymmärtää, että vaikka kaikki yllä olevat spektrikaaviot piirrettiin joillekin rajoitetuille arvoalueille (erityisesti positiivisille luvuille), kaikki nämä kaaviot itse asiassa jatkuvat plus- ja miinus-äärettömyyteen. Kaaviot yksinkertaisesti kuvaavat jonkin "merkittävimmän" osan kaaviosta, jota yleensä peilataan negatiiviset arvot ja se toistetaan usein ajoittain jollain askeleella, jos tarkastellaan sitä suuremmassa mittakaavassa.

Kun on päätetty, mitä kaavioihin piirretään, palataan takaisin Fourier-muunnokseen itseensä ja sen ominaisuuksiin. On useita eri tavoilla kuinka määritellä tämä pienissä yksityiskohdissa poikkeava muunnos (eri normalisoinnit). Esimerkiksi yliopistoissamme käytetään jostain syystä usein Fourier-muunnoksen normalisointia, joka määrittää spektrin kulmataajuudella (radiaaneja sekunnissa). Käytän kätevämpää länsimaista muotoilua, joka määrittelee spektrin tavanomaisen taajuuden (hertsi) suhteen. Suorat ja käänteiset Fourier-muunnokset määritellään tässä tapauksessa vasemmalla olevilla kaavoilla, ja jotkut tämän muunnoksen ominaisuuksista, joita tarvitsemme, ovat seitsemän kohteen luettelo oikealla:

Ensimmäinen näistä ominaisuuksista on lineaarisuus. Jos otamme jonkin lineaarisen funktioiden yhdistelmän, niin tämän yhdistelmän Fourier-muunnos on sama näiden funktioiden Fourier-kuvien lineaarinen yhdistelmä. Tämän ominaisuuden avulla voit vähentää monimutkaiset toiminnot ja niiden Fourier muuttuu yksinkertaisemmiksi. Esimerkiksi sinimuotoisen funktion Fourier-muunnos taajuudella f ja amplitudilla a on yhdistelmä kahdesta deltafunktiosta, jotka sijaitsevat pisteissä f ja -f ja joiden kerroin on a/2:

Jos otamme funktion, joka koostuu eritaajuisten sinimuotoisten joukon summasta, niin tämän funktion Fourier-muunnos koostuu lineaarisuusominaisuuden mukaan vastaavasta delta-funktioiden joukosta. Tämä mahdollistaa naiivin, mutta visuaalisen tulkinnan spektristä periaatteen mukaisesti "jos funktion spektrissä taajuus f vastaa amplitudia a, niin alkuperäinen funktio voidaan esittää siniaaltojen summana, joista yksi olla sinimuoto, jonka taajuus on f ja amplitudi 2a”. Tarkkaan ottaen tämä tulkinta on virheellinen, koska delta-funktio ja piste graafissa ovat täysin eri asioita, mutta kuten tulemme näkemään edelleen, diskreettien Fourier-muunnosten kohdalla se ei ole niin kaukana totuudesta.

Fourier-muunnoksen toinen ominaisuus on amplitudispektrin riippumattomuus signaalin aikasiirtymästä. Jos siirrämme funktiota vasemmalle tai oikealle x-akselia pitkin, vain sen vaihespektri muuttuu.

Kolmas ominaisuus - alkuperäisen funktion venytys (kompressio) aika-akselilla (x) puristaa (venyttyy) suhteellisesti sen Fourier-muunnoksen taajuusasteikkoa (w) pitkin. Erityisesti rajallisen kestoisen signaalin spektri on aina äärettömän leveä, ja päinvastoin äärellisen leveä spektri vastaa aina kestoltaan rajoittamattoman signaalia.

Neljäs ja viides ominaisuus ovat ehkä hyödyllisimpiä kaikista. Niiden avulla on mahdollista pelkistää funktioiden konvoluutio Fourier-muunnosten pisteittäiseen kertolaskuun ja päinvastoin - funktioiden pisteittäinen kertolasku niiden Fourier-muunnosten konvoluutioon. Vähän pidemmälle näytän kuinka kätevä se on.

Kuudes ominaisuus puhuu Fourier-kuvien symmetriasta. Tästä ominaisuudesta seuraa erityisesti, että reaaliarvoisen funktion (eli minkä tahansa "todellisen" signaalin) Fourier-muunnoksessa amplitudispektri on aina tasainen toiminto, ja vaihespektri (jos se pienennetään alueelle -pi...pi) on pariton. Tästä syystä spektrin negatiivista osaa ei juuri koskaan piirretä spektrikaavioihin - reaaliarvoisille signaaleille se ei anna uutta tietoa (mutta toistan, se ei ole myöskään nolla).

Lopuksi viimeinen, seitsemäs ominaisuus, sanoo, että Fourier-muunnos säilyttää signaalin "energian". Se on merkityksellinen vain kestoltaan äärellisille signaaleille, joiden energia on äärellinen, ja se sanoo, että tällaisten signaalien spektri äärettömässä lähestyy nopeasti nollaa. Juuri tästä ominaisuudesta johtuen spektrikaavioissa on yleensä vain "pääosa" signaalista, joka kuljettaa leijonanosan energiasta - kaavion muu osa yksinkertaisesti pyrkii nollaan (mutta jälleen kerran , se ei ole nolla).

Näillä seitsemällä ominaisuudella varustettuna tarkastellaan signaalin "digitoinnin" matematiikkaa jatkuvan signaalin muuntamiseksi numerosarjaksi. Tätä varten meidän on otettava toiminto, joka tunnetaan nimellä "Dirac-kampa":

Dirac-kampa on yksinkertaisesti jaksollinen yksikkökolmiofunktioiden sarja, joka alkaa nollasta ja jatkuu vaiheeseen T. Signaalien digitoimiseksi T valitaan mahdollisimman pieneksi, T.<<1. Фурье-образ этой функции - тоже гребенка Дирака, только с гораздо большим шагом 1/T и несколько меньшим коэффициентом (1/T). С математической точки зрения, дискретизация сигнала по времени - это просто поточечное умножение исходного сигнала на гребенку Дирака. Значение 1/T при этом называют частотой дискретизации:

Jatkuvan funktion sijasta tällaisen kertolaskun jälkeen saadaan tietynkorkuisten deltapulssien sarja. Tässä tapauksessa Fourier-muunnoksen ominaisuuden 5 mukaan tuloksena olevan diskreetin signaalin spektri on alkuperäisen spektrin konvoluutio vastaavalla Dirac-kammalla. On helppo ymmärtää, että konvoluution ominaisuuksien perusteella alkuperäisen signaalin spektri "kopioidaan" äärettömän monta kertaa taajuusakselia pitkin askeleella 1/T ja sitten summataan. .

Huomaa, että jos alkuperäisellä spektrillä oli rajallinen leveys ja käytimme riittävän suurta näytteenottotaajuutta, niin alkuperäisen spektrin kopiot eivät mene päällekkäin, eivätkä siksi liity toisiinsa. On helppo ymmärtää, että alkuperäisen spektrin palauttaminen tällaisesta "taitetusta" spektristä on helppoa - riittää, että otat spektrin komponentin nollan alueelta, "leikkaamalla" ylimääräiset kopiot. äärettömään. Yksinkertaisin tapa tehdä tämä on kertoa spektri suorakaiteen muotoisella funktiolla, joka on yhtä suuri kuin T alueella -1/2T...1/2T ja nolla tämän alueen ulkopuolella. Samanlainen Fourier-muunnos vastaa funktiota sinc (Tx) ja ominaisuuden 4 mukaan tällainen kertolasku vastaa deltafunktioiden alkuperäisen sekvenssin konvoluutiota funktiolla sinc(Tx)



Eli Fourier-muunnoksen avulla saimme tavan palauttaa helposti alkuperäinen signaali aikanäytteitetystä signaalista, joka toimii edellyttäen, että käytämme vähintään kaksinkertaista näytteenottotaajuutta (johtuen negatiivisten taajuuksien esiintymisestä spektrissä ) alkuperäisen signaalin suurin taajuus. Tämä tulos on laajalti tunnettu ja sitä kutsutaan Kotelnikov / Shannon-Nyquistin lauseeksi. Kuitenkin, kuten nyt on helppo nähdä (todisteen ymmärtäminen), tämä tulos, toisin kuin laajalle levinnyt väärinkäsitys, määrittää riittävä, mutta ei tarpeellista ehto alkuperäisen signaalin palauttamiseksi. Tarvitsemme vain varmistaa, että meitä kiinnostava spektrin osa signaalin näytteenoton jälkeen ei mene päällekkäin ja jos signaali on riittävän kapeakaistainen (sillä on pieni "leveys" signaalin nollasta poikkeavasta osasta). spektri), tämä tulos voidaan usein saavuttaa jopa näytteenottotaajuudella, joka on paljon pienempi kuin kaksi kertaa signaalin enimmäistaajuus. Tätä tekniikkaa kutsutaan "alinäytteitykseksi" (alinäytteitys, kaistanpäästösampling) ja sitä käytetään melko laajalti kaikenlaisten radiosignaalien käsittelyssä. Esimerkiksi, jos otamme FM-radion, joka toimii taajuusalueella 88 - 108 MHz, niin sen digitoimiseen voidaan käyttää vain 43,5 MHz:n ADC:tä Kotelnikov-lauseen oletetun 216 MHz:n sijaan. Tässä tapauksessa tarvitset kuitenkin laadukkaan ADC:n ja hyvän suodattimen.

Huomautan, että korkeiden taajuuksien "kaksoistaminen" alemman asteen taajuuksilla (aliasing) on ​​signaalinäytteistyksen suora ominaisuus, joka "pilaa" tuloksen peruuttamattomasti. Siksi, jos signaalissa voi periaatteessa (eli lähes aina) olla korkealuokkaisia ​​taajuuksia, ADC:n eteen asetetaan analoginen suodatin, joka "leikkaa" kaiken tarpeettoman suoraan alkuperäisestä signaalista (koska se liian myöhäistä tehdä tämä näytteenoton jälkeen). Näiden suodattimien ominaisuudet analogisina laitteina eivät ole ihanteellisia, joten jonkin verran signaalin "vaurioita" esiintyy edelleen, ja käytännössä tästä seuraa, että spektrin korkeimmat taajuudet ovat yleensä epäluotettavia. Tämän ongelman lieventämiseksi ei ole harvinaista ottaa signaalia näytteitetyllä taajuudella, samalla kun analoginen tulosuodatin asetetaan pienemmälle kaistanleveydelle ja käytetään vain ADC:n teoreettisesti käytettävissä olevan taajuusalueen alaosaa.

Toinen yleinen väärinkäsitys on muuten, kun signaali DAC:n lähdössä piirretään "askeleina". "Askelet" vastaavat näytteitetyn signaalisekvenssin konvoluutiota, jonka suorakulmainen funktio leveys T ja korkeus 1:

Tällaisella muunnoksella signaalin spektri kerrotaan tämän suorakulmaisen funktion Fourier-muunnolla, ja samanlaiselle suorakaiteen funktiolle se taas sinc(w), "venytetään" mitä voimakkaammin, mitä pienempi on vastaavan suorakulmion leveys. Näytteistyn signaalin spektri, jolla on samanlainen "DAC", kerrotaan pisteittäin tällä spektrillä. Tässä tapauksessa tarpeettomia korkeita taajuuksia spektrin "ylimääräisillä kopioilla" ei katkaista kokonaan, ja spektrin "hyödyllisen" osan yläosa päinvastoin heikkenee.

Käytännössä tätä ei tietenkään tee kukaan. DAC:n rakentamiseen on monia erilaisia ​​lähestymistapoja, mutta jopa kaikkein samankaltaisissa painotustyypeissä DAC:issa päinvastoin suorakaiteen muotoiset pulssit valitaan DAC:ssa mahdollisimman lyhyiksi (lähestyen todellista deltatoimintojen sarjaa), jotta vältetään tarpeeton vaimennus. spektrin hyödyllisestä osasta. Tuloksena olevan laajakaistasignaalin "ylimääräiset" taajuudet vaimennetaan lähes aina johtamalla signaali analogisen alipäästösuodattimen läpi, joten muuntimen "sisällä" tai sen lähdössä ei ole "digitaalisia askelia".

Palataan kuitenkin Fourier-muunnokseen. Edellä kuvattua Fourier-muunnosta, joka on sovellettu esinäytteistettyyn signaalisekvenssiin, kutsutaan Diskreettiaikaiseksi Fourier-muunnokseksi (DTFT). Tällaisella muunnoksella saatu spektri on aina 1/T-jaksollinen, joten DTFT-spektri määräytyy kokonaan sen segmentin arvojen perusteella)