Kysymys:
Mikä on FFT-pituuden ja taajuusresoluution suhde?
Kellenjb
2011-04-01 20:23:03 UTC
view on stackexchange narkive permalink

Jos olen ottanut näytteen signaalista asianmukaisilla näytteenottomenetelmillä (Nyquist, suodatus jne.), miten voin suhteuttaa FFT: n pituuden saatuun taajuuden erottelukykyyn? 2 000 Hz: n ja 1 999 Hz: n siniaalto, kuinka voisin määrittää FFT: n pituuden, joka tarvitaan näiden kahden aallon välisen eron tarkkaan erottamiseen?

Seitsemän vastused:
Mark
2011-04-01 21:33:03 UTC
view on stackexchange narkive permalink

Taajuuden tarkkuus riippuu FFT-pituuden ja tulosignaalin näytteenottotaajuuden välisestä suhteesta.

Jos keräämme 8192 näytettä FFT: lle, meillä on:

$$ \ frac {8192 \ \ text {sample}} {2} = 4096 \ \, \ text {FFT bins} $$

Jos näytteenottotaajuus on 10 kHz, Nyquist-Shannon näytteenottolause sanoo, että signaalimme voi sisältää taajuuspitoisuutta jopa 5 kHz. Tällöin taajuusalustan tarkkuus on:

$$ \ frac {5 \ \ text {kHz}} {4096 \ \, \ text {FFT bins}} \ simeq \ frac {1.22 \ \ text { Hz}} {\ text {bin}} $$

Tämä voi olla helpompi tapa selittää se käsitteellisesti, mutta yksinkertaistettuna: roskakorin tarkkuus on vain \ $ \ frac {f_ {samp}} {N } \ $, jossa \ $ f_ {samp} \ $ on tulosignaalin näytteenottotaajuus ja N on käytettyjen FFT-pisteiden määrä (näytteen pituus).

Edellä olevasta nähdään, että pienennämme FFT-lokeroilla voimme joko suorittaa pidemmän FFT: n (ts. Ottaa enemmän näytteitä samalla nopeudella ennen FFT: n suorittamista) tai pienentää näytteenottotaajuutta.

Saalis :

Ajan tarkkuuden ja taajuuden tarkkuuden välillä on aina kompromissi.

Yllä olevassa esimerkissä meidän on kerättävä 8192 näytettä ennen kuin voimme suorittaa FFT: n. , joka näytteenoton ollessa 10 kHz kestää 0,82 sekuntia.

Jos yritämme saada pienempiä FFT-lokeroita suorittamalla pidemmän FFT: n, tarvittavien näytteiden kerääminen kestää vielä kauemmin.

Se voi olla OK, se ei välttämättä ole. Tärkeä seikka on, että kiinteällä näytteenottotaajuudella taajuuden tarkkuuden lisääminen vähentää ajallista resoluutiota. Se on tarkempi mittauksesi taajuusalueella, sitä vähemmän tarkka voit olla aika-alueella. Menetät kaiken aikatiedon FFT-pituuden sisällä.

Tässä esimerkissä, jos 1999 Hz: n ääni alkaa ja pysähtyy 8192-näytteen FFT: n ensimmäisellä puoliskolla ja 2002 Hz: n ääni soi vuoden ikkuna, näemme molemmat, mutta ne näyttävät tapahtuneen samanaikaisesti.

Sinun on myös harkittava käsittelyaikaa. 8192 pisteen FFT vie jonkin verran prosessointitehoa. Tapa vähentää tätä tarvetta on vähentää näytetaajuutta, mikä on toinen tapa lisätä taajuuden erottelukykyä.

Jos pudotat näytteenottotaajuutesi esimerkiksi 4096 Hz: iin, sinun tarvitsee vain 4096 pisteen FFT saavuttaa 1 Hz: n lokerot * 4096 Hz, sitten tarvitset vain 4096 pisteen FFT: n 1 Hz: n astioiden saavuttamiseksi ja pystyt silti ratkaisemaan 2 kHz: n signaalin. Tämä pienentää FFT-lokeron kokoa, mutta myös pienentää signaalin kaistanleveyttä.

FFT: n avulla taajuuden tarkkuuden ja aikaresoluution välillä on aina kompromissi. Sinun on suoritettava vähän tasapainottamista kaikkien tavoitteiden saavuttamiseksi.

