体会 DSP :四个傅里叶变换的推导与关系
那啥,毕竟俺是个工科生,虽然学一些数学基础课,也是不能学得太认真的。这学期选的『数字信号处理』就更不用说了,因为这根本不是数学基础课而是专业课。专业课嘛,会用就好了,不能想太多。看看奥本海姆的那本《信号与系统》,比理力还大还厚,然而其广度却只覆盖了我上的这门『数字信号处理』大约 30% 的内容,所以说这种东西不能太认真,认真起来不知道头在哪里。
然而复习的时候总归还是有些自以为是深入的思考的,好吧,其实也不是什么深入的思考,主要是老师没给课本,讲义又写得太简略,为了避免忘记,就把讲义的理解和补充写在这里吧。
考完了还要打开课件边看边写我也是醉了。
这门课总的框架就不写了,讲义里有写。总的来说,传统的就是时域分析和频域分析。方法时频分析那块主要就三个方法,短时傅立叶变换、小波变换和 WVD。
傅里叶级数 FS
四个傅立叶变换,分别指傅立叶级数(FS),傅立叶变换(CTFT)、离散时间傅立叶变换(DTFT)和离散傅立叶变换(DFT)。初学者,比如三天前的我,总是搞不明白这几个变换之间的关系。比较常见的表示方法,是根据时域和频域是否离散把这四个变换写在一个 2x2 的表格里,这个表格详见奥本海姆的砖头书,网上也有。实际上,其实他们就是一个环的关系,任选一个开始,都能按照顺时针或者逆时针的顺序,通过一些不甚严谨的,以极限来逼近积分的思想方法(就像牛顿和莱布尼兹当年搞微积分那样),推出剩下三个的表达式。
但是一般来说,思路是这样的。先考虑一个时间域上的周期函数,他可以展开成傅里叶级数……对,一般的课本都是这样开始的,吴天行的讲义也是,但是彭志科的课件就比较好,是从线性空间的角度来看这个问题的。如果有线代和矩阵的基础知识的话,再来看这个其实很有意思,先离题一下。
考虑一个 n 维欧氏空间,必然存在一组 n 个标准正交基,任何向量 $\alpha$ 都可以用这组标准正交基的线性组合来表示,线性组合的系数称为该向量在这组正交基下的坐标,具体来说,每个基前面的系数就 是$\alpha$ 在各个基上的投影。现在,考虑一个定义在 $\mathcal{R}$ 上的函数 $f(t)$,是不是可以看作是一个无限维的线性(?)空间呢?$t$ 的每一个取值为它的某一维,对应的 $ f(x)$ 的取值就是它在这个维度上的坐标。经过一大堆我也搞不懂的定义和证明,我们可以认为,大部分函数是可以看作为一个无限维的线性度量空间的元素的,而且它们可以被一组标准正交基所逼近,这个空间称为 Hilbert 空间。这个空间的内积定义为一个积分。
这时候来看三角函数形式的傅立叶级数,其意义就很显然了。那些个正弦和余弦就是标准正交基,于是它们前面的系数也是理所当然的投影,就是这样。所以说傅立叶级数的公式是不用背的,非常自然。再来看指数形式的傅立叶级数……好吧指数形式的标正基比较蛋疼,好像是 $\frac{1}{\sqrt{2\pi}}e^{in\omega t}$?还是背公式吧。为了叙述方便,写一下:
$$x(t)=\sum c_n e^{in\omega_0 t} \\ c_n = \int x(t)e^{-in\omega t} dt$$
傅立叶变换 CTFT
好了现在我们有了指数形式的傅里叶级数,如果把一个非周期函数视为一个周期为无限大的周期函数,代入傅里叶级数,就可以得到一个一般函数的傅立叶变换 $X(\omega)$ 。对应 $c_k$ 的表达式,定义:
$$X(\omega=n\omega_0)=Tc_n=\int x(t)e^{-i\omega t}dt, \quad T\to \infty$$
这就是所谓的傅立叶正变换,那么逆变换呢?之前其实我一直以为,傅立叶变换里的积分号,对应的是傅里叶级数里的求和号,现在才知道,其实傅里叶级数的表达式对应的是傅立叶变换的反变换。这样一来,反变换里的 $\frac{1}{2\pi}$ 的系数来得就很自然了,为什么?因为根据定义,有:
$$c_kT=X(\omega) \Rightarrow \\ x(t)=\sum c_n e^{in\omega_0 t}=\frac{1}{d\omega}\sum \frac{X(\omega)}{T}e^{i\omega t}d\omega=\frac{1}{Td\omega}\int X(\omega)e^{i\omega t}d\omega $$
积分外面的系数即是。顺便,这样一来,就不应该把傅立叶变换看作一个变换,而是应该看作一个投影,至于反变换,相当于一个级数,或者说是分解。
另外,从结果上来看,可以发现时域上体现出来的周期对应了频域上的离散,而时域上的非周期性对应了频域上的连续。这是一个很重要的经验。由于傅立叶变换的对偶性质,后面会发现,实际上时域上的离散也相应对应着频域上的周期性。怎么证明?直接把$t=t+T$或者$\omega = \omega+ \omega_0$放到相应的公式里看看就知道了。
离散时间傅立叶变换 DTFT
好了现在通过傅里叶级数和傅立叶变换我们可以把任意函数变换到频域去看他的频率特性了,夫复何求呢?可惜的是,在实际过程中,获得的信号总归是离散的,即使不是离散的,像电压电流这种,如果要对他进行记录、储存或者处理的话,还是要将其离散化,或者说,数字化。那么对于一个离散的信号,也就是一个信号序列 $x[n]$,如何观察他的频率信息呢?于是我们可以考虑令 $x[n]=x(t=n\Delta)$,把它看作是一列连续信号的采样,其中 $\Delta$ 是采样时间间隔。代入连续傅立叶变换……这边讲义上的说法我感觉有点漏,所以我还是写一下,如下:
$$X(\omega)=\int^{\infty}_{-\infty}x(n\Delta)e^{-i\omega t}dt=\sum x[n]e^{-i\omega n \Delta} \Delta$$
定义 离散时间傅立叶变换 DTFT $X(\Omega)$为:
$$X(\Omega=\omega \Delta)=\frac{X(\omega)}{\Delta}=\sum x[n]e^{-i\omega n \Delta}=\sum x[n]e^{-i\Omega n} $$
这里面很清楚的表现了采样信号的 DTFT 傅立叶系数和原信号的 CTFT 傅立叶系数的关系。这可是今年卷子的第一题哦。注意这里的 $\Omega$称为数字频率,$\omega$称为模拟频率,也就是原信号的频率。他们之间的关系见定义,这样只是为了方便,避免在提及序列的时候还要涉及到时域上的具体时间关系。另一方面,也是为了在符号上将 CTFT 的 X 和 DTFT 的 X 区别开来。
离散傅立叶变换 DFT
DTFT 得到的频域函数是连续的,在计算机计算的时候,可不能进行符号积分,另一方面,我也没必要,也不可能知道这条函数上的每一点,我只需要取其中的几个点,看看它大概是什么形状就好了。因此,考虑把频域函数离散,这就是离散傅立叶变换:DFT。没什么意思,根据$X_k(k)=X(\Omega= \frac{2\pi k}{N})$,直接推。
总的来说,这四个傅立叶变换是一脉相成的,对于同一个信号,傅立叶级数相当于最原始的展开,傅立叶变换就是 $T \to \infty$ 的傅里叶级数,DTFT 是采样信号的傅里叶级数,DFT 是把 DTFT 的频域再离散了。总结得到四个傅立叶系数关系如下:
$$c_n=\frac{X(\omega)}{T}=\frac{X(\Omega)}{N}=\frac{X_k(k)}{N}$$