Andrejus Šelkovenko. Vienas iš "Vibromera" kūrėjų ir įkūrėjų.
Straipsnio vertime gali būti netikslumų.
- Furjė transformacija ir signalo spektras
Daugeliu atvejų signalo spektro gavimo (apskaičiavimo) užduotis yra tokia. Yra ADC, kuris diskretizavimo dažniu Fd transformuoja ištisinį signalą, patekusį į jo įėjimą per laiką T, į skaitmeninius pavyzdžius - N vienetų. Tada šis pavyzdžių masyvas perduodamas kokiai nors programai (pvz. FourierScope), kuris išveda N/2 tam tikrų skaitinių verčių.
Norėdami patikrinti, ar programa veikia teisingai, suformuojame imčių masyvą kaip dviejų sin(10*2*pi*x)+0,5*sin(5*2*pi*x)+0,5*sin(5*2*pi*x) sumą ir paduodame jį į programą. Programa nubraižė taip:
Spektro diagramoje yra dvi harmonikos - 5 Hz, kurių amplitudė yra 0,5 V, ir 10 Hz, kurių amplitudė yra 1 V, viskas yra kaip pradinio signalo formulėje. Viskas gerai, grograma veikia teisingai.
Tai reiškia, kad jei į ADC įėjimą paduodame realų dviejų sinusoidžių mišinio signalą, gausime panašų spektrą, sudarytą iš dviejų harmonikų.
Taigi, mūsų tikras išmatuotas signalas 5 sek. trukmės, suskaitmenintas ADC, t. y. pavaizduotas pagal diskretinį mėginių, turi diskretiškas neperiodinis spektras.
Kiek klaidų šioje frazėje yra matematiniu požiūriu?
Dabar pabandykime išmatuoti tą patį signalą 0,5 sek.
Kažkas čia ne taip! 10 Hz dažnio harmonika brėžiama normaliai, o vietoj 5 Hz dažnio harmonikos yra keletas neaiškių harmonikų.
Internete sakoma, kad reikia pridėti nulius prie mėginio pabaigos ir spektras bus sudarytas normaliai.
Tai visai ne tai. Turėsiu susidoroti su teorija. Eikime į Vikipedija - žinių šaltinis.
2. Tolydi funkcija ir jos Furjė eilučių atvaizdavimas
Matematiškai mūsų signalas, kurio trukmė T sekundžių, yra tam tikra funkcija f(x), duota intervale {0, T} (X šiuo atveju yra laikas). Tokią funkciją visada galima pavaizduoti kaip harmoninių funkcijų (sinuso arba kosinuso) sumą:
k - trigonometrinės funkcijos numeris (harmoninės sudedamosios dalies numeris, harmoninės dalies numeris)
T - segmentas, kuriame apibrėžiama funkcija (signalo trukmė)
Ak - k-osios harmoninės komponentės amplitudė,
θk- pradinė k-tosios harmoninės komponentės fazė
Ką reiškia "pavaizduoti funkciją kaip eilučių sumą"? Tai reiškia, kad sudėjus Furjė eilės harmoninių komponenčių vertes kiekviename taške, gauname mūsų funkcijos vertę tame taške.
(Griežčiau tariant, eilės vidutinis kvadratinis nuokrypis nuo funkcijos f(x) bus linkęs į nulį, tačiau, nepaisant vidutinio kvadratinio nuokrypio, funkcijos Furjė eilutė apskritai neprivalo konverguoti į ją taškas po taško. )
Šią eilutę taip pat galima užrašyti tokia forma:
kur k-oji kompleksinė amplitudė.
arba
Ryšys tarp koeficientų (1) ir (3) išreiškiamas šiomis formulėmis:
Atkreipkite dėmesį, kad visi šie trys Furjė eilučių pavaizdavimai yra visiškai lygiaverčiai. Kartais dirbant su Furjė eilutėmis patogiau vietoj sinusų ir kosinusų naudoti įsivaizduojamojo argumento eksponentus, t. y. naudoti Furjė transformaciją kompleksiniu pavidalu. Tačiau mums patogu naudoti (1) formulę, kurioje Furjė eilutė vaizduojama kaip kosinusų su atitinkamomis amplitudėmis ir fazėmis suma. Bet kuriuo atveju neteisinga sakyti, kad realaus signalo Furjė transformacijos rezultatas bus kompleksinės harmoninės amplitudės. Kaip teisingai rašo "Wiki", "Furjė transformacija (ℱ) yra operacija, kuri vieną realiojo kintamojo funkciją atvaizduoja į kitą taip pat realiojo kintamojo funkciją".
Apibendrinimas:
Matematinis signalų spektrinės analizės pagrindas yra Furjė transformacija.
Furjė transformacija leidžia vaizduoti tolydžią funkciją f(x) (signalą), apibrėžtą intervale {0, T}, kaip trigonometrinių funkcijų (sinuso ir (arba) kosinuso), kurių amplitudės ir fazės taip pat apibrėžtos intervale {0, T}, begalinio skaičiaus (begalinės eilės) sumą. Tokia eilutė vadinama Furjė eilute.
Atkreipkite dėmesį į dar kelis dalykus, kurių supratimas būtinas norint teisingai taikyti Furjė transformaciją signalų analizei. Jei nagrinėsime Furjė eilutę (sinusoidžių sumą) visoje X ašyje, pamatysime, kad už intervalo {0, T} ribų Furjė eilutės funkcija periodiškai kartosis su mūsų funkcija.
Pavyzdžiui, 7 pav. pateiktame grafike pradinė funkcija apibrėžta intervale {-T\2, +T\2}, o Furjė eilutė vaizduoja periodinę funkciją, apibrėžtą visoje x ašyje.
Taip yra todėl, kad pačios sinusoidės yra periodinės funkcijos, todėl jų suma taip pat bus periodinė funkcija.
Taigi:
Mūsų pradinė funkcija yra tolydi, neperiodinė funkcija, apibrėžta tam tikroje T ilgio atkarpoje.
Šios funkcijos spektras yra diskretus, t. y. jis vaizduojamas kaip begalinė harmoninių komponenčių eilė - Furjė eilutė.
Iš tikrųjų Furjė eilutė apibrėžia tam tikrą periodinę funkciją, kuri sutampa su mūsų funkcija intervale {0, T}, tačiau mums šis periodiškumas nėra esminis.
Kitas.
Harmoninių komponentų periodai yra intervalo {0, T}, kuriame apibrėžta pradinė funkcija f(x), kartotiniai. Kitaip tariant, harmoninių komponenčių periodai yra signalo matavimo trukmės kartotiniai. Pavyzdžiui, pirmosios Furjė eilės harmonikos periodas yra lygus intervalui T, kuriame apibrėžta funkcija f(x). Antrosios harmonikos periodas Furjė eilutėje yra lygus intervalui T/2. Ir taip toliau (žr. 8 pav.).
Atitinkamai harmoninių komponentų dažniai yra 1/T kartotiniai. Tai reiškia, kad harmoninių komponentų Fk dažniai yra tokie: Fk= k\T, kur k turi reikšmes nuo 0 iki ∞, pavyzdžiui, k=0 F0=0; k=1 F1=1\T; k=2 F2=2\T;k=3 F3=3\T;.... Fk= k\T (esant nuliniam dažniui, pastovioji komponentė).
Tegul mūsų pradinė funkcija yra signalas, įrašytas per T=1 sek. Tada pirmosios harmonikos periodas bus lygus mūsų signalo trukmei T1=T=1 s, o harmonikos dažnis lygus 1 Hz. Antrosios harmonikos periodas bus lygus mūsų signalo trukmei, padalytai iš 2 (T2=T/2=0,5 sek.), o dažnis lygus 2 Hz. Trečiosios harmonikos periodas T3=T/3 s, o dažnis lygus 3 Hz. Ir taip toliau.
Šiuo atveju žingsnis tarp harmonikų yra 1 Hz.
Taigi 1 s trukmės signalą galima išskaidyti į harmonines sudedamąsias dalis (gauti spektrą) 1 Hz dažnio skiriamąja geba.
Norint padidinti skiriamąją gebą 2 kartus iki 0,5 Hz, matavimo trukmę reikia padidinti 2 kartus iki 2 sek. 10 sekundžių trukmės signalą galima išskaidyti į harmonines sudedamąsias dalis (spektrą), kai dažnio skiriamoji geba yra 0,1 Hz. Kitų būdų padidinti dažnio skiriamąją gebą nėra.
Yra būdas dirbtinai padidinti signalo trukmę į mėginių masyvą pridedant nulius. Tačiau tai nepadidina realaus dažnio skiriamosios gebos.
3. Diskretieji signalai ir diskrečioji Furjė transformacija
Tobulėjant skaitmeninėms technologijoms, pasikeitė matavimo duomenų (signalų) saugojimo būdai. Anksčiau signalą buvo galima įrašyti į magnetofoną ir išsaugoti juostoje analoginiu pavidalu, o dabar signalai skaitmeninami ir saugomi kompiuterio atmintyje esančiose bylose kaip skaičių (skaitmenų) rinkinys.
Įprastinė signalo matavimo ir skaitmeninimo schema atrodo taip.
Matavimo keitiklis -- Signalo normalizatorius -- ADC -- Kompiuteris
(9 pav.9 Matavimo kanalo schema)
Matuojamojo keitiklio signalas į ADC patenka per tam tikrą laiką T. Per laiką T gauti signalo rodmenys (atranka) perduodami į kompiuterį ir įrašomi į atmintį.
Kokie reikalavimai keliami signalo skaitmeninimo parametrams? Įrenginys, kuris įvesties analoginį signalą paverčia diskrečiuoju kodu (skaitmeniniu signalu), vadinamas analoginiu-skaitmeniniu keitikliu (ADC) (© Wiki).
Vienas iš pagrindinių ADC parametrų yra didžiausias diskretizavimo dažnis - signalo, kuris yra tolydus laike, diskretizavimo dažnis. Ėminių ėmimo dažnis matuojamas hercais. ((© Wiki))
Pagal Kotelnikovo teoremą, jei ištisinio signalo spektrą riboja dažnis Fmax, jį galima visiškai ir vienareikšmiškai atkurti iš diskrečiųjų imčių, paimtų laiko intervalais T = 1/2*Fmax, t. y. su dažniu Fd ≥ 2*Fmax, kur Fd - imties dažnis; Fmax - didžiausias signalo spektro dažnis. Kitaip tariant, signalo skaitmeninimo dažnis (ADC diskretizavimo dažnis) turi būti bent 2 kartus didesnis už didžiausią norimo matuoti signalo dažnį.
O kas nutiks, jei imsime mėginius mažesniu dažniu, nei reikalaujama pagal Kotelnikovo teoremą?
Šiuo atveju atsiranda "aliasing" efektas (dar žinomas kaip stroboskopinis efektas, moirė efektas), kai aukšto dažnio signalas po skaitmeninimo virsta žemo dažnio signalu, kurio iš tikrųjų nėra. 11 pav. raudona aukšto dažnio sinusoidė yra tikrasis signalas. Mėlyna žemesnio dažnio sinusoidė yra fiktyvus signalas, atsirandantis dėl to, kad per diskretizavimo laiką spėja praeiti daugiau nei pusė aukšto dažnio signalo periodo.
Kad būtų išvengta aliasingo efekto, prieš ADC dedamas specialus antialiasingo filtras (žemųjų dažnių filtras). Jis praleidžia dažnius, mažesnius nei pusė ADC diskretizavimo dažnio, ir atjungia aukštesnius dažnius.
Norint apskaičiuoti signalo spektrą pagal diskrečius pavyzdžius, naudojama diskrečioji Furjė transformacija (DFT). Dar kartą atkreipkite dėmesį, kad diskrečiojo signalo spektras "pagal apibrėžimą" yra apribotas dažniu Fmax, mažesniu už pusę imties dažnio Fd. Todėl diskrečiojo signalo spektrą galima pavaizduoti suma baigtinis harmonikų skaičius, priešingai nei begalinė ištisinio signalo Furjė eilės, kurios spektras gali būti neribotas. Pagal Kotelnikovo teoremą maksimalus harmonikos dažnis turi būti toks, kad jis sudarytų bent du pavyzdžius, todėl harmonikų skaičius yra lygus pusei diskrečiojo signalo pavyzdžių skaičiaus. Vadinasi, jei imtyje yra N imčių, harmonikų skaičius spektre bus lygus N/2.
Panagrinėkime diskrečiąją Furjė transformaciją (DFT).
Lyginant su Furjė eilute
Kaip matome, jie sutampa, išskyrus tai, kad FFT laikas yra diskretus, o harmonikų skaičius ribojamas iki N/2, t. y. pusės imčių skaičiaus.
DFT formulės užrašomos beasmeniais sveikaisiais kintamaisiais k, s, kur k - signalo pavyzdžių skaičius, s - spektrinių komponentų skaičius.
Reikšmė s rodo, kiek pilnųjų harmoninių virpesių įvyksta per periodą T (signalo matavimo trukmę). Diskrečioji Furjė transformacija naudojama harmonikų amplitudėms ir fazėms rasti skaitmeniniu būdu, t. y. "kompiuteryje".
Kaip jau buvo minėta, neperiodinę funkciją (mūsų signalą) išskaidžius į Furjė eilutes, gauta Furjė eilutė iš tikrųjų atitinka periodinę funkciją su periodu T (12 pav.).
Kaip matyti 12 pav., funkcija f(x) yra periodinė su periodu T0. Tačiau dėl to, kad matavimo imties ilgis T nėra lygus funkcijos periodui T0, funkcija, gauta kaip Furjė eilutė, turi nutrūkimą taške T. Todėl šios funkcijos spektre bus daug aukšto dažnio harmonikų. Jei matavimo imties trukmė T sutaptų su funkcijos periodu T0, tai spektre, gautame po Furjė transformacijos, būtų tik pirmoji harmonika (sinusoidė, kurios periodas lygus imties trukmei), nes funkcija f(x) yra sinusoidė.
Kitaip tariant, DFT programa "nežino", kad mūsų signalas yra "sinusoidės gabalėlis", bet bando pavaizduoti periodinę funkciją, kuri turi nutrūkimą dėl atskirų sinusoidės gabalėlių nutrūkimo.
Dėl to spektre atsiranda harmonikų, kurios iš viso turėtų atspindėti funkcijos formą, įskaitant šį nutrūkimą.
Taigi, norint gauti "teisingą" signalo, kuris yra kelių skirtingų periodų sinusoidžių suma, spektrą, reikia, kad sveikasis skaičius laikotarpių kiekviena sinusoidė turėtų būti per signalo matavimo laikotarpį. Praktiškai šią sąlygą galima įvykdyti, jei signalo matavimo trukmė yra pakankamai ilga.
Esant trumpesnei trukmei vaizdas atrodys "blogiau":
Praktikoje gali būti sunku suprasti, kur yra "tikrieji komponentai", o kur "artefaktai", atsirandantys dėl komponentų periodų ir signalo mėginių ėmimo trukmės neatitikimo arba "šuolių ir pertrūkių" bangos formoje. Žinoma, žodžiai "tikrieji komponentai" ir "artefaktai" ne veltui pateikiami kabutėse. Daugybės harmonikų buvimas spektro grafike nereiškia, kad mūsų signalas iš tikrųjų susideda iš jų. Tai tas pats, kaip manyti, kad skaičius 7 "susideda" iš skaičių 3 ir 4. Skaičių 7 galima laikyti 3 ir 4 suma - tai teisinga.
Taigi ir mūsų signalą... arba greičiau net ne "mūsų signalą", o periodinę funkciją, sudarytą kartojant mūsų signalą (imtį), galima pavaizduoti kaip tam tikros amplitudės ir fazės harmonikų (sinusinių bangų) sumą. Tačiau daugeliu praktiškai svarbių atvejų (žr. paveikslėlius pirmiau) spektre gautas harmonikas iš tiesų galima susieti ir su realiais procesais, turinčiais ciklinį pobūdį ir reikšmingai prisidedančiais prie signalo formos.
Kai kurie rezultatai
1. Tikrasis matuojamasis T s trukmės signalas, kurį skaitmenina ADC, t. y. kurį vaizduoja diskrečiųjų pavyzdžių rinkinys (N dalių), turi diskretųjį neperiodinį spektrą, kurį vaizduoja harmonikų rinkinys (N/2 dalių).
2. Signalas vaizduojamas galiojančių reikšmių rinkiniu, o jo spektras - galiojančių reikšmių rinkiniu. Harmonikų dažniai yra teigiami. Vien tai, kad matematiškai patogiau spektrą pavaizduoti kompleksine forma naudojant neigiamus dažnius, nereiškia, kad "taip yra teisinga" ir "taip reikia daryti visada".
3. Laiku T išmatuotas signalas nustatomas tik laiku T. Kas įvyko prieš pradedant matuoti signalą ir kas įvyks po to, mokslui nežinoma. O mūsų atveju tai neįdomu. Laiko ribojamo signalo FFT pateikia jo "tikrąjį" spektrą ta prasme, kad tam tikromis sąlygomis leidžia apskaičiuoti jo komponentų amplitudę ir dažnį.