FS FT DFS DTFS DTFT DFT FFT 概念的全面梳理,我们来聊聊信号处理|CSDN创作打卡

信号与系统的时域分析

我们在做信号处理时,通常就是时域频域分析两个角度。时域分析角度下,我们开始在时间维度上接触“信号”,引入了奇异函数 (冲激函数) 的概念,使得信号分析更加的便利。明确了线性时不变 (Linear Time Invariant, LTI) 系统的概念,知道了一个 LTI 连续系统和 LTI 离散系统在数学上的表述形式是微分方程和差分方程。

在时域分析信号通过系统的方法为:

  1. 得到 LTI 系统的方程。
  2. 通过解微分方程和差分方程的方法,根据给定的初始条件和输入激励,求得通解和特解,即为信号通过系统的完全响应。
  3. 或者通过将完全响应分解为零输入响应和零状态响应两部分的方法,求得信号通过系统的完全响应。

这里由于求解的方式不同,有了零输入响应、零状态响应、自由响应、强迫响应、齐次解、特解、瞬态响应、稳态响应的概念。没必要深究他们,因为这种通过解方程的方式并不会在实际中使用。

在此期间呢,我们接触了很多信号的性质,LTI 系统的性质,并学习了一种特定的信号通过系统的结果——冲激响应、单位序列响应
由于连续信号可以分解为众多冲激函数的积分,离散信号可以分解为众多单位冲击序列的求和,那么只要知道了冲激响应和单位序列响应,就能够通过线性和时不变性求得任意信号输入的输出,并由此引出了最重要的运算——卷积积分、卷积和
信号 f ( t ) f(t) f(t) x ( n ) x(n) x(n) 通过 LTI 系统得到的输出即为与其冲激响应或单位序列响应的卷积运算 h ( t ) ∗ f ( t ) h(t)*f(t) h(t)f(t) h ( n ) ∗ x ( n ) h(n)*x(n) h(n)x(n)

这才是时域分析的经典操作,不过这里所说的信号通过系统的输出指的都是其零状态响应,因为一般系统都是零状态的,所以没有特别说明,以后的分析中也都默认这一点。

此外还有一种运算叫做相关运算,它在信号分析中是一个很常用的工具,用来比较做运算的两个信号的相似程度,最经典的应用就是用来寻找输出和输入信号的延时有多长。它并不属于本文要讲解的内容,但是为了知识的完整性我只提这么一句。

信号与系统的频域分析

自此,信号的时域分析内容全部就结束了,因为人类是生活在时间线上的生物,时域分析的内容虽然引入了很多概念和运算,但是多想想还是不难接受的。下面就要进入属于通信人饭碗的内容了,频域分析。在这,你将会直面那些让你抓狂的变化,傅里叶级数 (Fourier Series, FS)、傅里叶变换 (Fourier Transform, FT)、离散傅里叶级数 (Discrete Fourier Series, DFS)、离散时间傅里叶变换 (Discrete Time Fourier Transform, DTFT)、离散傅里叶变换 (Discrete Fourier Transform, DFT)、拉普拉斯变换 (Laplace Transform, LF)、Z 变换 (Z Transform, ZT)

我是否还要出一篇编程相关的文章,从代码角度讲解 FFT、DFFT、栅栏效应等问题?如果需要的话评论区留言吧,如果需要的人多我就再写一篇。

傅里叶级数 (Fourier Series, FS)

一般都会从 FS 开始引入频域分析的概念,因为级数是我们在高数中学习过的,我们只需要承认一个事实:周期信号无论连续还是离散都可以展开成傅里叶级数的形式。 至于 Dirichlet 条件,我们默认它成立。

我们将周期信号分解为指数函数形式的傅里叶级数:
f ( t ) = ∑ k = − ∞ ∞ F k e j k Ω t F k = 1 T ∫ − T / 2 T / 2 f ( t ) e − j k Ω t d t f(t) = \sum_{k=-\infty}^{\infty}F_ke^{jk\Omega t} \\ F_k=\frac{1}{T}\int_{-T/2}^{T/2}f(t)e^{-jk\Omega t}dt f(t)=k=FkejkΩtFk=T1T/2T/2f(t)ejkΩtdt

