2016-02-05 136 views
0

我目前正在使用matplotlib計算光譜圖。我指定NFFT = 512,但結果圖像的高度爲257.然後,我試圖做一個STFT(短時傅里葉變換),它給了我512個維向量(如預期的那樣)。如果我繪製STFT的結果,我可以看到512個值中的一半隻是鏡像,所以我只能得到257個值(如matplotlib)。有人可以向我解釋爲什麼是這樣嗎?我一直認爲金融時報是一種基本的轉變,爲什麼會引入這種冗餘?Matplotlib光譜圖與STFT

謝謝。

+1

FFT尺寸見https://en.wikipedia.org/wiki/Fourier_transform#Basic_properties約共軛部分。您正在繪製真實分量的實際分量或實際信號的幅度,以反映正頻率和負頻率。 – tacaswell

回答

1

冗餘是因爲您輸入嚴格實數信號到您的FFT,因此DFT結果是複共軛(Hermitian)對稱。這種冗餘是由於嚴格實數輸入的所有虛部都爲零。但是這個DFT的輸出可以包含非零虛部指示相位。因此,這個DFT結果必須是共軛對稱的,以便結果中的所有虛數分量在兩個DFT結果半部(相同的幅度,但是相反的相位)之間抵消,表明嚴格實際的輸入。此外,基本變換的較低257個分檔將具有512(自由度)的自由度,就像輸入一樣。但是,譜圖會丟棄所有相位信息,因此它只能顯示257個唯一值(僅用於量值)。如果你向DFT輸入一個複數(例如正交)信號,那麼很可能不會有Hermitian冗餘,並且從512長度的DFT你將有1024個自由度。

如果你想512(給定的實輸入)的圖像高度,嘗試1024

+0

DF的參數是有道理的,但我仍然不明白爲什麼256個組件將與前256個相同。但tcaswell也提供了一個鏈接到維基百科,所以我想我會讀到這一點。謝謝:) – user667804

+0

有關對稱性的更多信息,請參閱更新。 – hotpaw2