Üksus 3 / 12

Signaalitöötlus: filtrid, diskreetimine ja sagedusanalüüs

Kasu:

  • Oskus õigesti konstrueerida ja rakendada sämplimise, Nyquisti ja aliase kontseptsioone tehisintellekti toega
  • Võimalus tõlkida AI-ga FFT-d, filtrikujundust ja akende samme mustandikoodiks ja arvutusteks
  • Võimalus kontrollida tehisintellekti toodetud signaalitöötluse tulemusi võrdlussignaali, üksuse juhtimise ja mõõtmise abil

Signaalitöötlus on elektroonika- ja sidetehnika süda: pingelaine, helisalvestise, anduri lugemise või raadiosignaali võtmise ja selles sisalduva teabe eraldamise, müra puhastamise ja selle teisendamise kunst. Selles üksuses näete, kuidas kasutada tehisintellekti signaalitöötluse kontseptsioonide õppimiseks, filtrite ja teisendusarvutuste koostamiseks ning Pythoni koodiga analüüsi tegemiseks. Aga hoiatus kohe algusest: väike kontseptuaalne viga signaali töötlemisel (vale diskreetimissagedus, vahele jäetud aken, segav üksus) moonutab tulemust täielikult ja vaikselt; Graafik näeb endiselt hea välja, kuid see on vale. Sellepärast on hädavajalik testida iga AI tulemust teadaoleva võrdlussignaali ja üksuse juhtimise suhtes.

Proovide võtmine ja Nyquist: kust see kõik algab

Analoogsignaali (pidevlaine) töötlemiseks arvutis mõõdame seda teatud ajavahemike järel ja teisendame arvuks; Seda nimetatakse proovivõtuks. See on diskreetimissagedus (fs, Hz), kui palju proove me sekundis võtame. Nyquisti kriteerium ütleb, et signaali täpseks taastamiseks peab diskreetimissagedus olema vähemalt kaks korda suurem signaali kõrgeimast sagedusest. Kui see tingimus ei ole täidetud, hakkavad kõrged sagedused välja nägema nagu madalad sagedused; Seda nimetatakse aliasinguks ja andmed on jäädavalt rikutud, kuna te ei saa nendel kahel olukorral vahet teha.

AI selgitab seda kontseptsiooni väga hästi ja suudab seda näidetega demonstreerida. Kuid diskreetimissageduse valimisel otsustate teie ise: milline on teie signaali tegelik ribalaius, kas teil on antialiasing analoogfilter, millise kiirusega teie ADC (analoog-digitaalmuundur: kiip, mis muundab analoogsignaali numbriks) tegelikult töötab. AI võib "soovitada" diskreetimissagedust, kuid see soovitus on oletus ilma signaali tegelikku spektrit mõõtmata.

Näpunäide. Kui esitate AI-le diskreetimisküsimuse, määrake ise oma signaali kõrgeim sagedus ja ribalaius. "Kui mu signaali kõrgeim komponent on ~4 kHz, kuidas valida fs ja kuhu panna antialiasing filter?" meeldib. Ärge laske tehisintellektil spektrit ära arvata; mõõta.

FFT ja sageduse analüüs

FFT (Fast Fourier Transform) on kiire algoritm, mis teisendab ajateljelt signaali sagedusteljeks. Niisiis "mis sagedused on selles signaalis ja kui suure võimsusega?" vastab küsimusele. AI saab väga hästi hakkama FFT rakendamisega, tulemuste tõlgendamisega ja Pythoni koodi kirjutamisega (numpy/scipy). Kuid FFT-s on tavalised vead ja AI-kood võib neid vaikselt sisaldada:

  • Sagedustelje skaleerimine: FFT väljundi sagedustelg sõltub diskreetimissagedusest. Kui fs on valesti sisestatud, väljastatakse kõik sagedused valesti, kuid graafik näib olevat normaalne.
  • Aknastamine: lõpliku signaalitüki vastuvõtmisel tekib servades katkestus ja spektris täheldatakse pseudohajumist (spektri leket). Aknad nagu Hann ja Hamming vähendavad seda. Kui AI-kood jätab akna vahele, on tulemus eksitav.
  • Amplituudi normaliseerimine: FFT väljundi amplituudi teisendamiseks tegelikuks füüsiliseks väärtuseks on vaja skaleerimist ja akna korrigeerimist. Kui see ära jäetakse, on amplituudid valed.

filtri disain

