离散傅立叶变换中的真实频率信息
(录制的视频在: https://www.bilibili.com/video/BV1m14y1Y7wz/)
我们做信号处理或者做数字通信的时候,经常会用到离散傅立叶变换,而离散傅立叶变换中,对每个离散的点,我们看到的都是下标(第几个点,即 index),例如,我们对时域中 256 个采样点 做离散傅立叶变换,我们只是知道下标 0,1,2... 等等,转到频域后,我们也是拿到 256 个频域信息,我们用大写的字母来表示频域信息,则我们拿到
。而我们有时候是关心频域中的
这个是对应哪个真实频率的,即是多少赫兹的频率下的?本篇短文用浅显易懂的文字来说明一下这个事情。
我们知道,在连续傅立叶变换中,是有真实的频率信息的,下面是连续傅立叶变换的公式:
我们很容易看到,上面公式中的 f 就是实际的频率,例如,我们关心 100Hz (Hz:赫兹) 频率下的信息,则把 f=100 代入上式:
不失一般性,我们假如拿到 N 个离散的时域信号,我们知道,可以用下面的离散傅立叶变换公式来计算频域的信息:
我们可以很容易猜测,上面公式中的 就隐含了频率的信息,那么如何才能得到频率信息呢?
这里,必需要先知道,我们拿到的离散的数据点,是按照什么样的采样率采集得到的,例如一秒钟采集 1000 个点,则采样率就是 1000,我们用 来表示采样率,表示一秒钟采集了
个样点。
则公式 (1) 中的 n,就可以转成具体的时间,即 ,这个时间单位就是秒,可以理解为是连续傅立叶变换公式中的 t .
那么在公式(1) 中,把 n 除以了 ,为了保持恒等,我们可以在
中乘以一个
,则
变成
,结合上面的讨论,可以把公式(1) 改写成如下形式:
仔细打量公式(2),式子中的
等同于连续傅立叶变换中的时间 t
等同于连续傅立叶变换中的频率 f
连续傅立叶变换中的频率 f 是连续的,而离散傅里叶变换中的频率则是离散的,相邻的两个频率点分别为: 和
. 因此,离散傅立叶变换中,最小的频率间隔就是
.
下面举个例子:假如采样率为 25600赫兹,我们连续采样 256 个数据来做离散傅立叶变换,则变换到频域后,我们能看到的最小频率间隔为 ,即 100赫兹。如果采样前的信号,频率是 150赫兹的,则我们可以看到这个150赫兹没有落到100赫兹的整数倍上,经过离散傅里叶变换后,我们看到150赫兹周围相邻的整数倍的100Hz 上都有信号,那么,我们这个采样之后的频率分析就不是很准确,为了提高频率分析的精度,我们需要在时间上连续采样更多的数据,假如采样 512 个数据,则频率间隔就变成
,即 50赫兹,频率精度就提高了一倍。
补充:
虽然采样频率是 ,且
,但是,不等于频率范围是 从
。 根据那奎斯特采样定理,我们能采集到的频率,最大是
. 所以,能表达的频率范围其实是:
另外,我们可以从线性空间正交基的角度来想一下。这些傅立叶变换,其实是 N 维空间中的变换。其正交基(暂时忽略单位向量的问题,即不考虑是否是单位正交基,即基向量的长度是否是 1,我们暂时忽略,感兴趣的朋友可以看我有一个视频是讲 “傅立叶变换前后能量守恒问题”)为:
其中:
所以, 这个频率,对应的是
这个频率. 我们画个图来直观感受一下为什么会这样。