这里应用了正交函数集任意二者相乘积分为零的性质。

其中 F k F_k Fk 就是各次谐波的系数,是个复数。我们称它的模为幅度频谱,它的相位为相位频谱。因为是级数的关系,周期信号的频谱是离散的。
此外还有一些性质十分常用,我们以周期矩形脉冲为例:
在这里插入图片描述

  1. 信号周期 T 越大,谱线间隔越小,谱线幅度越小 (这也是接下来非周期信号的 FT 的理论来源)。
  2. 周期信号的脉冲宽度越大,第一零点带宽越小,谱线幅度越大。

这很好理解,周期变小和脉宽变大,都说明有信号的时间变长了,所以谱线幅度会变大。因为无论是从时域还是频域的角度,都得保证能量的守恒。

傅里叶变换 (Fourier Transform, FT)

前面提到了周期 T 无穷大之后,就得到了一个非周期信号,其傅里叶级数之间的间隔无穷小,小到变成连续函数;幅度谱的幅度也无穷小,但是还保留着相应的比例关系。而 F n F_n Fn 1 / T 1/T 1/T 是两个同阶无穷小量,可以求其比值的极限:
F ( j ω ) = lim ⁡ T → ∞ F k 1 / T F(j\omega)=\lim_{T\to\infty}\frac{F_k}{1/T} F(jω)=Tlim1/TFk

它称为频谱密度函数,就是该非周期信号的频谱,也可以分为 ∣ F ( j ω ) ∣ |F(j\omega)| F(jω) e j φ ( t ) e^{j\varphi(t)} ejφ(t) 两部分,不过它已经不是 FS 中不同频率分量的幅度的概念了 (除一个实数并不会改变相位),而是类似概率密度的概念,在任一点的概率都是零,只有在某个区间内积分才有值。 ∣ F ( j ω ) ∣ |F(j\omega)| F(jω) 就称为频谱幅度密度,在任意频谱处的幅度都为零,只有在某个频率区间积分才有值。

F ( j ω ) F(j\omega) F(jω) 只是一种书写形式,其中 j 为了表示这是一个复数值, ω \omega ω 用来表示其自变量的物理意义。其实如果要严谨起来的话,应该除以 2 π / T 2\pi/T 2π/T 来定义频谱密度函数,因为这才是频率 ω \omega ω 的物理意义。
如果按照这个定义的话,便能使得 FT 的公式与 FS 的公式的形式更加相似。
至今我并不清楚为什么要省略这个 2 π 2\pi 2π?欢迎交流。

f ( t ) = 1 2 π ∫ − ∞ ∞ F ( j ω ) e j ω t d ω F ( j ω ) = ∫ − ∞ ∞ f ( t ) e − j ω t d t f(t)=\frac{1}{2\pi}\int_{-\infty}^{\infty}F(j\omega)e^{j\omega t}d\omega \\ F(j\omega)=\int_{-\infty}^{\infty}f(t)e^{-j\omega t}dt f(t)=2π1F(jω)ejωtdωF(jω)=f(t)ejωtdt
在这里插入图片描述

当频谱函数是实函数或者虚函数时,就不需要分幅度谱和相位谱两张图了。

此外再就是 FT 的各种性质了,值得一提的是冲激函数的 FT 为常数是一个很好的性质,以及相关运算和 FT 之间的关系,导致了自相关函数既和能量谱是一对傅里叶变换,又和功率谱是一对傅里叶变换。

能量谱和功率谱

这两个概念存在的原因是,随机信号没有确定的是与表达式,所以就得不到确定的频域表达式。对于能量有限信号,我们只能从能量的角度在时域分析它;功率有限信号,就从功率的角度在时域分析它,所以就有了对应的频域分析工具,能量谱和功率谱。

能量谱

信号能量定义为:
E = ∫ − ∞ ∞ f 2 ( t ) d t = 1 2 π ∫ − ∞ ∞ ∣ F ( j ω ) ∣ 2 d ω E=\int_{-\infty}^{\infty}f^2(t)dt=\frac{1}{2\pi}\int_{-\infty}^{\infty}|F(j\omega)|^2d\omega E=f2(t)dt=2π1F(jω)2dω

