Fourier' teisenduse praktiline rakendamine signaali analüüsiks. Sissejuhatus algajatele

Usun, et kõike üldiselt teada sellise imelise matemaatilise tööriista nagu Fourier' teisendus olemasolust. Ülikoolides õpetatakse seda aga millegipärast nii halvasti, et suhteliselt vähesed saavad aru, kuidas see transformatsioon käib ja kuidas seda õigesti kasutada tuleks. Samal ajal on selle teisenduse matemaatika üllatavalt ilus, lihtne ja elegantne. Kutsun kõiki üles õppima Fourier' teisenduse ja sellega seotud teema kohta, kuidas saab analoogsignaale arvutuslikuks töötlemiseks efektiivselt digitaalseks teisendada.

Ilma keerulisi valemeid ja Matlabi kasutamata proovin vastata järgmistele küsimustele:

  • FT, DTF, DTFT – millised on erinevused ja kuidas annavad pealtnäha täiesti erinevad valemid nii kontseptuaalselt sarnaseid tulemusi?
  • Kuidas õigesti tõlgendada kiire Fourier' teisenduse (FFT) tulemusi
  • Mida teha, kui antakse 179 näidist koosnev signaal ja FFT nõuab sisendiks pikkust, mis võrdub kahe võimsusega
  • Miks tuleb Fourier' abil sinusoidi spektrit hankides graafikule oodatud ühe "pulga" asemel kummaline vingerpuss ja mida sellega teha saab
  • Miks asetatakse analoogfiltrid enne ADC-d ja pärast DAC-i?
  • Kas on võimalik digiteerida ADC signaali sagedusega, mis on suurem kui pool diskreetimissagedusest (kooli vastus on vale, õige vastus on võimalik)
  • Kuidas digitaalne jada algse signaali taastab

Lähtun eeldusest, et lugeja saab aru, mis on integraal, kompleksarv (nagu ka selle moodul ja argument), funktsioonide konvolutsioon, pluss vähemalt “näppude peal” kujutab ette, mis on Diraci delta funktsioon. Ei tea - see pole oluline, lugege ülaltoodud linke. "Funktsioonide korrutise" all pean selles tekstis alati silmas "punktkorrutamist".

Peaksime ilmselt alustama sellest, et tavaline Fourier' teisendus on mingi asi, mis, nagu nimest võib aimata, teisendab ühe funktsiooni teiseks, st määrab reaalse muutuja x (t) igale funktsioonile selle spektri. või Fourier kujutis y (w):

Kui tuua analoogiaid, siis tähenduselt sarnase teisenduse näide võib olla näiteks diferentseerimine, mis muudab funktsiooni selle tuletiseks. See tähendab, et Fourier' teisendus on tegelikult sama toiming, mis tuletise võtmine ja seda tähistatakse sageli sarnaselt, tõmmates funktsiooni kohale kolmnurkse "korgi". Ainult erinevalt diferentseerimisest, mida saab defineerida ka reaalarvude jaoks, "töötab" Fourier' teisendus alati üldisemate kompleksarvudega. Seetõttu tekivad selle teisenduse tulemuste kuvamisel pidevalt probleeme, kuna kompleksarvud määratakse reaalarvudega töötaval graafikul mitte ühe, vaid kahe koordinaadiga. Kõige mugavam on reeglina esitada kompleksarvud moodulina ja argumendina ning joonistada need eraldi kahe eraldi graafikuna:

Kompleksväärtuse argumendi graafikut nimetatakse sel juhul sageli "faasispektriks" ja mooduli graafikut nimetatakse sageli "amplituudispektriks". Amplituudispekter pakub reeglina palju suuremat huvi ja seetõttu jäetakse spektri "faasi" osa sageli vahele. Selles artiklis keskendume ka "amplituudi" asjadele, kuid me ei tohiks unustada graafiku puuduva faasiosa olemasolu. Lisaks joonistatakse sageli kompleksväärtuse tavapärase mooduli asemel selle logaritm, mis on korrutatud 10-ga. Tulemuseks on logaritmiline graafik, mille väärtused kuvatakse detsibellides (dB).

