DFT計算過程詳解
平時工作中,我們在計算傅里葉變換時,通常會直接調用Matlab中的FFT函數,或者是其他編程語言中已經為我們封裝好的函數,很少去探究具體的計算過程,本文以一個具體的例子,向你一步一步展示DFT的計算過程。
眾所周知,傅里葉變換的計算公式為:
對時域信號進行離散化:
根據歐拉定理:
DFT方程改寫為:
為第m個DFT輸出值,
為采樣點輸入,
假設N=4:
則:
m=0
m=1
m=2
m=3
這里需要補充一個采樣率的概念。
假設對原始信號的采樣率為:
對原始信號做16點DFT進行分析,則基頻為:
則:
X(0) = 1st frequency term ,with analysis frequency = 0 .31.25 = 0Hz;
X(1) = 2nd frequency term ,with analysis frequency = 1.31.25 = 31.25Hz;
X(2) = 3rd frequency term ,with analysis frequency = 2 .31.25 = 62.5Hz;
X(3) = 4th frequency term ,with analysis frequency = 3 .31.25 = 93.75Hz;
分析頻率的公式可以計為:
下面進入正題,對一個特定信號進行DFT分析。
原始信號為:
可以看出此信號包含1kHz和2kHz的信號,現在一步一步的對此信號做8點DFT分析。
假設采樣率為,即每
秒采集一個點,由於N=8,因此我們需要8個輸入采樣點來計算DFT,即對原始信號進行離散化為:
如果采樣率samples/s,則DFT的結果將計算的是輸入信號x(n)在分析頻率,0KHz,1kHz,2KHz,...,7kHz處的梯度值。
則:
當m=1時,即計算原始信號在1kHz下的梯度值:
當m=2時,即計算原始信號在2kHz下的梯度值:
當m=3時,即計算原始信號在3kHz下的梯度值:
當m=4時,即計算原始信號在4kHz下的梯度值:
當m=5時,即計算原始信號在5kHz下的梯度值:
當m=6時,即計算原始信號在6kHz下的梯度值:
當m=7時,即計算原始信號在7kHz下的梯度值:
即8個梯度值計算完成: