我有一個程序,繪製頻譜分析(Amp/Freq)的信號,這是很好的DFT轉換爲極地。但是,這並不是像winamp(右上角)或者其他任何音頻軟件地塊那樣的圖表。我不確定這種圖形稱爲什麼(如果它有一個獨特的名字),所以我不知道該找什麼。「Winamp風格」的頻譜分析儀
我對頻率軸是基礎的兩個指數,振幅軸困惑我雖然積極。
任何指針?
我有一個程序,繪製頻譜分析(Amp/Freq)的信號,這是很好的DFT轉換爲極地。但是,這並不是像winamp(右上角)或者其他任何音頻軟件地塊那樣的圖表。我不確定這種圖形稱爲什麼(如果它有一個獨特的名字),所以我不知道該找什麼。「Winamp風格」的頻譜分析儀
我對頻率軸是基礎的兩個指數,振幅軸困惑我雖然積極。
任何指針?
嗯,我不是100%確定你是什麼意思,但肯定它只是從FFT中獲取數據?
如果你想要得到的數據,你有(對於44KHz的文件),在22kHz的頻率點,11KHZ 5.5Khz等,那麼你可以使用一個小波分解,我猜...
此線可能幫你的有點...
Converting an FFT to a spectogram
相同的排序爲頻譜我猜信息...
要生成你需要做以下步驟功率譜:
10 * log10(re * re + im * im)
這給出了對數幅度(即dB爲單位)與線性頻率。
如果您還想要一個對數頻率刻度,那麼您將需要累積適當範圍的分檔的大小(並且您需要一個相當大的FFT開始)。
其實是一個有趣的問題。我知道你在說什麼;頻率軸當然是對數的。但是幅度呢?針對另一張海報,幅度不能簡單地以dB爲單位,因爲dB沒有零概念。這引入了量化誤差,SNR和動態範圍的思想。假設接收的數字化(即離散時間和離散振幅)時域信號x [n]等於s [n] + e [n],其中s [n]是發射的離散信號時間信號(即連續振幅)和e [n]是量化誤差。假設x [n]用b位表示,爲簡單起見,取[0,1]中的值。那麼e [n]的最大峯峯幅度是一個量化級別,即2^{ - b}。動態範圍定義爲以分貝爲單位,20 log10(max-to-peak | s [n] |)/(max-to-peak | e [n] |)= 20 log10 1 /(2^{ - b})= 20b log10 2 = 6.02b dB。對於16位音頻,動態範圍爲96 dB。對於8位音頻,動態範圍爲48 dB。
那麼Winamp如何繪製幅度呢?我的猜測:
最小振幅假設爲-6.02b dB,最大振幅爲0 dB。在視覺上,Winamp在考慮這些閾值時繪製窗口。
另一個非線性圖,如log(1 + X)被使用。這個函數總是非負的,當X很大時,它近似於log(X)。
有沒有其他專家知道?讓我知道你的想法。我也很感興趣,究竟是如何實現的。
你需要的是功率譜圖。你必須計算你信號當前窗口的DFT。然後將每個值平方。
這可能是有趣的:http://stackoverflow.com/questions/2466196/normalize-fft-magnitude-to-imitate-wmp。 – mtrw 2010-03-26 05:02:52