matlab 离散傅里叶变换_傅里叶系列(三)离散傅里叶变换(DFT)

在上一篇内容

ElPsyCongree:傅里叶系列(二)傅里叶变换的推导​zhuanlan.zhihu.com
9545b5cbc5d6da51b7f1e3cd4892f967.png

我们将傅里叶级数推导为傅里叶变换,而傅里叶变换计算的时候因为是一个积分,计算机并不是很好计算,所以要把积分换成一种累加形式,也就是本文要讨论的 离散傅里叶变化 DFT。

我们取上一篇的公式(7)

其中

因为傅里叶变化令

从而使一个累加的式子变成了一个积分,而DFT中
会根据输入的信号点数确定具体的值。具体计算公式为:

(注:

的计算方式是因为
的一个周期是
,N为你采样的点数)

因此我们可以简化公式为

因为标准化的傅里叶变化

有:

其中:

其中(1)为离散傅里叶逆变换,(2)为离散傅里叶变化。

代码实现:

先定义一个复数的结构体

public 

注:t为f数组的索引,n为F数组的索引,理清楚了代码很好理解

计算DFT,即已知一个 float 数组求频谱

public 

计算IDFT,即已知一个 float 数组求频谱

public 

随便输入一个float的数组做一下实验

double

结果如下:

ddb7825481cdb106f68ca09ba2a9b5fb.png

学过线性代数的会觉得有点像是 某个 维数很高的向量乘以 一个对应的矩阵,然后在乘以一个逆矩阵...转回来的过程。

我们记

得到DFT的矩阵:

以及IDFT的矩阵:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值