傅立叶变换

讯号

发送信号可能很棘手。 从广义上讲,信号是一种数学函数,从源发送到接收器,其中包含编码成其形式的信息。 从历史上看,模拟信号处理的示例包括立体声上的音量,低音和高音旋钮,并通过电容器或电阻器之类的电子元件工作。

但是,今天发生的几乎所有信号处理都是数字的。 由于计算机功能强大,因此这种类型的处理使我们能够比任何其他类型的处理允许从信号中解码更多的信息。 但是,数字计算本质上本质上是离散的,这意味着实际上连续的信号(如正弦波)以离散的方式处理,尽管它非常接近于连续性。

但是如何?

很自然地想知道该处理是如何进行的。 信号处理方法所基于的数学基础是傅立叶分析。 这个数学领域与信号处理相关的基本定理是,所有函数都可以由不同频率的三角函数之和来近似。 您可以在下图中看到此操作:

因此,我们可以将任何函数表示为足够大的不同频率的三角函数之和-那么呢? 嗯,这意味着可以分析任何信号,从环绕木星运行的卫星的图像数据到马里亚纳海沟的雷达数据,再到某人的声音记录,我们都可以对其进行分析,从而找到包含该信号的分量函数。 这使我们可以极大地简化信号分析。

傅立叶变换

确切地说,我们通过称为傅立叶变换的过程来做到这一点。 傅里叶变换所做的是,它接收一个信号,该信号可能由一整套不同频率的函数组成,然后将它们从时域带入频域。 即,它将作为时间函数的信号分解为组成该信号的各种频率。 如下图所示,对信号贡献更大的分量(幅度或高度更高)在频域中表示为较大的尖峰。

这是不同傅立叶变换对的一些示例。

但是我们不能像在纸上计算积分那样天真地应用变换。 我们正在使用计算机,据我们所知,计算机与您或我的思维方式大不相同。也就是说,我们需要在应用经过改进的傅立叶变换之前,将连续的信号分解并分解分成小块,可由计算机读取。 为了在应用傅立叶变换之前更精确地了解所发生的情况,预期以后将进行更严格的处理,我们可以分步骤进行。

  1. 我们接受一个信号,并想象它是周期性的-也就是说,重写其功能,使其每隔一段时间重复一次。
  2. 我们的连续信号在不连续的时间段进行采样。
  3. 我们使用一些数值方法来近似这些样本并基于这些样本生成一个连续函数。
  4. 然后我们离散化我们已经拟合的连续函数,因此时间和幅度都是离散的。
  5. 我们应用傅立叶变换移至频域。

下图直观地显示了这些步骤。

应用

因此,我们可以接收信号,将其分解为组件功能,然后按频率组织它们。 但是为什么要这么做呢? 好吧,简单的事实是,它为我们提供了有关信号的大量信息。 考虑下图,一个人的声音在说一个词。

我们可以从该图像中收集一些信息。 一方面,如果我们想对声音进行某种程度的清理,则只需删除一些很小的微不足道的频率,例如150和250、300和400、450和500 Hz之间的频率,因为它们很可能是由于噪声引起的,因为它们分布在很大的范围内,对整体信号的贡献很小。 我们可以做很多事情-如果由于某种原因我们的耳朵非常敏感,我们甚至可以消除所有非常高的频率。

这是傅立叶变换在信号处理中的非常普遍的应用-这就是为什么.mp3文件的大小通常约为CD上相同数据大小的1/10。

但是,更有趣的是,我们可以注意到并确认的是,此人的语音存在三个主要谐波,分别与三个峰值相对应。 在进行傅立叶分析之前的几天里,确定这些谐波非常困难。 我们能够更好地理解这些谐波,这一事实彻底改变了我们对某些乐器的理解,尤其是对失真的理解,例如从吉他踏板或合成器获得的失真。

结论

可是等等! 所有这一切都有问题! 实际执行离散傅里叶变换的有效算法尚不清楚。 实际上,在首次提出离散傅立叶变换后的数百年中,执行该算法的最有效算法是O(n²)。 如此低的效率,甚至没有人真正尝试处理数字信号。 尤其是在过去,当计算机占据整个房间时,仅通过无线电传输信息比尝试进行数字传输更为有效。 但是在1965年,IBM和Princeton的几个人Cooley和Tukey提出了一种将效率提高到O(n log n)的算法。 如果您只需要处理1000个数据点(甚至远不及60年代,实际处理的数据点就远远少于一个),那么使用旧算法将需要进行一百万次计算! 新算法大约只需要6900。适当地,他们的算法被命名为快速傅里叶变换,它彻底改变了我们处理信号处理的方式。

未来的博客文章将详细讨论快速傅立叶变换的数学原理,并提供O(n²)和O(n log n)算法的实现方式以进行比较。