Pange tähele, et mitte väga palju negatiivsed arvud logaritmiline graafik (-20 dB või vähem) vastavad samal ajal peaaegu null numbrit tavalisel diagrammil. Seetõttu kaovad sellistel graafikutel erinevate spektrite pikad ja laiad “sabad”, kui neid kuvatakse “tavalistes” koordinaatides, reeglina praktiliselt ära. Sellise pealtnäha kummalise esituse mugavus tuleneb sellest, et erinevate funktsioonide Fourier’ teisendusi tuleb sageli omavahel korrutada. Sellise kompleksväärtusega Fourier kujutiste punktkorrutise korral liidetakse nende faasispektrid ja korrutatakse nende amplituudspektrid. Esimest on lihtne teha, teist aga suhteliselt raske. Amplituudide korrutamisel aga liidetakse amplituudi logaritmid, seega saab logaritmilisi amplituudigraafikuid sarnaselt faasigraafikutele lihtsalt punkt-punkti haaval liita. Lisaks on praktilistes probleemides sageli mugavam opereerida mitte signaali "amplituudiga", vaid selle "võimsusega" (amplituudi ruut). Logaritmilisel skaalal näevad mõlemad graafikud (nii amplituud kui ka võimsus) identsed ja erinevad ainult koefitsiendi poolest - kõik võimsusgraafiku väärtused on täpselt kaks korda suuremad kui amplituudi skaalal. Sellest tulenevalt ei saa võimsuse sagedusjaotuse (detsibellides) joonistamiseks midagi ruutu panna, vaid arvutada kümnendlogaritm ja korrutada see 20-ga.

On sul igav? Oodake, veel veidi, artikli igava osaga, mis selgitab diagrammide tõlgendamist, lõpetame varsti :). Kuid enne seda on väga oluline mõista, et kuigi kõik ülaltoodud spektrigraafikud on koostatud teatud piiratud väärtusvahemike jaoks (eriti positiivsete arvude jaoks), jätkuvad kõik need graafikud tegelikult pluss- ja miinuslõpmatuseni. Graafikud lihtsalt kujutavad mõnda graafiku kõige tähendusrikkamat osa, mida tavaliselt peegeldatakse negatiivsed väärtused parameeter ja seda korratakse sageli perioodiliselt mõne sammuga, kui seda suuremas plaanis arvestada.

Olles otsustanud, mis graafikutele joonistatakse, tuleme tagasi Fourier' teisenduse enda ja selle omaduste juurde. Neid on mitu erinevatel viisidel kuidas defineerida seda väikeste detailide poolest erinevat teisendust (erinevad normaliseerimised). Näiteks meie ülikoolides kasutatakse millegipärast sageli spektrit nurksageduse (radiaani sekundis) määrava Fourier' teisenduse normaliseerimist. Kasutan mugavamat lääne sõnastust, mis määrab spektri tavalise sageduse (hertsi) järgi. Fourier' otsesed ja pöördteisendused on sel juhul määratletud vasakpoolsete valemitega ja mõned selle teisenduse omadused, mida me vajame, on seitsmest paremal asuvast üksusest koosnev loend:

Esimene neist omadustest on lineaarsus. Kui võtta mõni funktsioonide lineaarne kombinatsioon, siis selle kombinatsiooni Fourier' teisendus on sama lineaarne kombinatsioon nende funktsioonide Fourier' kujutistest. See omadus võimaldab teil vähendada keerukad funktsioonid ja nende Fourier muundub lihtsamateks. Näiteks sagedusega f ja amplituudiga a sinusoidse funktsiooni Fourier' teisendus on kahe punktides f ja -f paikneva deltafunktsiooni kombinatsioon koefitsiendiga a/2:

Kui võtta funktsioon, mis koosneb erineva sagedusega sinusoidide hulga summast, siis vastavalt lineaarsusomadusele koosneb selle funktsiooni Fourier' teisendus vastavast deltafunktsioonide hulgast. See võimaldab anda spektrist naiivse, kuid visuaalse tõlgenduse põhimõttel „kui funktsiooni spektris vastab sagedus f amplituudile a, siis saab algfunktsiooni esitada sinusoidide summana, millest üks olema sinusoid sagedusega f ja amplituudiga 2a”. Rangelt võttes on see tõlgendus vale, kuna deltafunktsioon ja punkt graafikul on täiesti erinevad asjad, kuid nagu me edaspidi näeme, ei ole see diskreetsete Fourier' teisenduste puhul tõest nii kaugel.

Fourier' teisenduse teine ​​omadus on amplituudispektri sõltumatus signaali ajalisest nihkest. Kui liigutada funktsiooni piki x-telge vasakule või paremale, siis muutub ainult selle faasispekter.

