Jedinica 3 / 12

Obrada signala: filtri, uzorkovanje i analiza frekvencija

Dobici:

  • Sposobnost ispravne konstrukcije i primjene koncepta uzorkovanja, Nyquista i aliasinga s podrškom za umjetnu inteligenciju
  • Sposobnost prevođenja FFT-a, dizajna filtera i koraka prozora u nacrt koda i izračune pomoću umjetne inteligencije
  • Sposobnost provjere rezultata obrade signala koje proizvodi AI s referentnim signalom, kontrolom jedinice i mjerenjem

Obrada signala srce je elektronike i komunikacijskog inženjerstva: umjetnost uzimanja naponskog vala, zvučnog zapisa, očitanja senzora ili radijskog signala i izdvajanja informacija unutar njega, čišćenja njegovog šuma i transformiranja. U ovoj jedinici vidjet ćete kako koristiti umjetnu inteligenciju za učenje koncepata obrade signala, konstruiranje kalkulacija filtara i transformacije te izvođenje analize pomoću Python koda. Ali upozorenje od samog početka: mala konceptualna pogreška u obradi signala (pogrešna frekvencija uzorkovanja, preskočeni prozori, interferirajuća jedinica) potpuno će i tiho iskriviti rezultat; Grafikon i dalje izgleda dobro, ali je pogrešan. Zato je nužno testirati svaki rezultat koji AI proizvodi u odnosu na poznati referentni signal i kontrolu jedinice.

Sampling i Nyquist: gdje sve počinje

Za obradu analognog signala (kontinuiranog vala) u računalu, mjerimo ga u određenim intervalima i pretvaramo u broj; To se zove uzorkovanje. To je frekvencija uzorkovanja (fs, jedinica Hz) koliko uzoraka uzimamo u sekundi. Nyquistov kriterij navodi da za točan oporavak signala frekvencija uzorkovanja mora biti najmanje dvostruko veća od najviše frekvencije u signalu. Ako ovaj uvjet nije ispunjen, visoke frekvencije počinju izgledati kao niske frekvencije; To se naziva aliasing i podaci su trajno oštećeni jer ne možete razlikovati ove dvije situacije.

AI vrlo dobro objašnjava ovaj koncept i može ga pokazati primjerima. Ali vi odlučujete kada birate frekvenciju uzorkovanja: kolika je stvarna propusnost vašeg signala, imate li analogni filtar protiv alijasinga, kojom brzinom vaš ADC (analogno-digitalni pretvarač: čip koji pretvara analogni signal u broj) zapravo radi. AI može "predložiti" frekvenciju uzorkovanja, ali ovaj prijedlog je nagađanje bez mjerenja stvarnog spektra vašeg signala.

Savjet: kada AI postavljate pitanje uzorkovanja, sami odredite najveću frekvenciju i propusnost vašeg signala. "Ako je najviša komponenta mog signala ~4 kHz, kako da izaberem fs i gdje da stavim anti-aliasing filter?" kao. Ne tjerajte umjetnu inteligenciju da pogađa spektar; mjera.

FFT i frekvencijska analiza

FFT (Fast Fourier Transform) je brzi algoritam koji pretvara signal s vremenske osi na frekvencijsku os. Dakle, "koje su frekvencije u ovom signalu i s kolikom snagom?" odgovara na pitanje. AI vrlo dobro zna kako implementirati FFT, interpretirati rezultate i napisati Python kod (numpy/scipy). Ali postoje uobičajene pogreške u FFT-u, a AI kod ih može tiho uključiti:

  • Skaliranje frekvencijske osi: frekvencijska os FFT izlaza ovisi o frekvenciji uzorkovanja. Ako je fs unesen netočno, sve frekvencije se prikazuju netočno, ali grafikon izgleda normalno.
  • Prozor: kada se primi konačan dio signala, dolazi do prekida na rubovima i uočeno je pseudo-širenje (spektralno curenje) u spektru. Windowsi poput Hanna i Hamminga to smanjuju. Ako AI kod preskoči prozore, rezultat će biti pogrešan.
  • Normalizacija amplitude: Skaliranje i korekcija prozora potrebni su za pretvorbu amplitude FFT izlaza u stvarnu fizičku vrijednost. Ako se izostavi, amplitude će biti netočne.

dizajn filtera

Filter je sklop ili algoritam koji izdvaja neželjene frekvencije iz signala. Postoje četiri osnovne vrste: niskopropusni (propušta niske frekvencije), visokopropusni, pojasni i pojasni (prorez). Postoje dvije velike obitelji digitalnih filtara: FIR (konačni impulsni odziv, stabilna i linearna faza) i IIR (beskonačni impulsni odziv, strmi prijelaz s manje izračuna, ali stabilnost i fazni rizik).

