FFT-spørsmål

Ivar_Loekken

Hi-Fi freak
Ble medlem
03.12.2006
Innlegg
2.486
Antall liker
2
Har et spørsmål relatert til signalanalyse og FFT:

Når man tar en DFT av en signalsekvens får man som kjent lekkasje til andre "bins" dersom f*N/fs ikke er et heltall. Hvis man heller ikke skal få lekkasje fra noen harmoniske må f*N/fs også være et primtall (og all annen periodisitet i systemet også gi heltall). Dette er et rigorøst krav, men er det eneste som kan gi et helt nøyaktig spektrum med endelig-lengde DFT.

For å omgås dette kravet bruker man vindusfunksjoner (som Hamming, Hann e.l.) som demper lekkasjen på bekostning av å smøre ut hovedloben eller signalkomponenten. Dette fungerer fint ved målinger/simuleringer på relativt lav oppløsning, men jeg driver nå og simulerer på 20bit+ og får dermed problemer med vindusfunksjonene. For å få tilstrekkelig målenøyaktighet må man da kjøre fryktelig lange FFT-er. Feks gir et Hann-vindu og en 2^20-punkts FFT 127dB SNR på en simulering der jeg egentlig skulle hatt 136dB, noe som ikke er holdbart. Med 2^24-punkts FFT begynner det å ligne noe, men simuleringstiden blir da alt for lang.

Nå har det seg slik at systemet jeg simulerer på, en delta-sigma modulator med full dithering, ikke har noen periodisitet forutenom selve signalet og signaltransferfunksjonen er 1. Dermed kan jeg oppfylle overstående krav til f, N og fs og gjøre nøyaktige simuleringer uten vindu. Men, - av og til skjærer det seg allikevel. For noen signalnivåer tryner målingene; de drar av til en konstant verdi mot DC og jeg skjønner ikke hvorfor dette skjer. Et eksempel er vist under. På første figuren hvor simuleringen tryner er innivået -4dBfs, på den andre er den -3.99dBfs (og da funker det fint), alt annet er helt likt.

Siden det med full dithering er uavhengighet mellom signal og kvantiseringsfeil i første og andre statistiske moment, skulle man tro at minnet i modulatoren ikke burde påvirke spektrumet. Det er imidlertid statistisk avhengighet i høyere momenter, men er ikke et effektspektrum et produkt av (kryss)korrelasjon med fourier-basisfunksjonene og derfor et produkt av andre statistiske moment? Dithersekvensen min er forsåvidt også endelig-lengde, men med vindu så gir ikke den noen problemer, derfor skulle man ikke tro det var feilkilden.

Hvis noen har peiling på FFT, eventuelt i forbindelse med analyse av kvantisering i digitale filtre, som i praksis er mye av det samme som en DSM, gir dette noen mening? Knutinh?






f = signalfrekvens
fs = samplefrekvens
N = FFT-lengde
 

Vidar Øierås

Hi-Fi freak
Ble medlem
19.01.2003
Innlegg
3.202
Antall liker
341
...Når man tar en DFT .....
De fleste forumdeltagere, inkl. meg selv, falt vel ut allerede her ;D

Har du fått svar på sp.målet ditt annetsteds fra da?

Vidar
 
K

knutinh

Gjest
Beklager, dette går litt over hodet på meg =)

-k
 

erato

Æresmedlem
Ble medlem
15.03.2003
Innlegg
19.546
Antall liker
9.711
Sted
Bergen
Torget vurderinger
1
DFT = Digital Fourier Transform.

Tok diplomen min på NTH i 1975 med FFT på hullkort i Algol. Rustne greier; tror jeg står over resten av Løkkens utredninger selv om jeg minnes noe om avkortningsproblematikker ved bruk av FFT i det digitale domene.
 

Ivar_Loekken

Hi-Fi freak
Ble medlem
03.12.2006
Innlegg
2.486
Antall liker
2
De fleste forumdeltagere, inkl. meg selv, falt vel ut allerede her ;D
DFT = Diskret Fourier Transform, en lineær transformasjon av endelig lange signalsekvenser fra tidsdomenet til frekvensdomenet.
FFT = Fast Fourier Transform, en mye brukt algoritme for implementering av DFT fordi den er rask/effektiv.

Skal man gjøre frekvensanalyse, enten det er målinger eller simuleringer, med høy nøyaktighet er det kritisk at man kjenner til DFTens egenskaper. Feks kan slike ting som lengde på DFT, valg av frekvenser og valg av vindusfunksjon være helt kritisk for om man får et pålitelig måleresultat eller ikke.

Vindusfunksjoner som brukes i de fleste måleprogrammer er Hann, Hamming, Blackman og kanskje et par til. Disse har forskjellige egenskaper og kan være mer eller mindre velegnet avhengig av på hvilke områder kravene til nøyaktighet er størst. Nøyaktigheten øker også med økende lengde på DFTen. Hvis kravet til nøyaktighet er feks -60dB og du bruker en 65.356-punkts FFT, har vindusfunksjon neppe noe særlig å si i praksis. Hvis kravet til nøyaktighet er -120dB er du alvorlig ute å kjøre.

For å få nøyaktige nok analyse for mine simuleringer må FFTen med Hann-vindu være minst 24 bit lang, dvs 16.777.216 punkter, det gjør kjøretiden på simuleringene alt for lang (mange dager). Derfor tvinger jeg med oppsettet frem en situasjon hvor spektral lekkasje ikke forekommer (side 5-6 første link, side 9 ("we're lucky here") andre link). Det burde virke, men ved endel amplituder så tryner det, uten at jeg helt har forstått hvorfor. Jeg vet bare at det har med det faktum å gjøre at systemet mitt (delta-sigma modulator) har minne/feedback.

Link 1
Link 2
Link 3

Har du fått svar på sp.målet ditt annetsteds fra da?
Nei, bare at det var et kjent problem på arbeidsplassen. Finner jeg ut av det skal jeg kreve lønnsøkning...

Beklager, dette går litt over hodet på meg =)
OK, da blir det Ramstad.

Rustne greier; tror jeg står over resten av Løkkens utredninger selv om jeg minnes noe om avkortningsproblematikker ved bruk av FFT i det digitale domene.
Er ikke det. Matlab bruker 32 og 64-bit flyttall, kvantisering av transformkoeffisienter er ikke et problem. Da ville det heller neppe gjort seg utslag kun på enkelte inngangsamplituder.
 
Topp Bunn