这里使用了 FT 进行化简,也就是默认了是一个非周期信号。而且默认 f ( t ) f(t) f(t) 是实函数,否则积分前需要取模值 ∣ f ( t ) ∣ |f(t)| f(t)
复信号是否符合这种定义需要考证。

上式表明了既可以从时域的角度来研究信号的能量,也可以从频域的角度。为了表征能量在频域中的分布状况,给出了能量频谱的概念:单位角频率 ( d ω d\omega dω) 内的信号能量,
E ( ω ) = ∣ F ( j ω ) ∣ 2 \mathscr{E}(\omega)=|F(j\omega)|^2 E(ω)=F(jω)2

它只由频谱密度函数的模量决定,与相位无关。由于 F [ R ( τ ) ] = ∣ F ( j ω ) ∣ 2 \mathscr{F}[R(\tau)]=|F(j\omega)|^2 F[R(τ)]=F(jω)2,所以自相关函数与能量频谱是一对傅里叶变换。

功率谱

信号功率定义为:
P = lim ⁡ T → ∞ 1 T ∫ − T / 2 T / 2 f 2 ( t ) d t = 1 2 π ∫ − ∞ ∞ lim ⁡ T → ∞ ∣ F T ( j ω ) ∣ 2 T d ω P=\lim_{T\to\infty}\frac{1}{T}\int_{-T/2}^{T/2}f^2(t)dt=\frac{1}{2\pi}\int_{-\infty}^{\infty}\lim_{T\to\infty}\frac{|F_T(j\omega)|^2}{T}d\omega P=TlimT1T/2T/2f2(t)dt=2π1TlimTFT(jω)2dω

其中 F T ( j ω ) F_T(j\omega) FT(jω) f T ( t ) , t ∈ ( − T / 2 , T / 2 ) f_T(t), t\in(-T/2,T/2) fT(t),t(T/2,T/2) 的傅里叶变换,涉及到的计算过程就不再给出,只对其含义给出解释。

对于能量无限大的信号,我们来考察它的功率。上式表明了既可以从时域的角度来研究信号的功率,也可以从频域的角度。将我们可以理解的时域功率定义,通过 FT 变换为频域的形式,又功率是功率密度在 ( − ∞ , ∞ ) (-\infty,\infty) (,) 的积分,所以在上述公式中,挑出被积分的部分,给出了功率频谱的概念:单位角频率 ( d ω d\omega dω) 内的信号功率,
P ( ω ) = lim ⁡ T → ∞ ∣ F T ( j ω ) ∣ 2 T \mathscr{P}(\omega)=\lim_{T\to\infty}\frac{|F_T(j\omega)|^2}{T} P(ω)=TlimTFT(jω)2

对于功率信号,相关运算的定义也发生了改变,这种改变使得自相关函数又与功率频谱成为了一对傅里叶变换。

其实这种对定义的修改在实际中并没有太大意义,因为我们在处理信号时,即使是功率信号,我们也会截取一段处理一段,待处理信号就是一个能量信号。

周期信号的傅里叶变换

我们先用周期信号可以做级数分解给出了 FS 的概念,然后又将非周期信号理解为周期无穷大的周期信号,得到了 FT 的概念。现在我们希望周期信号也能做 FT,那么对于连续信号而言,FT 就是它频域分析的统一工具了。

我们对周期信号的 FS 形式实施 FT,
F [ f ( t ) ] = F [ ∑ k = − ∞ ∞ F k e j k Ω t ] = 2 π ∑ k = − ∞ ∞ F k δ ( ω − n Ω ) \mathscr{F}[f(t)] = \mathscr{F}[\sum_{k=-\infty}^{\infty}F_ke^{jk\Omega t}] = 2\pi\sum_{k=-\infty}^{\infty}F_k\delta(\omega-n\Omega) F[f(t)]=F[k=FkejkΩt]=2πk=Fkδ(ωnΩ)

其中,由于 F k F_k Fk 不是时间的函数,所以做 FT 的时候作为系数被保留了下来。那么对于周期信号而言 FS 和 FT 有什么区别呢?

