首页 > 其他分享 >PART2 离散傅里叶变换

PART2 离散傅里叶变换

时间:2022-12-30 20:22:06浏览次数:59  
标签:begin end 傅里叶 equation 离散 PART2 frac aligned omega

PART 2 离散傅里叶变换

1. 离散时间傅里叶变换

以上内容,属于对傅里叶变换较为基础的数学内容,在《微积分》等课程中有不少详尽的介绍。接下来,将会面对如何在计算机中实现傅里叶变换的问题。

首先,观察傅里叶变换公式:

\[\begin{equation*} \begin{aligned} F(\omega) &= \left.\int_{-\infty}^{\infty} \right. f(t) e^{-j\omega t} dt \\ f(t) &= \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega)e^{j\omega t} d\omega \end{aligned} \end{equation*} \]

有这么几个问题:

  1. 在时域上,是负无穷到正无穷的积分,显然在计算机上无法做到;
  2. 在频域上,也是负无穷到正无穷的积分,显然在计算机上也无法做到;
  3. 原函数 \(f(t)\) 是连续非周期函数,“连续”这个条件在计算机上没法实现。

因此,需要对傅里叶变换进行离散化,从而更好的在计算机上实现相关功能。

首先,我们引入离散时间傅里叶变换。

1.1 离散时间傅里叶变换

为了解决上面提出的第三个问题,自然而然地引入采样的概念。通过采样,将原来的连续信号转变为离散信号,就可以作为计算机的输入了。

沿用之间的假设:对原信号做采样处理

\[f^*(t) = \sum _{n=-\infty}^{\infty}f(t)\cdot \delta(t-nT_s) \]

其中,\(f^*(t)\) 是采样后的信号序列;\(\delta(t-nT_s)\) 为狄克拉函数,\(nT_s\) 是采样的时刻, \(T_s\) 是采样时间间隔,其倒数 \(f_s = \frac{1}{T_s}\) 表示采样频率。假设这满足香农采样定律,\(f_s \ge 2f_{max}\)

将采样信号带入傅里叶变换中去:

\[\begin{equation*} \begin{aligned} F(\omega) &= \left.\int_{-\infty}^{\infty} \right. f^*(t) e^{-j\omega t} dt \\ & = \left.\int_{-\infty}^{\infty} \right. \sum _{n=-\infty}^{\infty}f(t)\cdot \delta(t-nT_s)e^{-j\omega t} dt \\ &= \sum _{n=-\infty}^{\infty} \left.\int_{-\infty}^{\infty} \right.f(t)e^{-j\omega t}\cdot \delta(t-nT_s)dt \end{aligned} \end{equation*} \]

根据狄克拉函数的筛选性质:

\[\begin{equation} \begin{aligned} F(\omega) &= \sum _{n=-\infty}^{\infty} \left.\int_{-\infty}^{\infty} \right.f(t)e^{-j\omega t}\cdot \delta(t-nT_s)dt \\ & = \sum _{n=-\infty}^{\infty}f(nT_s)e^{-j\omega n T_s} \end{aligned} \end{equation} \]

而在计算机的存储中,通常不会涉及 \(T_s\) 的值具体是多少,而是按照一个序列进行存储所以采用序列的形式代替,有:

\[\begin{equation} \begin{aligned} F(\omega) & = \sum _{n=-\infty} ^ {\infty} f(n) e^ {-j\omega n} \end{aligned} \end{equation} \]

此式即为离散时间的傅里叶变换(DTFT)

观察 (3) 式,我们发现相比于原来的傅里叶变换,首先是积分符号变成了求和符号,这就说明原来的连续时间变量变成了离散时间变量(狄克拉函数的作用)同时,在采样定律的限制下,频域不再是无穷,而是约束在 \(\frac{f_s}{2}\) 之内;

其次是函数自变量由 t 变成了 n,n是序列的索引,满足 \(t = n \times T_s\) ,这样,\(T_s\) 就作为离散时间的最小分度,称为时间分辨率。

最后,发现即便是解决了连续时间的问题,但是求和上下限依旧为无穷,即针对的还是无限长时间序列,得到一个无限长的频谱序列,无法在计算机上实现。因此,需要更近一步处理,即为离散傅里叶变换。

2. 离散傅里叶变换

在离散时间序列傅里叶变换中,有:

\[\begin{equation*} \begin{aligned} F(\omega) & = \sum _{n=-\infty} ^ {\infty} f(n) e^ {-j\omega n} \end{aligned} \end{equation*} \]

我们想,是否可以通过一定的方式,改变无限长的时间序列。幸运的是,在计算机的采样过程中,得到的一定是一段序列,而不是无限长的序列!这就说明,傅里叶变换中时间无限长的概念并不存在。然而,对于这一段时间序列,显然是不能进行傅里叶变换的。这就又回到了非周期函数做傅里叶展开时的问题,面临两种处理方式:

如果让周期趋于无穷,显然不可行。所以只能进行周期延拓。而一旦进行周期延拓,对应的频谱就变成了离散的,受限于采样定律,又是有限的。所以,沿着这个思路就可以解决最初提出的三个问题。

2.1 离散傅里叶变换

假设我们得到的序列共有 N 个数据,那么对应的离散傅里叶变换就是:

\[\begin{equation*} \begin{aligned} F(\omega) & = \sum _{n=0} ^ {N-1} f(n) e^ {-j\omega n} \end{aligned} \end{equation*} \]

但是注意到,周期函数的频谱是离散的,显然不能用 \(\omega\) 作为变量。

类似于时间分辨率,离散的频率一定存在最小分度,将其称为频率分辨率,记作:\(\omega_s\) ,令 k 作为离散频谱的索引,有 \(\omega = k\omega_s\) ,类似于 \(T_s\) 由采样频率决定,\(\omega_s\) 由信号周期决定。这是因为周期越大,频率越小,角频率也就越小,最大的周期就是 \(T=NT_s\)

此时:

\[\begin{equation*} \begin{aligned} F(k) & = \sum _{n=0} ^ {N-1} f(n) e^ {-j k\omega_s n} \\ & = \sum _{n=0} ^ {N-1} f(n) e^ {-j k \frac{2\pi}{T} n} \\ & = \sum _{n=0} ^ {N-1} f(n) e^ {-j k \frac{2\pi}{NT_s} n} \end{aligned} \end{equation*} \]

在计算机的存储中,认为 \(T_s=1\),将 n 变为序列,就有离散傅里叶变换(DFT):

\[\begin{equation*} \begin{aligned} F(k) & = \sum _{n=0} ^ {N-1} f(n) e^ {-j 2\pi \frac{k}{N} n} \end{aligned} \end{equation*} \]

我们再回到最初的傅里叶变换,是否也存在离散傅里叶逆变换?答案是存在的。这里不加证明的给出离散傅里叶变换式:

\[\begin{equation*} \begin{aligned} f(n) & = \frac{1}{N}\sum _{n=0} ^ {N-1} F(k) e^ {j 2\pi \frac{k}{N} n} \end{aligned} \end{equation*} \]

就此,得到离散傅里叶变换对:

\[\begin{equation} \begin{aligned} F(k) & = \sum _{n=0} ^ {N-1} f(n) e^ {-j 2\pi \frac{k}{N} n} \\ f(n) & = \frac{1}{N}\sum _{k=0} ^ {N-1} F(k) e^ {j 2\pi \frac{k}{N} n} \end{aligned} \end{equation} \]

观察 (3) 式,可以看出:

  1. 在时域上,通过采样,得到 0~N-1 共 N 个时域数据点,这些时域点之间实际的时间间隔是 \(T_s\) ,对N个点进行周期延拓,即可得到离散的频谱。采样定律限制了离散的频谱不是无限的。
  2. 在频域上,通过采样,得到 0~N-1 共 N 个频域数据点,这些频域点之间实际的频率间隔是 \(\omega_s\) ,对N个点进行周期延拓,即可得到离散的时谱。采样定律限制了离散的时谱不是无限的。
  3. 逆变换中的 N 分之一是从 \(d\omega\) 中提出来的。

2.2 离散傅里叶逆变换的证明

在后续的探索中,发现还是有必要对离散傅里叶逆变换(IDFT)进行一个简单的证明。

由傅里叶逆变换公式:

\[\begin{equation*} \begin{aligned} f(t) &= \frac{1}{2\pi} \int_{-\infty}^{\infty} F(\omega)e^{j\omega t} d\omega \end{aligned} \end{equation*} \]

在离散化后,取

\[\begin{equation*} \begin{aligned} t &= nT_s \\ \omega &=k\omega_s \end{aligned} \end{equation*} \]

其中满足

\[\begin{equation*} \begin{aligned} T_s &= \frac{1}{f_s} \\ \omega_s &=\frac{2\pi}{T}=\frac{2\pi}{NT_s} \end{aligned} \end{equation*} \]

此时,对 \(dw\) 的积分可以看作是对 \(k\omega_s\) 中 k 的求和,因此:

\[\begin{equation*} \begin{aligned} f(nT_s) &= \frac{1}{2\pi} \sum _{k=0}^{N-1}F(k\omega_s)e^{jk\omega_s nT_s} d(k\omega_s) \end{aligned} \end{equation*} \]

当序列化表示, \(T_s=1\) 时,有:

\[\begin{equation*} \begin{aligned} f(n) &= \frac{1}{2\pi} \sum _{k=0}^{N-1}F(k)e^{jk\frac{2\pi}{NT_s} nT_s} d(k\frac{2\pi}{N})\\ &= \frac{1}{N} \sum _{k=0}^{N-1}F(k)e^{j2\pi \frac{k}{N} n} \end{aligned} \end{equation*} \]

即可得证离散傅里叶逆变换。