AI objašnjava korake dizajna filtra (granična frekvencija, propusni pojas, prigušenje zaustavnog pojasa, odabir redoslijeda) i piše kod za generiranje koeficijenata pomoću scipyja. No granična frekvencija filtra koji dizajnirate dana je normalizirana (u odnosu na Nyquistovu frekvenciju), a unos fs netočnog ovdje je vrlo česta pogreška. Dodatno, stabilnost i fazno izobličenje mogu biti problem u IIR filtrima, a latencija može biti problem u sustavima u stvarnom vremenu. Svakako provjerite filtar generiran umjetnom inteligencijom pomoću grafikona frekvencijskog odziva i poznatog ispitnog signala.

tri mini kućišta

Slučaj 1 — Preklapajuće vibracije. Inženjer uzorkuje vibraciju motora na 1 kHz i vidi snažan vrh u FFT-u na 300 Hz. Ovaj vrh, koji ne odgovara dizajnu motora, zbunjuje. Zapravo postoji prava komponenta u motoru oko 1300 Hz; Uzorkovanje od 1 kHz nije dovoljno za ovo (Nyquist 500 Hz) i 1300 Hz preklapanih 300 Hz. Nakon rasprave s AI "je li ovaj vrh stvaran ili aliasing" i povećanja frekvencije uzorkovanja na 5 kHz, vrh se pojavljuje na ispravnom mjestu na 1300 Hz. Lekcija: na upitnom brdu, prvo pitanje primjerenost uzorkovanja.

Slučaj 2 — Preskočeni prozor. Pripravnik traži FFT kod od AI ​​i izvršava ga. Očekuje testni ton s jednom frekvencijom, ali vidi široku širinu spektra. Problem je u tome što kod ne radi prozore (spektralno curenje). Recite umjetnoj inteligenciji "dodaj Hann prozor i primijeni korekciju amplitude" i izlaz se vraća na očekivani oštar vrh. Lekcija: Testirajte FFT kod s poznatim jednofrekventnim signalom; Provjerite prozor ako curi.

Slučaj 3 — Pogrešni fs. Inženjer analizira podatke sa snimača. Uređaj je snimao na 48 kHz, ali je zadanih 44,1 kHz uneseno u AI kod. Sve frekvencije su pomaknute za 8%; Ton od 1000 Hz pojavljuje se na 1088 Hz. Pogreška je pronađena prilikom provjere stvarnih fs mjerne opreme. Lekcija: učestalost uzorkovanja je pojedinačni najkritičniji broj u lancu analize; mora biti provjereno iz izvora.

Predlošci upita koji se mogu kopirati

PREDLOŽAK POSTAVKE FFT-a "Napišite kod analize FFT-a u Pythonu (numpy/scipy). Unos: frekvencija uzorkovanja fs=[vrijednost] Hz, niz signala 'x'. Neka kod učini SLJEDEĆE: (1) Primijeni Hann prozor, (2) Dohvati FFT, (3) točno skaliraj frekvencijsku os u odnosu na fs, (4) iscrtaj jednostranu amplitudu spektar s korekcijom prozora Na svakom koraku koda "Molimo da u retku komentara navedete koju pretpostavku dajete kako bih je mogao potvrditi."

PREDLOG KONTROLE UZORKOVANJA "Najveća značajna frekvencija mog signala je približno [X] Hz. Objasnite Nyquistovu marginu, potrebu za anti-aliasing filtrom i praktičnu marginu sigurnosti pri odabiru frekvencije uzorkovanja. Predložite raspon, ali naglasite da bih to trebao potvrditi mjerenjem pravog spektra signala."

PREDLOŽAK DIZAJNA FILTRA "Dizajnirajte [niski/visoki/pojasni] digitalni filtar sa scipyjem. Granična frekvencija [X] Hz, frekvencija uzorkovanja fs=[Y] Hz. Usporedite FIR i IIR opcije (stabilnost, faza, odgoda, računsko opterećenje). Jasno pokažite u kodu kako je granična frekvencija normalizirana na fs. Također uključite kod koji potvrđuje filtar s grafom frekvencijskog odziva."