FS 并非频域分析,它只不过是把时域信号 f ( t ) f(t) f(t) 写成了其他时域信号 { e j k Ω t } \{e^{jk\Omega t}\} {ejkΩt} 的组合,它还是一个时域上的信号,只不过相对于 f ( t ) f(t) f(t) 而言我们更容易从时域信号 { e j k Ω t } \{e^{jk\Omega t}\} {ejkΩt} 中看到它透露出的频域内容,而 FT 才是真正在频域分析信号,如下图:
在这里插入图片描述
对于周期信号 f T ( t ) f_T(t) fT(t) 做 FT 的经典方法如下,

之后我会用 f T ( t ) f_T(t) fT(t) 表示周期为 T 的连续信号,用 x N ( n ) x_N(n) xN(n) 表示周期为 N 的离散信号。

在这里插入图片描述
其实你也大可以先求这个周期信号的傅里叶级数,然后再对其级数形式做 FT。要注意的是,非周期信号的 FT 是连续的,而周期信号的 FT 是离散的。

LTI 系统的频域分析

LTI 系统的冲击响应函数,对应的傅里叶变换 H ( j ω ) H(j\omega) H(jω) 我们称为系统的频率响应函数。由于虚指数信号 e j ω t e^{j\omega t} ejωt 通过系统 h ( t ) h(t) h(t) 得到的零状态响应 y ( t ) = H ( j ω ) e j ω t y(t)=H(j\omega)e^{j\omega t} y(t)=H(jω)ejωt,而连续信号无论周期还是非周期都可以写成 F ( j ω ) e j ω t F(j\omega)e^{j\omega t} F(jω)ejωt 求和或者积分的形式,所以有,
Y ( j ω ) = H ( j ω ) F ( j ω ) Y(j\omega)=H(j\omega)F(j\omega) Y(jω)=H(jω)F(jω)

应用了 LTI 系统的线性和时不变性质。

离散傅里叶级数 (Discrete Fourier Series, DFS)

自此就要进入数字信号处理的范畴了,在处理信号时无论是代码级的编程还是各种仿真软件,都是对数字信号做处理的。他们的频域分析究竟遵循着什么样的规律呢?接下来将稳扎稳打的一步步向前走。

首先还是从周期信号入手,对于 x N ( n ) x_N(n) xN(n) 来说,与连续周期信号一样,可以写成指数级数 e j k Ω n e^{jk\Omega n} ejkΩn 的形式。与连续信号不同的是,由于周期是正整数 N N N 而非任意正实数 T T T,使得其各次谐波分量的频率 k 2 π N k\frac{2\pi}{N} kN2π 必然会周期性的相等,
e j k 2 π N n = e j ( k + l N ) 2 π N n e^{jk\frac{2\pi}{N}n} = e^{j(k+lN)\frac{2\pi}{N}n} ejkN2πn=ej(k+lN)N2πn

其中 k k k 代表谐波的次数, n n n 是时域信号的横坐标。所以离散信号的 FS 只能分节为 N 种频率。

其实它已经不算是个时域信号的,这么说是为了让你理解 n n n t t t 的对等关系。只有 x N ( n T ) x_N(nT) xN(nT) 才是时域信号,对于数字信号而言,我们去掉了其时间周期的概念。

那么 x N ( n ) x_N(n) xN(n) 就可以展开成,
x N ( n ) = ∑ k = 0 N − 1 C k e j k Ω n x_N(n) = \sum_{k=0}^{N-1}C_ke^{jk\Omega n} xN(n)=k=0N1CkejkΩn

只需要计算出 C k C_k Ck 就完成了离散信号的傅里叶分解,并给出如下 DFS 的一对公式:
x N ( n ) = 1 N ∑ k = 0 N − 1 X ( k ) e j k Ω n X N ( k ) = ∑ n = 0 N − 1 x N ( n ) e − j k Ω n x_N(n) = \frac{1}{N}\sum_{k=0}^{N-1}X(k)e^{jk\Omega n} \\ X_N(k) = \sum_{n=0}^{N-1}x_N(n)e^{-jk\Omega n} xN(n)=N1k=0N1X(k)ejkΩnXN(k)=n=0N1xN(n)ejkΩn