Kolmas omadus - algfunktsiooni venitamine (kokkusurumine) piki ajatelge (x) surub proportsionaalselt kokku (venitab) selle Fourier' teisenduse piki sagedusskaalat (w). Eelkõige on lõpliku kestusega signaali spekter alati lõpmatult lai ja vastupidi, lõpliku laiusega spekter vastab alati piiramatu kestusega signaalile.

Neljas ja viies omadus on ehk kõige kasulikumad. Need võimaldavad taandada funktsioonide konvolutsiooni nende Fourier' teisenduste punktkorrutisele ja vastupidi - funktsioonide punktkorrutisele nende Fourier' teisenduste konvolutsioonile. Veidi edasi näitan, kui mugav see on.

Kuues omadus räägib Fourier kujutiste sümmeetriast. Eelkõige tuleneb sellest omadusest, et reaalväärtusega funktsiooni (st mis tahes "päris" signaali) Fourier' teisenduses on amplituudispekter alati ühtlane funktsioon, ja faasispekter (kui see taandatakse vahemikku -pi...pi) on paaritu. Just sel põhjusel ei joonista spektri graafikutele peaaegu kunagi spektri negatiivset osa - reaalväärtuslike signaalide puhul ei anna see uut teavet (kuid kordan, see pole ka null).

Lõpuks, viimane, seitsmes omadus, ütleb, et Fourier' teisendus säilitab signaali "energia". See on mõttekas ainult piiratud kestusega signaalide puhul, mille energia on lõplik, ja ütleb, et selliste signaalide spekter lõpmatuses läheneb kiiresti nullile. Just selle omaduse tõttu on spektrigraafikutel reeglina kujutatud ainult signaali “põhiosa”, mis kannab lõviosa energiast - ülejäänud graafik kipub lihtsalt nulli (aga jällegi , see ei ole null).

Olles relvastatud nende 7 omadusega, heidame pilgu signaali "digiteerimise" matemaatikale, et tõlkida pidev signaal numbrijadaks. Selleks peame võtma funktsiooni, mida tuntakse kui "Dirac kamm":

Diraci kamm on lihtsalt ühtsete deltafunktsioonide perioodiline jada, mis algab nullist ja jätkub sammuga T. Signaalide digiteerimiseks valitakse T võimalikult väike, T.<<1. Фурье-образ этой функции - тоже гребенка Дирака, только с гораздо большим шагом 1/T и несколько меньшим коэффициентом (1/T). С математической точки зрения, дискретизация сигнала по времени - это просто поточечное умножение исходного сигнала на гребенку Дирака. Значение 1/T при этом называют частотой дискретизации:

Pideva funktsiooni asemel saadakse pärast sellist korrutamist teatud kõrgusega deltaimpulsside jada. Sel juhul on Fourier' teisenduse omaduse 5 järgi saadud diskreetse signaali spekter algse spektri konvolutsioon vastava Diraci kammiga. On lihtne aru saada, et konvolutsiooni omaduste põhjal algse signaali spekter justkui “kopeeritakse” lõpmatu arv kordi mööda sagedustelge sammuga 1/T ja seejärel summeeritakse. .

Pange tähele, et kui algsel spektril oli piiratud laius ja me kasutasime piisavalt kõrget diskreetimissagedust, siis algse spektri koopiad ei kattu ja seetõttu ei liideta neid üksteisega. On lihtne mõista, et sellisest "volditud" spektrist on algset spektrit lihtne taastada - piisab, kui võtta spektri komponent nulli piirkonnas, "lõigates ära" täiendavad koopiad, mis lähevad. lõpmatuseni. Lihtsaim viis selleks on korrutada spekter ristkülikukujulise funktsiooniga, mis võrdub T-ga vahemikus -1/2T...1/2T ja nulliga väljaspool seda vahemikku. Sarnane Fourier' teisendus vastab funktsioonile sinc (Tx) ja vastavalt omadusele 4 on selline korrutamine samaväärne deltafunktsioonide algse jada konvolutseerimisega funktsiooniga sinc(Tx)