otsikkotunnisteilla ja joitain tämän viestin muotoiluja voisi mennä hyvistä suuriin. Kosketit kaikkeen, mitä halusin huomata, ja hyvin, mutta tapa, jolla viesti muotoillaan, vähemmän ihmisiä lukee sen, koska sen pituus on kohtuuton, jos annat otsikot jokaiselle osastolle, josta keskustelet, ihmiset siirtyvät mehukkaaseen bittiin se sopii heille ja + 1-merkintöjen määrä kasvaa paljon. Ei tietenkään minulta, koska olet jo ansainnut sen.
@kurtuk Sylkisin tämän nopeasti, siivoan muotoilun, kun minulla on vapaata aikaa (tai muokkaa sitä vapaasti, jos haluat).
-1
Huomaa, että sinun ei tarvitse laskea FFT: tä. Jos haluat tietää vain muutaman roskakorin, on halvempaa laskea vain näiden roskakorien DFT kuin suorittaa optimoitu FFT, joka laskee kaikki lokerot kerralla jakamalla monia toimintoja.
On myös syytä huomata, että analoginen taajuus / aika-alueen kompromissi koskee analogisia ja IIR-suodattimia.
jpc
2011-04-01 20:53:09 UTC
view on stackexchange narkive permalink

FFT: n perusresoluutio on \ $ f_s \ yli N \ $, missä \ $ f_s \ $ on näytteenottotaajuus.

Kyky erottaa kaksi hyvin lähellä olevaa signaalia riippuu voimakkaasti suhteellisista amplitudeista ja käytetty ikkunointitoiminto.

Saatat huomata, että Baudline-signaalianalysaattorilla pelaaminen on hyvä tapa kehittää intuitiota tässä asiassa - ja ei, suorittaa joitain FFT: itä ja piirtää yksi spektri kerrallaan Matlabissa tai Pythonissa / Numpy ei todellakaan ole sama.

MUOKKAA: On myös temppu syöttää nolla nollalla ja ottaa isompi FFT. Se ei paranna erilaistumiskykyäsi, mutta voi tehdä spektristä luettavamman. Se on pohjimmiltaan temppu, joka muistuttaa vektorigrafiikan antialiasointia.

Olenko ainoa, joka ei näe Latex-koodia oikein muotoillussa?
@stevenvh Ei toimi myöskään minulle.
Toimii minulle. Lateksi on vain 2 paikkaa.
Korjattu (jo jonkin aikaa). Firefoxin NoScript-lisäosa esti mathjax.org-sovelluksen.
supercat
2011-05-10 21:11:36 UTC
view on stackexchange narkive permalink

On syytä huomata, että FFT on vaihtoehto useiden erillisten summaparien (k = 0..näyte_pituus-1) laskemiselle näytteestä [k] * SineRefWave [j] [k] ja näytteestä [j] * CosRefWave [j] [k], kaikille j, jopa puolet näytteen pituudesta. Jos tarvitaan amplitudilukemia kaikilla näillä taajuuksilla, FFT laskee ne kaikki O (NlgN) -aikana, kun taas niiden yksittäin laskeminen vie O (N ^ 2) -aikaa. Toisaalta, jos tarvitaan vain muutaman taajuuden amplitudilukemia, on usein parempi yksinkertaisesti laskea ne yksittäin, varsinkin jos käytetään prosessoria tai DSP: tä, joka voi laskea tehokkaasti kyseisen summatyylin.

On myös syytä huomata, että vaikka FFT esim 20 ms: n näytteenottoikkunassa ei voida erottaa yksittäistä 1975 Hz: n ääntä tai N<25: n taajuuksien (1975-N) Hz ja (1975 + N) Hz yhdistelmää, sitä voidaan käyttää eristettyjen taajuuksien mittaamiseen tarkemmalla kuin näytteenotto-ikkuna, jos lähistöllä ei ole muuta spektrisuunnitelmaa Yksinäinen taajuus 1975 Hz nousee tasaisesti 1950 Hz: n ja 2000 Hz: n säiliöissä, samoin kuin 1974 Hz: n ja 1976 Hz: n äänien yhdistelmä. Eristetty 1974 Hz: n ääni sävyisi kuitenkin voimakkaammin 1950 Hz: n säiliössä kuin 2000 Hz: n säiliössä, ja 1976 Hz: n ääni ottaisi voimakkaammin 2000 Hz: n astiassa.