接下来会使用 k k k 表示第 k k k 次谐波有关的量,如 X ( k ) X(k) X(k) 表示第 k k k 次谐波的系数。
还要有个 1/N 这里明白啥意思就好,不要细究了。其实让我来定义的话,我会把 1/N 放进 X ( k ) X(k) X(k) 里面,这样 DFS 的一对公式就变成了:
x N ( n ) = ∑ k = 0 N − 1 X ( k ) e j k Ω n X N ( k ) = 1 N ∑ n = 0 N − 1 x N ( n ) e − j k Ω n x_N(n) = \sum_{k=0}^{N-1}X(k)e^{jk\Omega n} \\ X_N(k) = \frac{1}{N}\sum_{n=0}^{N-1}x_N(n)e^{-jk\Omega n} xN(n)=k=0N1X(k)ejkΩnXN(k)=N1n=0N1xN(n)ejkΩn 这才像那么回事儿嘛,这个定义我也是一直没搞清为啥要这么写?欢迎交流。

下面我提出一个有趣的观点,对于连续信号我们有
e j ( k + i ) 2 π T t = e j ( k 2 π T + i T 2 π ) t e^{j(k+i)\frac{2\pi}{T}t}=e^{j(k\frac{2\pi}{T}+\frac{i}{T}2\pi)t} ej(k+i)T2πt=ej(kT2π+Ti2π)t

这里默认 k 2 π T k\frac{2\pi}{T} kT2π 2 π 2\pi 2π 的范围内,其实我们完全可以将 i T 2 π \frac{i}{T}2\pi Ti2π 2 π 2\pi 2π 取余,使得连续信号的频谱也完全放进 2 π 2\pi 2π 中。这样正确吗?显然思考这个问题会使你的大脑变得凌乱,但是我有必要解释一下它错在了哪里,这个过程会让你对模拟信号和数字信号的区别更加明了。
在这里插入图片描述

其实为了区分后面要提到的 DFT 的概念,离散傅里叶级数改为离散时间傅里叶级数 DTFS 则更好,而且这样也更好的与 DTFT 相对应。由于 DTFT 的频谱是连续的,所以不便于计算机处理,对于数字信号处理我们当然希望他的频谱是离散的,所以对 DTFT 做了人为修改,使其频谱离散化,更方便与计算机处理。
而之所以 DFS 没有叫做 DTFS 的原因是,它原本就时域频域都离散,给他起个 DTFS 未免委屈了它。
但是为了我们理解记忆更加方便,我建议使用 DTFS、DTFT、DFT的概念。

离散时间傅里叶变换 (Discrete Time Fourier Transform, DTFT)

与模拟信号的套路相同,当周期序列 x N ( n ) x_N(n) xN(n) 的周期 N → ∞ N\to\infty N 时,它就变成了一个非周期序列 x ( n ) x(n) x(n)
首先来回顾一下连续信号的推导过程:

  1. 由周期信号可以写为傅里叶级数我们有了,
    f ( t ) = ∑ k = − ∞ ∞ F k e j k Ω t f(t) = \sum_{k=-\infty}^{\infty}F_ke^{jk\Omega t} f(t)=k=FkejkΩt
  2. 对上式两边分别乘 e j k Ω t e^{jk\Omega t} ejkΩt 在积分,应用正交函数的性质我们有了,
    F k = 1 T ∫ − T / 2 T / 2 f ( t ) e − j k Ω t d t F_k=\frac{1}{T}\int_{-T/2}^{T/2}f(t)e^{-jk\Omega t}dt Fk=T1T/2T/2f(t)ejkΩtdt
  3. 将非周期信号视为周期无穷大的周期信号,并根据信号周期与谱线间隔的关系,和周期变大,有值的信号占比变少导致谱线幅度降低,得到了周期信号频谱密度函数的定义,
    F ( j ω ) = lim ⁡ T → ∞ F k 1 / T = ∫ − ∞ ∞ f ( t ) e − j ω t d t F(j\omega)=\lim_{T\to\infty}\frac{F_k}{1/T}=\int_{-\infty}^{\infty}f(t)e^{-j\omega t}dt F(jω)=Tlim1/TFk=f(t)ejωtdt
  4. 那么对应的时域表达式改写为,
    f ( t ) = 1 2 π ∫ − ∞ ∞ F ( j ω ) e j ω t d ω f(t)=\frac{1}{2\pi}\int_{-\infty}^{\infty}F(j\omega)e^{j\omega t}d\omega f(t)=2π1F(jω)ejωtdω
  5. 然后为了统一周期信号也可以使用 FT,又对 FS 形式的信号实施了 FT
    F [ f ( t ) ] = F [ ∑ k = − ∞ ∞ F k e j k Ω t ] = 2 π ∑ k = − ∞ ∞ F k δ ( ω − n Ω ) \mathscr{F}[f(t)] = \mathscr{F}[\sum_{k=-\infty}^{\infty}F_ke^{jk\Omega t}] = 2\pi\sum_{k=-\infty}^{\infty}F_k\delta(\omega-n\Omega) F[f(t)]=F[k=FkejkΩt]=2πk=Fkδ(ωnΩ)