See tähendab, et Fourier' teisenduse abil saime võimaluse hõlpsalt taastada algne signaal ajadiskreetiga signaalist, töötades tingimusel, et kasutame diskreetimissagedust, mis on vähemalt kaks korda suurem (negatiivsete sageduste olemasolu tõttu spekter) suurem kui algses signaalis esinev maksimaalne sagedus. See tulemus on laialt tuntud ja seda nimetatakse Kotelnikovi / Shannon-Nyquisti teoreemiks. Kuid nagu praegu on lihtne näha (tõestusest aru saades), määrab see tulemus vastupidiselt laialt levinud väärarusaamale piisav, kuid mitte vajalik algse signaali taastamise tingimus. Peame vaid tagama, et meid huvipakkuv spektri osa pärast signaali diskreetimist ei kattuks üksteisega ja kui signaal on piisavalt kitsaribaline (sellel on nullist erineva osa väike laius). spekter), siis on see tulemus sageli saavutatav isegi diskreetimissagedusega, mis on palju väiksem kui kahekordne maksimaalne signaali sagedus. Seda tehnikat nimetatakse "aladiskreetimiseks" (aladiskreetimine, ribapääsu diskreetimine) ja seda kasutatakse üsna laialdaselt igasuguste raadiosignaalide töötlemisel. Näiteks kui võtta sagedusalas 88–108 MHz töötav FM-raadio, siis selle digiteerimiseks saame kasutada Kotelnikovi teoreemiga eeldatud 216 MHz asemel ADC-d, mille sagedus on vaid 43,5 MHz. Sel juhul on aga vaja kvaliteetset ADC-d ja head filtrit.

Märgin, et kõrgete sageduste "dubleerimine" madalama astme sagedustega (aliasing) on ​​signaali diskreetimise otsene omadus, mis "rikub" tulemuse pöördumatult. Seetõttu, kui signaal võib põhimõtteliselt sisaldada kõrget järku sagedusi (st peaaegu alati), asetatakse ADC ette analoogfilter, mis "lõikab" kõik üleliigse otse algses signaalis (kuna see pärast proovide võtmist on selleks liiga hilja). Nende filtrite kui analoogseadmete omadused ei ole ideaalsed, nii et teatud signaali "kahjustused" siiski tekivad ja praktikas järeldub sellest, et spektri kõrgeimad sagedused on tavaliselt ebausaldusväärsed. Selle probleemi vähendamiseks ei ole harvad juhud, kui proovitakse signaali ülediskreetimissagedusega, seadistades samal ajal analoogsisendi filtri madalamale ribalaiusele ja kasutades ainult ADC teoreetiliselt saadaoleva sagedusvahemiku alumist osa.

Teine levinud eksiarvamus, muide, on see, kui DAC-i väljundis olev signaal joonistatakse "sammude kaupa". "Sammud" vastavad diskreeditud signaalijada konvolutsioonile laiuse T ja kõrgusega 1 ristkülikukujulise funktsiooniga:

Sellise teisenduse korral korrutatakse signaali spekter selle ristkülikukujulise funktsiooni Fourier' teisendusega ja sarnase ristkülikukujulise funktsiooni jaoks on see jällegi sinc(w), mida tugevam on, seda “venitatakse”, mida väiksem on vastava ristküliku laius. Sarnase "DAC"-ga diskreedi signaali spekter korrutatakse punktipõhiselt selle spektriga. Sel juhul ei lõigata tarbetud kõrged sagedused koos spektri "lisakoopiatega" täielikult ära ja spektri "kasuliku" osa ülemine osa nõrgeneb.

Praktikas seda muidugi keegi ei tee. DAC-i ehitamiseks on palju erinevaid lähenemisviise, kuid isegi kõige sarnasema kaaluga DAC-i puhul valitakse DAC-is ristkülikukujulised impulsid võimalikult lühikesed (lähenedes reaalsele deltafunktsioonide jadale), et vältida tarbetut allasurumist. spektri kasulikust osast. Saadud lairibasignaali "lisa" sagedused summutatakse peaaegu alati, juhtides signaali läbi analoog-madalpääsfiltri, nii et ei konverteri "sees" ega pealegi selle väljundis pole "digitaalseid samme".

Läheme siiski tagasi Fourier' teisenduse juurde. Eespool kirjeldatud Fourier' teisendust, mida rakendatakse eelnevalt diskreetitud signaalijadale, nimetatakse diskreetaja Fourier' teisenduseks (DTFT). Sellise teisendusega saadud spekter on alati 1/T-periood, nii et DTFT spekter on täielikult määratud selle väärtustega segmendil )