2.3 关于\(\frac{1}{N}\) 的说明

事实上,离散傅里叶变换也可以从傅里叶级数推出。(关于这部分内容,将在最后的说明中加以阐述)

由傅里叶级数:

\[\begin{equation*} \begin{aligned} f(t) &= \sum_{-\infty}^{\infty} F(n\omega_1) e^{jn\omega_1 t} \\ F(n\omega_1) &=\frac{1}{T_1} \left[ \left.\int_{-\frac{T_1}{2}}^{\frac{T_1}{2}} \right. f(t) e^{-jn\omega_1 t} dt\right] \quad n &= 0, \pm1, \pm2, \cdots \end{aligned} \end{equation*} \]

当取:

\[\begin{equation*} \begin{aligned} t &= nT_s \\ T_1&=NT_s\\ \omega &=k\omega_s \\ T_s &= \frac{1}{f_s} \\ \omega_s &=\frac{2\pi}{T_1}=\frac{2\pi}{NT_s} \\ \end{aligned} \end{equation*} \]

可以得到:

\[\begin{equation} \begin{aligned} F(k) & = \frac{1}{N}\sum _{n=0} ^ {N-1} f(n) e^ {-j 2\pi \frac{k}{N} n} \\ f(n) & = \sum _{k=0} ^ {N-1} F(k) e^ {j 2\pi \frac{k}{N} n} \end{aligned} \end{equation} \]

(5) 式与 (4) 式比较,发现 \(\frac{1}{N}\) 的位置出现在不同的地方!那么这两种公式孰对孰错?

事实上,这两种写法都是正确的。因为在傅里叶变换的过程中,我们关注点在于后面的 \(F(k)\) ,至于前面的系数,更多的是为了满足正变换和逆变换之间的自洽,即可以相互推导即可。所以, \(\frac{1}{N}\) 的位置不论放在哪里都可以,哪怕写成下面的形式也是可以的:

\[\begin{equation} \begin{aligned} F(k) & = \frac{1}{\sqrt{N}}\sum _{n=0} ^ {N-1} f(n) e^ {-j 2\pi \frac{k}{N} n} \\ f(n) & = \frac{1}{\sqrt{N}}\sum _{k=0} ^ {N-1} F(k) e^ {j 2\pi \frac{k}{N} n} \end{aligned} \end{equation} \]

再利用Python实现的过程中,我们可以再次深刻的认知到这一点。

接下来,我们通过Python中程序验证公式的正确性。[附录 Ⅱ ]


了解更多 傅里叶变换

标签:begin,end,傅里叶,equation,离散,PART2,frac,aligned,omega
From: https://www.cnblogs.com/VicoZhang/p/17014032.html

相关文章

  • 傅里叶变换在机器视觉的运用
    傅里叶变换在机器视觉的运用这样一幅图像1、是如何生成的?2、体现了什么?3、如何处理并用来增强原始图片数据?一、这样的图像是如何生......
  • 离散傅里叶变换学习
    目录1.什么是离散傅里叶变换2.离散傅里叶变换公式的数学推导3.离散傅里叶变换的物理意义1.什么是离散傅里叶变换离散傅里叶变换(DiscreteFourierTransform,DFT)是傅......
  • Qt做大型软件开发技术选型Part2:Qt调用C#编写的COM组件
    Qt做大型软件开发技术选型Part2:Qt调用C#编写的COM组件之前有提到过我们项目部现在正在用Qt重构一个大型软件,现在的情景是这样的:原先的软件是通过一个C++(CLR)的主程序,调......
  • 离散复习——数理逻辑、集合关系
    逻辑与证明命题逻辑proposition命题negation否定Conjunction合取Disjunction析取(inclusiveor)Implication蕴涵,条件Biconditional等价contrapositive逆否in......
  • part2_03Sklearn数据预处理
    6非结构性数据预处理非结构化数据是数据结构不规则或者说是不完整,没有预设的数据模型或者结构,不便使用数据库、模型及标准的数据接口表现的数据,包括所有格式的文本、图片......
  • 离散复习——图论
    TypesofGraphAdjacencyListIsomorphismpath平面图......
  • 快速傅里叶变换
    {据说FFTW(FastestFourierTransformintheWest)是世界上最快的FFT。为了详细了解FFTW以及为编程方便,特将用户手册看了一下,并结合手册制作了以下FFTW中文参考。其中......
  • Matlab短时傅里叶变换和小波变换的时频分析
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • !!!!深入理解离散傅里叶变换(DFT)
    前面写过一篇傅里叶变换的文章:https://zhuanlan.zhihu.com/p/66117227但是在工程应用中,得益于数字技术的应用,绝大多数傅里叶变换的应用都是采用离散傅里叶变换(DFT),更确切......
  • 离散数学--关键leeds笔记
    TypesofProofdirectproofProveα→βby:assumeαistrueusethistoderiveβ.indirectproofaproofthatisnotdirect;includes:proofbycontraposition......