那么,对于非周期序列 x ( n ) x(n) x(n) 来说,它的频谱也会变成连续谱,将求和范围改成 ( − ∞ , ∞ ) (-\infty,\infty) (,) 有:
X 2 π ( j ω ) = ∑ n = − ∞ ∞ x ( n ) e − j ω n X_{2\pi}(j\omega) = \sum_{n=-\infty}^{\infty}x(n)e^{-j\omega n} X2π(jω)=n=x(n)ejωn

其实这个定义应该除 1 / N 1/N 1/N 的,这样就也变成了频谱密度的概念。

相应的, x ( n ) x(n) x(n) 的表达式可以写为:
x ( n ) = 1 2 π ∫ − π π X ( j ω ) e j ω n d ω x(n) = \frac{1}{2\pi}\int_{-\pi}^{\pi}X(j\omega)e^{j\omega n}d\omega x(n)=2π1ππX(jω)ejωndω

积分范围是 ( − π , π ) (-\pi,\pi) (π,π) 而不是 ( − ∞ , ∞ ) (-\infty,\infty) (,) 的原因,还是上面提到的取离散值导致的:
在这里插入图片描述

一定要注意,DTFT 中的 X N ( k ) X_N(k) XN(k) 还是幅度频谱+香味频谱的概念,而不是像 FT 一样是频谱密度的概念,究其原因就是因为 DFS 没有按我说的那样定义,除掉一个 1 / N 1/N 1/N 所以才导致了 X N ( k ) X_N(k) XN(k) 的表达式中没有 lim ⁡ N → ∞ 1 1 / N \lim_{N\to\infty}\frac{1}{1/N} limN1/N1 能够用,也就无法给出功率谱密度的定义。
但也正因为没有除掉一个 1 / N 1/N 1/N 使得其幅度谱并不会随着周期变大而下降,也就不需要功率谱密度的定义了。
但是我觉得这样对理论上的大一统并不友好,这也正是你一直对这些概念迷迷糊糊的原因。

下面给出一个 DTFT 的例子:
在这里插入图片描述

周期序列的傅里叶变换

同模拟信号一样,为了统一都能够使用傅里叶变换,也是先对周期序列做 DFS,然后再对组成周期信号的 N 个非周期复指数序列做 TDFT,就得到了周期离散信号的 TDFT 了。
首先承认一个事实, x ( n ) = e j ω 0 n x(n)=e^{j\omega_0n} x(n)=ejω0n 的 DTFT 为:
X 2 π ( j ω ) = ∑ l = − ∞ ∞ 2 π δ ( ω − ω 0 − 2 π l ) X_{2\pi}(j\omega)=\sum_{l=-\infty}^{\infty}2\pi\delta(\omega-\omega_0-2\pi l) X2π(jω)=l=2πδ(ωω02πl)

图像如下:
在这里插入图片描述

我也不知道这东西咋算出来的,但是你可以用 TDFT 的公式去验证它确实是正确的。

