大家好,又见面了,我是你们的朋友全栈君。
在学习高数的时候,就接触了傅里叶变换。也就记得是将一些周期函数表示成一系列三角函数的叠加,不是很理解这个变换的具体意义,就是觉的挺神奇的,可以求一些特殊的积分什么之类的。 到了学习信号与系统的时候,离散序列也可以傅里叶变换,还有一个叫离散傅里叶变换,那时学得很草,考完试之后都混在一起,不知道谁是谁了。
关于什么是傅里叶变化,网上有很多大佬写的很好。这里我也不打算科普(毕竟墨水不多,想吐也吐不出来),主要目的还是方便自己日后复习,省去翻书查看公式。
粗略地介绍下,傅里叶转化具体可以包含3个大类:
- CTFS和CTFT 连续(C)时间(T)傅里叶(F)系数(S)/ 变换(T)
- DTFS和DTFT 离散(D)时间(T)傅里叶(F)系数(S)/ 变换(T)
- DFS和DFT 离散(D)傅里叶(F)系数(S)/ 变换(T)
这些英文缩写值得记忆的,也能够帮助我们好好理解。
目录
- 连续时间傅里叶系数/变换
- 周期的连续信号的CTFS
- 非周期的连续信号的CTFT
- 离散时间傅里叶系数/变换
- 周期序列的DTFS
- 非周期序列的DTFT
- 离散傅里叶系数/变换
- 周期序列的DFS
- 非周期序列的DFT
- 总结
连续时间傅里叶系数/变换
周期的连续信号的CTFS
对象:连续的周期信号(f(t)),同时得满足Dirichlet条件[1] 表达公式:
- 三角形式(高数学的)
[begin{aligned} f(t) &= a_0 sum_{k=1}^{infty}(a_n cos{kOmega t} b_nsin{kOmega t})\ a_0 &= frac{1}{T} int_{-T/2}^{T/2}f(t)dt\ a_k &= 2cdotfrac{1}{T}int_{-T/2}^{T/2}f(t)cos{nOmega t}dt\ b_k &= 2cdotfrac{1}{T}int_{-T/2}^{T/2}{f(t)sin{nOmega t}}dt\ end{aligned} ]
- 复指数形式(更加通用形式) [begin{aligned} f(t) &= sum_{n=-infty}^{infty}F_n e^{jnOmega t}\ F_n &= frac{1}{T}int_{-T/2}^{T/2}f(t)e^{-jnOmega t}dt\ end{aligned} ] 两种形式可以相互转化,当(n > 0)的时候,(F_n = frac{1}{2}(a_n – jb_n));当(-n < 0)时,(F_{-n} = frac{1}{2}(a_n jb_n))。此式当(n=0)时(F_0 = a_0)。
非周期的连续信号的CTFT
对象:非周期的连续信号,同样得满足Dirichlet条件
表达公式:
设对一个非周期的连续信号(f(t))的DTFT
记为(mathscr F[f(t)]),则有
[begin{aligned} F(w)=mathscr{F}[f(t)] &= int_{-infty}^{infty} f(t) e^{-jwt} dt\ mathscr{F}^{-1}[F(w)] &= frac{1}{2pi}int_{-infty}^{infty} F(w)e^{jwt}dw end{aligned} ]
推导: 基本的思路是用一个周期无限长的信号来代替非周期信号,当周期足够长时可以忽略这种近似带来的影响。
- 假设(f(t))是一个有限的连续非周期信号,对它进行一个周期延拓得到一个周期函数({f_T(t)});
- 对({f_T(t)})进行
DTFS
,有(displaystyle f_T(t) = sum_{n=-infty}^{infty}F_n e^{jnOmega t}),而(displaystyle F_n = frac{1}{T}int_{-T/2}^{T/2}f(t)e^{-jnOmega t}dt=frac{1}{T}F(nOmega)); - 当(Tto infty)时,这种用”无限的周期信号“近似代替”有限的非周期信号“的影响就会越小,此时(Omega=frac{2 pi}{T}to 0),可记为一个微分(Delta w),同时(nDelta w)可以看出一个连续量(w),累加运算转化为积分运算,于是有 [begin{aligned} f(t) &= lim_{Tto infty} f_T(t)\ &= lim_{Tto infty} sum_{n=-infty}^{infty}F_n e^{jnOmega t}\ &= lim_{Tto infty} sum_{n=-infty}^{infty} frac{Delta w}{2pi}F(nDelta w) e^{jDelta w t}\ &= frac{1}{2pi}int_{-infty}^{infty} F(w)e^{jwt}dw\ F(w) &= lim_{Tto infty} int_{-T/2}^{T/2}f(t)e^{-jnOmega t}dt\ &= lim_{Tto infty} int_{-T/2}^{T/2} f(t) e^{-jwt} dt\ &= int_{-infty}^{infty} f(t) e^{-jwt} dt\ end{aligned} ]
也就是说,求一个信号(f(t))的频谱(F(w)),实际上与频率/旋转因子(e^{-jwt})做一个积分,积分对象是时域上的(t);反变换同样也是一个积分,积分对象是频域上的(w)。
周期信号的DTFT 周期信号的DTFT的推导需要用到一个傅里叶变换对(mathscr F(e^{jw_0t})=2pi delta(w-w_0)),则有
[begin{aligned} mathscr{F}[f_T(t)] &= mathscr{F}Big( sum_{n=-infty}^{infty}F_n e^{jnOmega t}Big)\ &= sum_{n=-infty}^{infty}F_n mathscr{F}(e^{jnOmega t})\ &= 2pi sum_{n=-infty}^{infty}F_n delta(w-nfrac{2pi}{T}) end{aligned} ]
可见,有周期的连续信号在频域上是一系列的冲激函数之和,即在频域上是离散的。
离散时间傅里叶系数/变换
周期序列的DTFS
对象:周期的离散序列,无限长的序列必须绝对可和(和收敛) 表达公式:用一系列周期的复指数信号之和表示周期的离散序列
[begin{aligned} x_N(n) &= sum_{k=<N>} a_k e^{jkfrac{2pi}{N}n}\ a_k &= frac{1}{N}sum_{n=<N>} x_N(n) e^{-jkfrac{2pi}{N}n} end{aligned} ]
其中(a_k)即为离散时间傅里叶系数(DTFS),注意符号(displaystylesum_{n=<N>})表示的是序列长度为(N),但是起点可以任意起,通常我们取(n=0,1, cdots ,N-1)。值得注意的是,(a_k)也是周期的,也是离散的。
复指数函数一定是周期函数,但是复指数序列(e^{jOmega n})不一定是周期序列,易证当(Omega)为(2pi)的有理数倍的时候才为周期序列。
非周期序列的DTFT
对象:有限长的非周期序列 表达公式: 设一有限的离散非周期序列的DTFT为(mathscr{F}[x(n)]),则有
[begin{aligned} mathscr{F}[x(n)] &= sum_{n=-infty}^{infty} x(n)e^{-jwn}\ mathscr{F}^{-1}[X(w)] &= frac{1}{2pi}int_{2pi} X(w)e^{jwn}dw\ end{aligned} ]
因为(x(n))是有限长度的,因此它的DTFT
是复指数函数之和,也是一个连续的周期函数。与CTFT
不同的是,DTFT
是累加运算,但IDTFT
仍是积分,但限制在(2pi)的区间内。
推导:
与周期信号的思路一致,用无限周期的离散序列来近似代替有限的非周期离散序列。
- 设一个有限的非周期序列(x(n)),进行周期延扩得到(x_N(n));
- 对(x_N(n))进行DTFS,有(displaystyle x_N(n) = sum_{k=-N/2}^{N/2-1} a_k e^{jkfrac{2pi}{N}n}),其中(displaystyle a_k = frac{1}{N}sum_{n=-N/2}^{N/2-1} x_N(n) e^{-jkfrac{2pi}{N}n}=frac{1}{N}X(Omega k));
- 当(Nto infty),(Omega = frac{2pi}{N}to 0)可记为微分(Delta w),离散量(Delta w k)变为连续量(w),累加变为积分,即 [begin{aligned} x(n) &= lim_{Nto infty}x_N(n)\ &= lim_{Nto infty}sum_{k=-N/2}^{N/2-1} a_k e^{jkOmega n}\ &= lim_{Nto infty}sum_{k=-N/2}^{N/2-1} frac{Delta w}{2pi}X(Delta w k) e^{jkOmega n}\ &= frac{1}{2pi}int_{2pi} X(w)e^{jwn}dw\ X(w) &= lim_{Nto infty}sum_{n=-N/2}^{N/2-1} x_N(n) e^{-jkOmega n}\ &= sum_{n=-infty}^{infty} x(n)e^{-jwn} end{aligned} ]
周期序列的DTFT 根据变换对(mathscr{F}(e^{jOmega_0 n})=delta(w – Omega_0)),则对于周期序列(x_N(n)),有
[begin{aligned} mathscr{F}(x_N(n)) &= mathscr{F}(sum_{k=<N>} a_k e^{jkOmega n})\ &= sum_{k=<N>} a_kmathscr{F}(e^{jkOmega n})\ &= sum_{k=<N>} a_kdelta(w-kOmega) end{aligned} ]
可见,周期离散序列的DTFT在频域上是一系列的冲激函数,冲激强度由DFTS
的值确定,同时具有周期性。
离散傅里叶系数/变换
实际中我们处理得更多的是离散的、有限长的信号,对离散序列进行DTFT
得到的频谱却是连续的,计算机是不能直接进行处理的。在上信号与系统老师一直强调,时域上的离散性对应频域上的周期性,时域上的周期性对应频域上的离散性。因此,有一个很自然的想法,就是对时域上的有限序列进行周期延拓,这样频域上的数据不也是离散的吗?这就是DFT
的基本思想,问题的关键是:这种方法好不好呢?准不准呢?
周期序列的DFS
对象:周期序列 说明:DFS可以从DTFS中推导出来,或者说DFS其实是DTFS的另一种形式(多乘了个周期) 表达式:
[X_N(k) = rm{DFS}(x_N(n))=Na_k = sum_{n=<N>} x_N(n) e^{-jkfrac{2pi}{N}n}\ x_N(n) = frac{1}{N} sum_{k=<N>} X_N(k) e^{jkfrac{2pi}{N}n} ]
非周期序列的DFT
DFT的基本原理:
- (x(n))进行周期延扩得到(x_N(n)),这样时域的周期反映到频域上的离散;
- 对(x_N(n))进行DFS得到(X_N(k)),这样时域上的离散反映到频域上的周期;
- 取(X_N(k))一个周期的值,得到的就是
DFT
,即 [X(k)=rm{DFT}[x(n)] = sum_{n=0}^{N-1}x(n)e^{-jkfrac{2pi}{N}n},0 le k le N-1\ x(n) =IDFT[X(k)]= frac{1}{N} sum_{n=0}^{N-1} X(k) e^{jkfrac{2pi}{N}n}, 0 le n le N-1\ ] DFT可以看成是一个连续函数在时域上和频域上都被采样,由采样定理可知,当对DFT和离散序列乘以相应的采样函数即可得到原函数,也就是说DFT可以看出CTFT的一个近似。同时,对于一个确定的(x(n))可以唯一延拓成唯一的(x_N(n)),因此DFT
是惟一的。
总结
- 是指满足绝对可积、有限的极值点和间断点的函数 ↩︎
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154770.html原文链接:https://javaforall.cn