Minulla on paha ongelma spektrianalyysin kanssa.
Minulla on digitaalista reaalista dataa x, joka on saatu näytteenottotaajuudella 48 kHz.
Lasken sille periodogrammispektrin FFT:llä N pisteessä käyttäen käskyä
y=abs(fft(x)).^2.
Spektri on siis N-pisteinen y. Sitten lajittelen spektriarvot Matlabin käskyllä
[value, index]=sort(y).
value kuvaa spektriarvoja ja index niitä vastaavia taajuusarvoja.
Taajuudethan on normalisoitu välille [0,1] tai [-0.5,0.5], missä [0,0.5] vastaa positiivisia taajuuksia.
Nyt tulee kysymys: millä laskuoperaatiolla nämä index-arvot muutetaan alkuperäisiksi Hz-arvoiksi?
Minulla on digitaalista reaalista dataa x, joka on saatu näytteenottotaajuudella 48 kHz.
Lasken sille periodogrammispektrin FFT:llä N pisteessä käyttäen käskyä
y=abs(fft(x)).^2.
Spektri on siis N-pisteinen y. Sitten lajittelen spektriarvot Matlabin käskyllä
[value, index]=sort(y).
value kuvaa spektriarvoja ja index niitä vastaavia taajuusarvoja.
Taajuudethan on normalisoitu välille [0,1] tai [-0.5,0.5], missä [0,0.5] vastaa positiivisia taajuuksia.
Nyt tulee kysymys: millä laskuoperaatiolla nämä index-arvot muutetaan alkuperäisiksi Hz-arvoiksi?
Vastaukset 1
Vanhimmat
Kaksipuolinen spektri normalisoidaan välille [-0.5, 0.5]. Huomaa, että jos otat vain välin [0, 0.5], niin joudut kertomaan kahdella jotta signaalin energia säilyy. Reaalisen signaalin tapauksessa toinen puolikas riittää.
Alkuperäiseen kysymykseen vastaus on, että nuo taajuudet -0.5, 0.5 vastaavat Nyquistin taajuutta. Jos "alkuperäinen Hz-arvo" tarkoittaa esimerkiksi mittalaitteen mittataajuutta, niin kerrot tuon matlabin linspacen suoraan sillä mittalaitteen taajuudella. Laskuoperaation nimi siis on peruskoulusta tuttu kertolasku.