PREDLOŽAK ZA PROVJERU REZULTATA "Proučite kod za obradu signala u nastavku i označite izvore tihih pogrešaka: pogrešan fs, preskočeno otvaranje prozora, preslušavanje jedinice (Hz/kHz, V/mV), nedostatak normalizacije, jednostrano/dvostrano preslušavanje spektra. Predložite kako da testiram (s kojim referentnim signalom) za svaki. Kod: [zalijepi]."

Slab upit / Jak upit

SLABI PROMPT: "Pronađi frekvenciju ovog signala."

SNAŽNA UPOTREBA: "Imam niz signala s frekvencijom uzorkovanja od 10 kHz. Napišite Python kod koji pronalazi dominantne frekvencijske komponente pomoću FFT-a; koristite Hannov prozor i korekciju amplitude, skalirajte frekvencijsku os prema fs. Na kraju koda dodajte blok za provjeru valjanosti sa sintetičkim testnim signalom od 1 kHz fs i pogledajte je li skaliranje ispravno."

Slab prompt proizvodi odgovor bez konteksta i pretpostavlja fs; Vraća snažne promptne parametre i upite za testni blok koji se sam provjerava.

Tablica jedinica i pretpostavki u obradi signala

koncept

česta greška

provjera

Učestalost uzorkovanja (fs)

Zadana vrijednost umjesto stvarnog FS-a uređaja

Potvrda iz postavke rekordera

frekvencijska os

Ako je fs pogrešan, cijela se os pomiče

Testni ton poznate frekvencije

Prozori

Spektralno curenje kada se preskoči

Širina vrha u monotonom signalu

Amplituda

Nedostaje normalizacija/ispravak

Usporedba sa signalom poznate amplitude

filtarski rez

normalizirati grešku prema fs

Grafikon frekvencijskog odziva

Oprez: samo zato što FFT graf izgleda glatko i uvjerljivo ne znači da je točan. Ako je os frekvencije netočno skalirana, svi vrhovi su na pogrešnom mjestu, ali grafikon izgleda savršeno. Uvijek kalibrirajte s poznatom referencom.

Uobičajene greške

  • Ne provjerava frekvenciju uzorkovanja iz izvora. Pogrešan fs pomiče sve frekvencije.
  • Kršenje Nyquista i ne primjećivanje aliasinga. Na sumnjivim brežuljcima prvo preispitajte primjerenost uzorkovanja.
  • Preskakanje prozora u FFT-u. Spektralno curenje izgleda kao pravi vrh.
  • Zaboravljamo normalizaciju amplitude. Amplitude ostaju neskalirane na fizičku vrijednost.
  • Neispravno normaliziranje granične frekvencije filtra na fs. Filtar reže na drugom mjestu od očekivanog.

Ukratko

U ovoj jedinici pozicionirali ste umjetnu inteligenciju kao snažnu pomoć u učenju koncepata obrade signala, pisanju FFT-a i filtarskog koda te konstruiranju analize. Ali u obradi signala, rezultati mogu biti tiho iskrivljeni: pogrešna frekvencija uzorkovanja, preskočeni prozori, ometajuća glasnoća ili nedostatak normalizacije čine grafikon lijepim, ali netočnim. Dakle, testirajte svaki kod koji AI proizvodi u odnosu na poznati referentni signal, provjerite frekvenciju uzorkovanja iz izvora i testirajte svaki rezultat na jediničnu i fizičku vjerodostojnost. Provjerite koncept Nyquista i aliasinga na početku svake analize.

Zadatak aplikacije

Napravite sintetički testni signal u Pythonu: zbroj dviju poznatih frekvencija (npr. 1 kHz i 3 kHz), fs=10 kHz. Zatražite kod za analizu od umjetne inteligencije s predloškom "FFT setup" i provjerite pojavljuju li se vrhovi na ispravnim frekvencijama. Zatim namjerno pogrešno unesite fs (npr. 8 kHz) i promatrajte kako se vrhovi pomiču. Na kraju, uklonite prozore i pogledajte spektralno curenje. Zapišite rezultate svakog pokusa u jednoj rečenici.

popis za provjeru

  • [ ] Provjerio sam frekvenciju uzorkovanja (fs) prema stvarnim postavkama rekordera.
  • [ ] Provjerio sam Nyquistov kriterij i procijenio rizik od aliasinga.
  • [ ] Provjerio sam da su prozori i korekcija amplitude implementirani u FFT kod.
  • [ ] Testirao sam kod s referentnim signalom poznate frekvencije.
  • [ ] Vizualnim odgovorom potvrdio sam da je granična frekvencija filtra ispravno normalizirana na fs.
  • [ ] Učinio sam sve jedinice (Hz/kHz, V/mV) dosljednima.