搞了這么久音頻算法,有些細節還沒有很清楚。
比如DFT和DCT有哪些區別,DFT系數為什么會是對稱的,同樣幀長的數據,各自的頻域分辨率是多少?
今天決定搞清楚這些問題,
首先DFT的系數對稱(2N點的數據做DFT,變換系數關於N點位置對稱)是因為DFT的的變換基是對0~2π分析的,因為0到π和π到2π對稱所以會對稱。可以參見DFT公式
而DCT的系數就不會對稱(2N點的數據做DCT,變換系數不對稱)是因為DCT的變換基是對0~π分析的,故不會存在變換關系,可參加DCT變換。(以DCT2型為例子)
DCT和DFT比較
再引用wikipedia上對DCT的解釋
注意里面的解釋:DCT相當於一個長度是他兩倍的實偶函數DFT。那么下面的問題來了,同樣長度N的信號做DCT和DFT,各自的頻域分辨率是多少。
注意,
上面引用給出另外兩個引申,
第一:DST相當於一個長度是它兩倍的實奇函數DFT。
第二:MDCT相當於對交疊的數據進行DCT。
第二類問題:
對采樣率為f hz的信號進行長度為2N的DFT分析它的頻域分辨率是多少,第2N個信號表示多少hz:
答案:分辨率是f/2N。得到的第2N個頻域系數,他代表的2π,也就是f Hz的信號。
對采樣率為f hz的信號進行長度為2N的MDCT分析它的頻域分辨率是多少,第N個信號表示多少hz(注意MDCT的輸入是輸出的2倍):
答案:分辨是是f/2N。得到的第N個頻域系數,他代表的π,也就是f/2 Hz的信號。
對采樣率為f hz的信號進行長度為2N的DCT分析它的頻域分辨率是多少,,第2N個信號表示多少hz:
答案:分辨是是f/2N。得到的第2N個頻域系數,他代表的π,也就是f/2 Hz的信號。
藍色:表示注意。
紅色:表示不確定。
紅色的部分我不確認我分析的結果,希望有人能給些幫助。
本文不含MDCT,MLT和DCT的詳細區別,編碼特性等等,尤其是針對MLT和MDCT建議查閱Malvar的論文。有時間另將分析。