chaohuang
2013-01-26 03:54:24 UTC
view on stackexchange narkive permalink

Taajuusresoluutio ei riipu FFT: n pituudesta, vaan koko näytteenottoajan T pituudesta, ts. se on 1 / T, mikä on myös alin saamasi taajuuskomponentti.

Huomaa, nolla täyte ei lisää taajuuden tarkkuutta; Nollapehmustussignaalin DFT on vain parempi arvio alkuperäisen signaalin DTFT: stä.

Yhteenvetona, tarkoittiko tämä sitä, että alin taajuus on juuri annettu \ $ 1 / T \ $ ja suurin taajuus on näytetaajuus / 2?
Jason Kouvdos
2020-06-08 23:45:59 UTC
view on stackexchange narkive permalink

Yritän selittää tämän toisella tavalla. Ei 2 ^ n-numerot voivat auttaa. Ensinnäkin on hyödyllistä muistaa, mitä FFT (periaatteessa DFT) tekee: se kertoo-ikkuna-signaalin peruskosinin (ja sinin) ja sen seuraavan N-harmonisen kanssa että algoritmi luo. Digitaalisessa tietokoneessa algoritmi luo cos (2 pi tn) [+ j sin (2 pi nt), mutta jätetään sini sivuun], jossa t (eikä n - n on harmoninen tilaus) on roskakorien lukumäärä. Tämä on tärkein osa: digitaalisessa tietokoneessa aika kvantoidaan toimitetuissa roskakorissa . Joten tietokone laskee kosinin a-skaala-aika-arvosta, x harmoninen järjestys x 2 pi.

Oletetaan, että näytteenottotaajuus on 1 kHz; tämä tarkoittaa, että saat yhden arvon (yleensä jännitteen) 1 ms: n välein. Jos asetamme astioiden lukumääräksi 200, luotavan pisin kosinin ajallinen pituus on 200 x 0,001 = 0,2 s, joten sen jakso on 0,2 s, joten taajuus on 5 Hz. Tämä on kosini, jolla on vain yksi piikki ja yksi kouru koko säiliöryhmässä; se on f_min. Seuraavalla harmonisella on kaksi huipua ja kaksi kaukaloa, jokaisesta seuraavasta kolmesta yms. Yliaaltoja on 5, 10, 15 jne. Hz.

Jos olisimme valinneet 500 lokeroa, peruskosinus laajenisi enemmän: sen ajallinen pituus olisi 500 x 0,001 = 0,5 s => f_min = 2 Hz. Joten jälkimmäisessä tapauksessa kosinit rakennetaan sarjana 2,4,6,8 ... Näin ollen näemme, että roskakorien määrän lisääminen lisäsi algoritmin tarkkuutta.

Tarkkuutta lisättiin, koska algoritmin tutkintatyökalut , kosini (ja sini) kertoimet, ovat tiheämpiä. Tulosignaaliin vaikuttaa vain näytteenottotaajuus.

Jos käännämme kertolaskut ja muunnamme pisteet taajuuksiksi, ensimmäisen viestin tyypit tulevat esiin.

Rainald62
2016-02-15 19:02:53 UTC
view on stackexchange narkive permalink

Jos tiedät mahdollisten tulotaajuuksien alueen ja alue on kapea, voit käyttää alinäytteenottoa vähentääksesi näytteiden määrää ja aikaa FFT: n laskemiseen. 256 näytteellä ja 256 Hz: n näytetaajuudella saat haluamasi 1 Hz: n tarkkuuden ja aliaksettoman kaistanleveyden 128 Hz.

hamid
2015-11-09 19:10:13 UTC
view on stackexchange narkive permalink

katso tätä kuvaa. fs: n ja fft-tarkkuuden suhde

enter image description here

Tästä kuvasta ei ole täysin selvää, mitä tapahtuu.(Se ei auta, että kuva ei ole englanniksi.) Mitä tämä lisää, mitä muut vastaukset eivät ole maininneet?


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 2.0-lisenssistä, jolla sitä jaetaan.
Loading...