那么对于一个周期序列 x N ( n ) = 1 N ∑ k = 0 N − 1 X N ( k ) e j k Ω n x_N(n) = \frac{1}{N}\sum_{k=0}^{N-1}X_{N}(k)e^{jk\Omega n} xN(n)=N1k=0N1XN(k)ejkΩn 它的 DTFT 为:
X 2 π ( j ω ) = 2 π N ∑ k = 0 N − 1 X N ( k ) ∑ l = − ∞ ∞ δ ( ω − k Ω − 2 π l ) X_{2\pi}(j\omega)=\frac{2\pi}{N}\sum_{k=0}^{N-1}X_N(k)\sum_{l=-\infty}^{\infty}\delta(\omega-k\Omega-2\pi l) X2π(jω)=N2πk=0N1XN(k)l=δ(ωkΩ2πl)

对于周期信号来说,他的 DFS 和 DTFT 的模和形状是一样的,不同的是 DTFT 用单位冲击函数表示。

DTFT 与 FT 之间的关系

如果时域离散信号是由时域连续信号采样得来的,那它们的频谱一定有着什么关系吧。

这部分的推导,符号的差别相当重要!尤其要注意这里的 f ( t ) f(t) f(t) 并非周期信号, T T T 指的是采样周期。

我们有连续信号 f ( t ) f(t) f(t),离散信号 x ( n ) x(n) x(n) f ( t ) ∣ t = n T f(t)|_{t=nT} f(t)t=nT 去掉时间概念得来的。换句话说 x ( n ) x(n) x(n) f ( n T ) f(nT) f(nT) 并不一样,一个横坐标是 { 1 , 2 , 3 …   } \{1,2,3\dots\} {1,2,3},一个横坐标是 { T , 2 T , 3 T , …   } \{T,2T,3T,\dots\} {T,2T,3T,}

此外 x ( n ) x(n) x(n) 并不是 f ( t ) f(t) f(t) 的采样信号, f ( t ) f(t) f(t) 的理想采样信号表达式为:
f ^ ( t ) = ∑ n = − ∞ ∞ f ( n T ) δ ( t − n T ) \hat{f}(t)=\sum_{n=-\infty}^\infty f(nT)\delta(t-nT) f^(t)=n=f(nT)δ(tnT)

x ( n ) x(n) x(n) f ^ ( t ) \hat{f}(t) f^(t) 的区别在于去掉了冲击只保留幅值,并且将信号频率扩大了 T T T 倍, T T T 为采样周期。 f ^ ( t ) \hat{f}(t) f^(t) 的 FT 为,其中下标表示频谱周期:
F ^ 2 π / T ( j ω ) = ∫ − ∞ ∞ f ^ ( t ) e − j ω t d t = ∑ n = − ∞ ∞ f ( n T ) e − j ω n T \hat{F}_{2\pi/T}(j\omega)=\int_{-\infty}^{\infty}\hat{f}(t)e^{-j\omega t}dt=\sum_{n=-\infty}^\infty f(nT)e^{-j\omega nT} F^2π/T(jω)=f^(t)ejωtdt=n=f(nT)ejωnT

对比 x ( n ) x(n) x(n) 的 DTFT 有,其中下标表示频谱周期:
X 2 π ( j ω ) = ∑ n = − ∞ ∞ x ( n ) e − j ω n X_{2\pi}(j\omega)=\sum_{n=-\infty}^\infty x(n)e^{-j\omega n} X2π(jω)=n=x(n)ejωn

可以发现,当把 f ^ ( t ) \hat{f}(t) f^(t) 的频率扩大 T T T 倍, F ^ 2 π / T ( j ω ) \hat{F}_{2\pi/T}(j\omega) F^2π/T(jω) 就变成了 X 2 π ( j ω ) X_{2\pi}(j\omega) X2π(jω),当然这两个 ω \omega ω 并不一样,重写为:
F ^ 2 π / T ( j Ω ) = X 2 π ( j ω ) \hat{F}_{2\pi/T}(j\Omega)=X_{2\pi}(j\omega) F^2π/T(jΩ)=X2π(jω)

其中 ω = Ω T \omega=\Omega T ω=ΩT,也有地方称 Ω \Omega Ω 为模拟频率, ω \omega ω 为数字频率。

