PART2 离散傅里叶变换
PART 2 离散傅里叶变换
1. 离散时间傅里叶变换
以上内容,属于对傅里叶变换较为基础的数学内容,在《微积分》等课程中有不少详尽的介绍。接下来,将会面对如何在计算机中实现傅里叶变换的问题。
首先,观察傅里叶变换公式:
有这么几个问题:
- 在时域上,是负无穷到正无穷的积分,显然在计算机上无法做到;
- 在频域上,也是负无穷到正无穷的积分,显然在计算机上也无法做到;
- 原函数
是连续非周期函数,“连续”这个条件在计算机上没法实现。
因此,需要对傅里叶变换进行离散化,从而更好的在计算机上实现相关功能。
首先,我们引入离散时间傅里叶变换。
1.1 离散时间傅里叶变换
为了解决上面提出的第三个问题,自然而然地引入采样的概念。通过采样,将原来的连续信号转变为离散信号,就可以作为计算机的输入了。
沿用之间的假设:对原信号做采样处理
其中,
将采样信号带入傅里叶变换中去:
根据狄克拉函数的筛选性质:
而在计算机的存储中,通常不会涉及
此式即为离散时间的傅里叶变换(DTFT)
观察 (3) 式,我们发现相比于原来的傅里叶变换,首先是积分符号变成了求和符号,这就说明原来的连续时间变量变成了离散时间变量(狄克拉函数的作用)同时,在采样定律的限制下,频域不再是无穷,而是约束在
其次是函数自变量由 t 变成了 n,n是序列的索引,满足
最后,发现即便是解决了连续时间的问题,但是求和上下限依旧为无穷,即针对的还是无限长时间序列,得到一个无限长的频谱序列,无法在计算机上实现。因此,需要更近一步处理,即为离散傅里叶变换。
2. 离散傅里叶变换
在离散时间序列傅里叶变换中,有:
我们想,是否可以通过一定的方式,改变无限长的时间序列。幸运的是,在计算机的采样过程中,得到的一定是一段序列,而不是无限长的序列!这就说明,傅里叶变换中时间无限长的概念并不存在。然而,对于这一段时间序列,显然是不能进行傅里叶变换的。这就又回到了非周期函数做傅里叶展开时的问题,面临两种处理方式:
如果让周期趋于无穷,显然不可行。所以只能进行周期延拓。而一旦进行周期延拓,对应的频谱就变成了离散的,受限于采样定律,又是有限的。所以,沿着这个思路就可以解决最初提出的三个问题。
2.1 离散傅里叶变换
假设我们得到的序列共有 N 个数据,那么对应的离散傅里叶变换就是:
但是注意到,周期函数的频谱是离散的,显然不能用
类似于时间分辨率,离散的频率一定存在最小分度,将其称为频率分辨率,记作:
此时:
在计算机的存储中,认为
我们再回到最初的傅里叶变换,是否也存在离散傅里叶逆变换?答案是存在的。这里不加证明的给出离散傅里叶变换式:
就此,得到离散傅里叶变换对:
观察 (3) 式,可以看出:
- 在时域上,通过采样,得到 0~N-1 共 N 个时域数据点,这些时域点之间实际的时间间隔是
,对N个点进行周期延拓,即可得到离散的频谱。采样定律限制了离散的频谱不是无限的。 - 在频域上,通过采样,得到 0~N-1 共 N 个频域数据点,这些频域点之间实际的频率间隔是
,对N个点进行周期延拓,即可得到离散的时谱。采样定律限制了离散的时谱不是无限的。 - 逆变换中的 N 分之一是从
中提出来的。
2.2 离散傅里叶逆变换的证明
在后续的探索中,发现还是有必要对离散傅里叶逆变换(IDFT)进行一个简单的证明。
由傅里叶逆变换公式:
在离散化后,取
其中满足
此时,对
当序列化表示,
即可得证离散傅里叶逆变换。
2.3 关于 的说明
事实上,离散傅里叶变换也可以从傅里叶级数推出。(关于这部分内容,将在最后的说明中加以阐述)
由傅里叶级数:
当取:
可以得到:
(5) 式与 (4) 式比较,发现
事实上,这两种写法都是正确的。因为在傅里叶变换的过程中,我们关注点在于后面的
再利用Python实现的过程中,我们可以再次深刻的认知到这一点。
接下来,我们通过Python中程序验证公式的正确性。[附录 Ⅱ ]
了解更多 傅里叶变换
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~