数字信号处理基础-离散傅里叶变换(DFT)
本文主要参考书籍:
[1] 饶妮妮,李凌. 生物医学信号处理[M],成都,电子科技大学出版社,2005.7.
[2] 姚天任,孙洪. 现代数字信号处理 (第二版)[M]. 武汉华中科技大学出版社,2018.8.
前言
大多数理工科高等学校分别为本科生和研究生设置课程“数字信号处理”和“现代数字信号处理”。粗略地说,其课程内容是按照所要处理的信号和处理方法来划分的。具体说,前者针对离散时间确定性信号,而后者针对离散时间随机信号。因此,前者以数字信号处理学科的两大理论支柱,即离散傅里叶变换和数字滤波器作为核心内容;而后者以自适应滤波器(维纳滤波器和卡尔曼滤波器可以看成是其基础)、功率谱估计、小波分析(一种最典型、最有力的时频分析方法)、同态信号处理、高阶谱分析,以及神经网络信号处理为主要内容。
这篇博文主要是介绍前者-数字信号处理,后者-现代数字信号处理将在后续文章中整理分享。
对采集到的信号进行处理,除了传统的时域分析之外,各种各样的变换发挥了重要作用,包括从最熟悉的傅里叶(Fourier)变换到现在的小波(Wavelet)变换以及主成分分析(Principal Component Analysis)、独立成分分析(Independent Component Analysis)和稀疏成分分析(Sparse Component Analysis)。每一种变换都有其独特的视野,为信号的分析处理提供了不同的思路。这里我们将介绍最基本的一种变换,即在线性时不变系统(LTI,Linear Time Invariance)中广泛使用的傅里叶变换以及频谱分析,本章还是以离散数据为主,介绍离散傅里叶变换(DFT)的有关知识。
1 傅里叶变换
傅里叶分析方法的处理对象包括连续时间信号和离散时间信号,在近代欧拉、伯努利、傅里叶、狄里赫利等学者努力完善了对连续时间信号的傅里叶分析方法。用于处理离散数据以产生数值近似的有关内插、积分和微分等方面的公式早在17 世纪的牛顿时代就被研究过,从事时间序列的研究曾吸引了18、19 世纪包括高斯在内的许多著名科学家,从而为离散傅里叶变换提供了数学基
础。
在20 世纪60 年代中期,库利(Cooley)和图基(Tukey)各自独立发表了一篇论文,也就是快速傅里叶变换算法(FFT)。FFT 是非常高效的算法,使得计算变换所需要的时间减少了几个数量级。由于计算机速度的迅速提高,越来越多的连续时间信号被离散化,然后用计算机进行处理。
利用“三角函数和”的概念来描述周期性过程,三
角函数和也即是成谐波关系的正弦和余弦或周期复指数函数的和。如果一个LTI 系统的输入可以表示为周期复指数的线性组合,则输出也一定能表示成这种形式,并且输出线性组合中的加权系数与输入中对应的系数有关。
如图2-1 所示,x(n)表示输入或者激励, y(n)表示系统输出或者响应, H ( e j w ) H(e^{jw} ) H(ejw)表示系统单位脉冲响应h(n)的频率响应。
在研究LTI 系统时,复指数信号的重要性就体现在图2-1 中:一个LTI 系统对复指数信号的响应也同样是一个复指数信号,不同的只是乘了一个复振幅因子 H ( e j w k ) H(e^{jw_{k}} ) H(ejwk),频率并没有发生变化,由于是复数因子,就有了幅度和相位或者实部和虚部的变化。
连续和离散时间信号的傅里叶级数和傅里叶变换表达式如下:
从上表可发现傅里叶变换在LTI 系统分析中的思想,就是把一个无论多复杂的输入信号分解成复指数信号的线性组合,那么系统的输出也能通过如图2-1 所示的关系表达成相同复指数信号的线性组合,并且在输出中的每一个频率的复指数函数上乘以系统在那个频率的频率响应值。
x ~ ( t ) \widetilde{x}(t) x
(t)表示时域连续周期信号
x ( t ) {x}(t) x(t)表示时域连续非周期信号
x ~ ( n ) \widetilde{x}(n) x
(n)表示时域离散周期信号
x ( n ) x(n) x(n)表示时域离散非周期信号
系数 { a k } { \{a_k\}} {
ak} 称为连续周期信号 x ~ ( t ) \widetilde{x}(t) x
(t)的傅里叶级数系数或频谱系数或线谱等,是离散非周期的;
系数 { a ~ k } {\{\widetilde{a}_k\}} {
a
k} 称为离散周期信号 x ~ ( n ) \widetilde{x}(n) x
(n)的傅里叶级数系数或频谱系数或线谱等,是离散周期的;
X ( j w ) X(jw) X(jw)称为连续非周期信号x(t)的频谱,是连续非周期的;
X ( e j w ) X (e^{jw}) X(ejw)也称为离散非周期信号x(n)的频谱,是连续周期的。
作为线性组合所取的形式从求和过渡到积分,就是利用傅里叶的思想,一个非周期信号可以看成是周期无限长的周期信号,当周期增加时,基频 w 0 w_0 w0 越小,成谐波关系的各分量在频率上越来越近,当周期变得无穷大时,离散的线谱就形成了一个连续谱,也就从求和变成了积分。
从表2-1 中时域和频域的关系还能得到如下规律:时域的离散必然导致频域的周期化;频域的离散必然导致时域的周期化。简单地说,就是一个域离散必然另外一个域是周期的;相反,如果一个域连续必然另外一个域是非周期的。掌握了这个规律,我们很快就能判断出一个信号在频域的表现形式。
傅里叶级数对应的频域是离散的,时域是周期的;傅里叶变换对应的频域连续的,时域是非周期的。
由于计算机无法处理连续信号,因此需要一种在时域和频域上都离散、非周期的一对傅里叶变换对,这就是离散傅里叶变换,简称DFT。离散傅里叶变换的到处方法有多种,比较方便同时物理意义清晰的是从离散时间傅里叶变换(DTFT)和从离散傅里叶级数(DFS)入手。
离散时间变换DTFT为:
X ( e j w ) = ∑ n = − ∞ + ∞ x ( n ) e − j w n (1) X(e^{jw})=\sum \limits_{n=-\infty}^{+\infty}x(n)e^{-jwn}\tag{1} X(ejw)=n=−∞∑+∞x(n)e−jwn(1)
时域是离散的,非周期的,但频域是连续、周期的,对连续变量 w w w均匀采样,也就是对单位圆进行 N N N等分,取一个周期的结果即得:
X ( e j w ) ∣ w = − 2 π N k = ∑ n = 0 N − 1 x ( n ) e − j 2 π N n k , ( 0 ≤ k ≤ N − 1 ) (2) X(e^{jw})|_{w=-\frac {2π}{N}k}=\sum \limits_{n=0}^{N-1}x(n)e^{-j\frac{2π}{N}nk} , (0\le k\le N-1)\tag{2} X(ejw)∣w=−N2