又知道理想采样信号 f ^ ( t ) \hat{f}(t) f^(t) 与模拟信号 f ( t ) f(t) f(t) 存在如下关系,其中 Ω s = 2 π / T \Omega_s=2\pi/T Ωs=2π/T
F ^ 2 π / T ( j Ω ) = 1 T ∑ k = − ∞ ∞ F ( j Ω − j k Ω s ) \hat{F}_{2\pi/T}(j\Omega)=\frac{1}{T}\sum_{k=-\infty}^\infty F(j\Omega-jk\Omega_s) F^2π/T(jΩ)=T1k=F(jΩjkΩs)

则,
X 2 π ( j ω ) = F ^ 2 π / T ( j Ω ) ∣ Ω = ω / T = 1 T ∑ k = − ∞ ∞ F ( j ω − k 2 π T ) X_{2\pi}(j\omega)=\hat{F}_{2\pi/T}(j\Omega)|_{\Omega=\omega/T}=\frac{1}{T}\sum_{k=-\infty}^\infty F(j\frac{\omega-k2\pi}{T}) X2π(jω)=F^2π/T(jΩ)Ω=ω/T=T1k=F(jTωk2π)

下图给出了它们之间频谱的关系:
在这里插入图片描述

离散傅里叶变换 (Discrete Fourier Transform, DFT)

正如前文所讲,序列 x ( n ) x(n) x(n) 的 DTFT 是 ω \omega ω 的连续函数,而且其逆变换还是积分运算,不适合计算机去处理。必须把连续函数改为离散数据,还需要把求和范围收缩到有限宽度。
解决方法是将 x ( n ) x(n) x(n) 看作 x N ( n ) x_N(n) xN(n) 的一个周期来看,也就定义处理 DFT,这样在允许一定程度的近似下,DTFT 就可以用计算机来实现了。

所以 DFT 其实是一种人为规定的专门运算,他的变换公式与 DFS 完全一样。也可以理解为,为了让 x ( n ) x(n) x(n) 的时域和频域全部都是离散的,用 x ( n ) x(n) x(n) 的周期延拓信号 x N ( n ) x_N(n) xN(n) 做 DFS,定义了 x ( n ) x(n) x(n) 的DFT。

那么 x ( n ) x(n) x(n) 有实际物理含义的 DTFT,与这个认为定义的 DFT 之间有什么关系呢? X ( n ) X(n) X(n) X ( j ω ) X(j\omega) X(jω) 2 π 2\pi 2π 周期内进行 N N N 次均匀采样得到的。

此外还提出了循环卷积的概念,我们在之前提到的卷积称为线卷积。线卷积是系统分析中的重要工具,而循环卷积方便计算机进行计算,只需要将循环卷积的两个信号补零,使得长度均为 L ≥ N + M − 1 L\geq N+M-1 LN+M1 结果便与线卷积相同。

DFT 为计算机进行傅里叶分析提供了理论依据,但是计算速度实际上是很慢的,1965年提出了快速的 DFT 计算方法,称为快速傅里叶变换 (Fast Fourier Transform, FFT)。


至此,信号与系统的时频分析基础就到此结束了,我自己的感觉算是意犹未尽吧。关于数字信号处理其实有很多内容还可以继续说下去,比如 FFT、栅栏效应、F 变换、Z 变换……

当你在做信号相关的仿真或者编写相关的代码时,是不是总感觉懂了但是没完全懂,每个地方都差一点?

其实信号处理这东西,并不复杂,只是因为没有任何一本书可以完完全全的用读者可以接受的语言,聊天式的全盘托出罢了。即使信号处理相关专业的学生,在上大学刚刚成年的年纪,也无法用短短的四年将这些只是全盘接受,可能受限于数学认知,也可能受限于心智。无论你是从事信号处理工作,还是现在大热的人工智能,当你发现你开始使用卷积的时候,那就已经进入了本文所讲述的领域了,无论 AI 方向多么想尽办法将它归结为 CS 知识,但它在根本上仍旧是频域分析。为何要将它们割裂呢?

本专题后续会继续更新,欢迎订阅收藏点赞,你有什么困惑的内容可以留言一起交流~

  • 31
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西土城山羊卷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值