DFT计算过程详解

平时工作中,我们在计算傅里叶变换时,通常会直接调用Matlab中的FFT函数,或者是其他编程语言中已经为我们封装好的函数,很少去探究具体的计算过程,本文以一个具体的例子,向你一步一步展示DFT的计算过程。

众所周知,傅里叶变换的计算公式为:

 

计算DFT 的python库 dft计算例题_计算DFT 的python库

对时域信号进行离散化:

 

计算DFT 的python库 dft计算例题_计算DFT 的python库_02

根据欧拉定理:

 

计算DFT 的python库 dft计算例题_采样率_03

DFT方程改写为:

 

计算DFT 的python库 dft计算例题_采样率_04

计算DFT 的python库 dft计算例题_傅里叶变换_05

为第m个DFT输出值,

计算DFT 的python库 dft计算例题_采样率_06

 

 

 

计算DFT 的python库 dft计算例题_采样率_07

为采样点输入,

计算DFT 的python库 dft计算例题_采样率_08

 

假设N=4:

 

计算DFT 的python库 dft计算例题_采样率_09

 

 则:

m=0

 

计算DFT 的python库 dft计算例题_离散化_10

m=1

 

计算DFT 的python库 dft计算例题_傅里叶变换_11

 

 m=2

 

计算DFT 的python库 dft计算例题_离散化_12

m=3

 

计算DFT 的python库 dft计算例题_计算DFT 的python库_13

这里需要补充一个采样率的概念。

假设对原始信号的采样率为:

 

计算DFT 的python库 dft计算例题_傅里叶变换_14

对原始信号做16点DFT进行分析,则基频为:

 

计算DFT 的python库 dft计算例题_计算DFT 的python库_15

则:

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 的python库 dft计算例题_计算DFT 的python库_16

下面进入正题,对一个特定信号进行DFT分析。

原始信号为:

 

计算DFT 的python库 dft计算例题_计算DFT 的python库_17

可以看出此信号包含1kHz和2kHz的信号,现在一步一步的对此信号做8点DFT分析。

假设采样率为

计算DFT 的python库 dft计算例题_采样率_18

,即每

计算DFT 的python库 dft计算例题_计算DFT 的python库_19

秒采集一个点,由于N=8,因此我们需要8个输入采样点来计算DFT,即对原始信号进行离散化为: 

计算DFT 的python库 dft计算例题_傅里叶变换_20

 

则DFT的结果将计算的是输入信号x(n)在分析频率,0KHz,1kHz,2KHz,...,7kHz处的梯度值。

则:

 

计算DFT 的python库 dft计算例题_采样率_21

当m=1时,即计算原始信号在1kHz下的梯度值:

 

计算DFT 的python库 dft计算例题_傅里叶变换_22

 

 

计算DFT 的python库 dft计算例题_离散化_23

当m=2时,即计算原始信号在2kHz下的梯度值:

 

计算DFT 的python库 dft计算例题_采样率_24

当m=3时,即计算原始信号在3kHz下的梯度值:

 

计算DFT 的python库 dft计算例题_傅里叶变换_25

当m=4时,即计算原始信号在4kHz下的梯度值:

 

计算DFT 的python库 dft计算例题_傅里叶变换_26

当m=5时,即计算原始信号在5kHz下的梯度值:

 

计算DFT 的python库 dft计算例题_离散化_27

当m=6时,即计算原始信号在6kHz下的梯度值:

 

计算DFT 的python库 dft计算例题_傅里叶变换_28

当m=7时,即计算原始信号在7kHz下的梯度值:

 

计算DFT 的python库 dft计算例题_傅里叶变换_29

即8个梯度值计算完成:

 

计算DFT 的python库 dft计算例题_傅里叶变换_30