Filter on vooluahel või algoritm, mis eraldab signaalist soovimatud sagedused. Seal on neli põhitüüpi: madalpääs (läbib madalaid sagedusi), kõrgpääs, ribapääs ja ribapääs (sälk). Digitaalseid filtreid on kaks suurt perekonda: FIR (lõpmatu impulssreaktsioon, stabiilne ja lineaarne faas) ja IIR (lõpmatu impulssreaktsioon, järsk üleminek väiksema arvutusega, kuid stabiilsuse ja faasiriskiga).

AI selgitab filtri konstrueerimise samme (läbisagedus, pääsuriba, seiskamisriba sumbumine, järjestuse valik) ja kirjutab scipy abil koefitsienti genereeriva koodi. Kuid teie kavandatud filtri piirsagedus on normaliseeritud (Nyquisti sageduse suhtes) ja fs-i vale sisestamine siin on väga levinud viga. Lisaks võivad IIR-filtrites probleemiks olla stabiilsus ja faasimoonutused ning reaalajas süsteemides võib probleemiks olla latentsusaeg. Kontrollige tehisintellekti loodud filtrit kindlasti sageduskarakteristiku graafiku ja teadaoleva testsignaaliga.

kolm minikarpi

Juhtum 1 – kattuv vibratsioon. Insener proovib mootori vibratsiooni sagedusel 1 kHz ja näeb FFT-s tugevat tippu 300 Hz juures. See tipp, mis ei vasta mootori konstruktsioonile, tekitab segadust. Mootoris on tegelikult umbes 1300 Hz reaalne komponent; 1 kHz diskreetimine on selleks ebapiisav (Nyquist 500 Hz) ja 1300 Hz kattus 300 Hz. Pärast tehisintellektiga arutamist, "kas see tipp on tõeline või alias" ja diskreetimissageduse suurendamist 5 kHz-ni, ilmub tipp õigesse kohta 1300 Hz juures. Õppetund: küsitaval mäel, esimene küsimus valimi adekvaatsuse kohta.

Juhtum 2 – vahele jäetud aken. Praktikant küsib AI-lt FFT-koodi ja täidab selle. Ta ootab ühtset sagedustesti tooni, kuid näeb spektris laia levikut. Probleem on selles, et kood ei tee aknaid (spektrileke). Öelge AI-le "lisage Hanni aken ja rakendage amplituudikorrektsiooni" ning väljund naaseb oodatud terava tipuni. Õppetund: testige FFT-koodi teadaoleva ühesagedusliku signaaliga; Kontrollige akent, kas seal on leke.

Juhtum 3 – vale fs. Insener analüüsib salvestaja andmeid. Seade salvestas sagedusel 48 kHz, kuid AI-koodi sisestati vaikimisi 44,1 kHz. Kõik sagedused on nihutatud 8% võrra; 1000 Hz toon ilmub 1088 Hz juures. Mõõteseadmete tegelike fs-ide kontrollimisel leitakse viga. Õppetund: proovivõtu sagedus on analüüsiahela kõige olulisem arv; tuleb allikast kontrollida.

Kopeeritavad viipade mallid

FFT SETUP TEMPLATE"Kirjutage Pythonis FFT-analüüsi kood (numpy/scipy). Sisend: proovivõtusagedus fs=[väärtus] Hz, signaalistring 'x'. Laske koodil teha JÄRGMIST: (1) Rakendage Hanni aken, (2) hankige FFT, (3) täpselt skaalalge üks sagedusaken, sagedus telg4 suhteline graafik. parandus koodi igal sammul "Palun märkige kommentaari reale, millise oletuse teete, et saaksin seda kontrollida."

SAMPLING CONTROL TEMPLATE "Minu signaali kõrgeim oluline sagedus on ligikaudu [X] Hz. Selgitage Nyquisti varu, antialiasing-filtri vajadust ja praktilist ohutusvaru diskreetimissageduse valimisel. Soovitage vahemikku, kuid rõhutage, et ma peaksin seda kontrollima signaali tegeliku spektri mõõtmisega."

FILTRI KUJUNDUSMALL "Projekteerige scipyga [madal/kõrg/riba] läbipääsuga digitaalfilter. Lõikesagedus [X] Hz, diskreetimissagedus fs=[Y] Hz. Võrrelge FIR ja IIR valikuid (stabiilsus, faas, viivitus, arvutuskoormus). Näidake koodis selgelt, kuidas piirsagedus on normaliseeritud sagedusreaktsiooniga, mis kinnitab filtri.

TULEMUSTE KINNITAMISE MALL "Uurige allolevat signaalitöötluskoodi ja märgistage vaikivate vigade allikad: valed fs, vahele jäetud aknad, ühikute ülekõne (Hz/kHz, V/mV), normaliseerimise puudumine, ühe-/kahepoolne spektri ülekanne. Soovitage, kuidas ma peaksin testima (millise võrdlussignaaliga) igaühe puhul. Kood: [kleebi]."

Nõrk viip / Tugev viip

NÕRK VIIPA: "Leidke selle signaali sagedus."

TUGEV VIIPA: "Mul on signaalimassiivi diskreetimissagedusega 10 kHz. Kirjutage Pythoni kood, mis FFT abil leiab domineerivad sageduskomponendid; kasutage Hanni akent ja amplituudikorrektsiooni, skaleerige sagedustelg vastavalt fs-ile. Koodi lõppu lisage valideerimisplokk sünteetilise testsignaaliga 1 kHz ja vaadake, kas fs on õige."

Nõrk viip annab kontekstivaba vastuse ja eeldab fs-i; See tagastab tugevad viipaparameetrid ja küsib isekontrollivat testplokki.

Signaalitöötluse mõõtühikute ja eelduste tabel

kontseptsioon

sagedane viga

kontrollimine

Diskreetimissagedus (fs)

Vaikeseade seadme tegeliku FS-i asemel

Kinnitus salvesti seadistustest

sagedustelg

Kui fs on vale, nihkub kogu telg

Tuntud sagedustesti toon

Aknastamine

Spektri leke vahelejätmisel

Piigi laius monotoonses signaalis

Amplituud

Normaliseerimine/parandus puudub

Võrdlus teadaoleva amplituudiga signaaliga

filter lõigatud

normaliseerida viga vastavalt fs-ile

Sagedusreaktsiooni graafik

Ettevaatust. See, et FFT-graafik näeb välja sujuv ja usutav, ei tähenda, et see on täpne. Kui sagedustelg on valesti skaleeritud, on kõik tipud vales kohas, kuid graafik näeb täiuslik välja. Kalibreerige alati teadaoleva viitega.

Levinud vead

  • Allikast pärit diskreetimissagedust ei kontrollita. Vale fs nihutab kõiki sagedusi.
  • Nyquisti rikkumine ja aliase märkamata jätmine. Kahtlastel mägedel seadke esmalt kahtluse alla proovide võtmise adekvaatsus.
  • Akende vahelejätmine FFT-s. Spektri leke näeb välja nagu tõeline tipp.
  • Unustades amplituudi normaliseerimise. Amplituudid jäävad füüsilisele väärtusele skaleerimata.
  • Filtri väljalülitussageduse valesti normaliseerimine fs-le. Filter lõikab oodatust erinevas kohas.

Kokkuvõttes

Selles üksuses olete AI asetanud võimsa abivahendina signaalitöötluse mõistete õppimisel, FFT ja filtrikoodi kirjutamisel ning analüüsi koostamisel. Kuid signaali töötlemisel võib tulemusi vaikselt moonutada: vale diskreetimissagedus, vahele jäetud akende kasutamine, segav helitugevus või normaliseerimise puudumine muudavad graafiku ilusaks, kuid ebatäpseks. Nii et testige iga koodi, mida AI toodab teadaoleva võrdlussignaali suhtes, kontrollige allika diskreetimissagedust ja testige iga tulemust ühiku ja füüsilise usutavuse suhtes. Kontrollige Nyquisti ja aliase kontseptsiooni iga analüüsi alguses.

Rakenduse ülesanne

Looge Pythonis sünteetiline testsignaal: kahe teadaoleva sageduse (nt 1 kHz ja 3 kHz) summa, fs=10 kHz. Küsige AI-lt analüüsikoodi malliga "FFT häälestus" ja veenduge, et piigid ilmuvad õigetel sagedustel. Seejärel sisestage fs teadlikult valesti (nt 8 kHz) ja jälgige, kuidas piigid nihkuvad. Lõpuks eemaldage aknaklaas ja vaadake spektraalset leket. Kirjutage iga katse tulemused ühte lausesse.

kontrollnimekiri

  • [ ] Kontrollisin proovivõtusagedust (fs) salvesti tegelikust seadistusest.
  • [ ] Kontrollisin Nyquisti kriteeriumi ja hindasin aliase riski.
  • [ ] Kontrollisin, et FFT-koodis oleks akende avamine ja amplituudiparandus rakendatud.
  • [ ] Testisin koodi teadaoleva sagedusega tugisignaaliga.
  • [ ] Kontrollisin visuaalse vastusega, et filtri piirsagedus normaliseeriti õigesti fs-le.
  • [ ] Muutsin kõik ühikud (Hz/kHz, V/mV) järjepidevaks.