DFT的本质

作者: ee3da6d6a0d6 | 来源:发表于2020-05-27 19:29 被阅读0次

    姓名:吴晓春

    学号:19021210988

    转载自:https://blog.csdn.net/dongdaxiaobai/article/details/90726038

    1、频谱分析的一个盲点

    很多时候我们说:“这个信号频率很高”,或者“这是一个低频信号”。

    这句话看起来没问题,实际上有一个大问题。那就是,我们说的“频率”是真实的吗?

    在傅里叶级数里面,我们所有的周期信号,实际上都默认它是从无穷远到无穷远的。这个信号分布在整个时间轴上。但实际的信号,就我们观测的时间而言,是有限的。假设你打开一个信号发生器,产生了一个1kHz的正弦波,并定义此时刻为t1。十秒种后你关掉了这个信号源,那么实际上你得到的时域信号,只是一个(t1,t1+10)上的正弦波形。而其他时刻都是0。

    但是,如果我一定要说,这个信号是非周期的连续能量有限信号,它的频率成分是连续的频谱。你一定会打死我。因为信号源产生的就是1Khz的正弦波。而且在你观测的时间内,它确实在每1s就产生1000次振荡。于是你理所当然地认为,这个信号的频率就是1Khz。在这个过程中,你已经脑补了这个信号是永生的,信号发生器相当于一个“窗户”,你打开它,看到了这个正弦波,你关上它,它并没有消失,只是你关上窗户,看不到了而已。

    为什么你摇头能听见大海的声音?因为你在脑补信号无限延续,数学上就是周期延宕操作。

    2、

    上面的脑补操作,多数时候对我们实际运用完全没有影响。因为从系统的角度讲,它处理的信号是持续1s还是1万年没有区别。一个RC低通滤波,你的信号发生器一旦work,不考虑开机的建立和关机的拖尾,输出稳定后用示波器看到的东西是一样的。

    但假如说你想和信号源solo一把,pk一下手速,不停地按开机、关机、开机、关机…这个时候,示波器上看到的东西可能就有变化了。特别是如果你像我一样单身三十年,手速够的话,示波器上的信号会产生一个新的频率成分,就是麒麟臂的速度。

    3、

    DFT的操作,本质上就是一个麒麟臂。

    DFT里面经典的操作是,取一个1024点的FFT。(更一般地是取FFT,由于FFT本身是DFT的快速算法,所以本文只讲DFT)

    假如你的采样频率是1M。那么,相当于你截取了时长1024us的信号。

    在你的脑海里,这个信号的脑补波形和原来的波形是完美复制粘贴的。但对DFT,情况就不一样了!它无法判断你取到的到底是不是一个完整的信号周期,还是2个,3个,或者是0.3个,3.5个。它脑补的操作,就是把我采样到的信号当成一个完整的周期去看。

    根据傅里叶级数的想法,任何周期信号都可以通过一系列以信号周期为基波的谐波叠加得到。从时域上讲,一个周期信号,假定它的周期是T,那么用一组弦波cos和sin可以合成这个波形,这组弦波在周期T里面分别振荡0次,1次,2次,3次…如果信号的某一阶导数不连续,那么就需要无穷多个这样的弦波。每个弦波对应的幅度和初相位,通过正交计算可以从原始信号中提取出来。

    那么现在DFT也是一样的,对于fs的采样率,采了N个点的信号,总共花费了N/fs秒,意味着我的基波频率就是fs/N,也就是所谓的频率分辨率。看起来,我的波形都需要依靠0倍,1倍,2倍,3倍…无穷多倍的fs/N构成的谐波去合成了。

    4、上述操作过程存在着两个问题,

    第一个问题是明显的,就是:如果信号频率是1Khz,(准确讲是脑补的信号频率)。而DFT的截取时间不够准确,就像上面说的,1MHz采样1024点,基波是1MHz/1024约等于976.56Hz,那么DFT的结果就不对了;

    第二个问题,或者其实也不是问题,就是按照傅里叶级数求解的方法,我们在计算中会发现用不了无穷多个谐波。首先来看第二个问题,因为这是一个数学问题。

    5、

    在傅里叶级数里面,计算谐波系数用的是积分:系数=在一个周期上对信号和谐波的共轭(如果用复数形式)乘积做积分,再除以周期的长度。相当于对信号在这个谐波上的能量均值即功率做了一个提取。(从这个角度看不难理解帕塞瓦尔定律)

    在DFT里面,我们用离散的点求和去取代积分。系数=在一个周期内所有采样点和谐波共轭的乘积求和,再除以周期长度。由于离散点本身没有长度,所以我们用点的总数N来代替这个长度。换个角度看,如果除以的是周期长度N/fs,那么每个离散点也要乘上对应的时间1/fs,这就相当于黎曼积分的定义了:用一系列矩形的面积总和来近似整个曲线下方的面积。所以分子分母上可以同时约掉这个1/fs。这样得到DFT的定义式:

    第一个推导是完完全全类比傅里叶级数得到的。现在回到刚刚讲的问题,式子里面k需要取无穷多项吗?

    看起来是这这样的。但注意到,。如果这里红色的fs=1,Ck就具有周期性,周期和采样点的数目一样。问题是fs能等于1吗?答案是ok。注意到时间ti,如果把它写成,就可以得到第二个式子,也就是DFT的标准形式。

    注意这时所谓Ck的周期性已经没有时间概念了,只是指数学上Ck的值,满足对任意k,。

    但这里还存在一个问题,就是刚刚的推导,只能说明在计算上Ck只需要取遍一个周期的N个点即可,但物理上,我还是需要所有的波形去合成吗?答案是NO。

    之所以DFT信号只需要一个周期谐波分量而不是所有谐波,原因在于DFT的数据是离散的,或者说信息是不完全的。这种不完全导致的结果就是,高次的谐波成分在DFT看起来和低次没有区别,被“混叠”到了低频。换句话说,DFT已经默认了能够被表示的信号,只能是奈奎斯特频率以下的部分。为了进一步说明这个问题,考虑一个简单的2点DFT,数据是[1,-1]假设采样率是1Hz,那么基波就是,对应DFT下的谐波是等等。现在考虑2s时间内对这些波都取首尾两个点,会发现这些信号的值都是一样的。换句话说,由于采样特性造成高次谐波的混叠,信号无法分辨原始波形的频率究竟是高频还是低频。对采集到的离散信号而言,低频成分(这个例子里面就是)就能够得到采样的的数据。

    通过这里的分析,同样可以明白奈奎斯特采样定理究竟是怎么发挥作用的,即,为了确保DFT的准确性,我要求信号频率不能超过奈奎斯特频率,这样才能保证DFT得到的一个周期内的谐波信号能够去合成原始波形。

    6、DFT和连续信号频谱

    对于一个满足L2收敛即平方可积的实际信号(一般情况下即功率是有限值),我们可以用傅里叶变换得到它的频谱。对比DFT和傅里叶变换的公式,发现DFT相当于对这个频谱做了采样,只是差了一个系数Ts/N。(和傅里叶级数到傅里叶变换里面周期移到等号左边的操作是一样的)

    对比上面的DFT,在Fourier Transform中,把取DFT的谐波量,再用矩形面积和代替原来的积分,注意把微分量dt替换成1/fs,再除以采样总时间Ts=N/fs,得到的就是Ck。

    注意,这里提到的“采样”是不准确的,因为标准的采样用的是脉冲序列,而DFT是离散的实际信号。体现在数学上的差异就是计算中用求和代替了积分(DFT基础 这个帖子里面分析了这种差异)。这个差异就是加窗和频谱泄露的根源。

    7、加窗和频谱泄露

    现在回到第一个问题,对一个实际的信号,如果它的频率不是DFT的“谐波”,在这种情况下,得到的DFT信号是不准确的。那么,这样得到的DFT意义何在?

    意义在于,如果我的采样频率足够高,或者取的点数足够多,也就是提高频率分辨率。那么DFT的结果就可以不断逼近真实的频率成分。以最初的例子,1M采样率1024点的DFT不能很好地去分辨1KHz,但2KHz,2048点的FFT却能够很好地检测0.97Hz的变化,就可以找到1KHz。更一般地,对于一个未知信号,我不知道它具体频率成分时,用高分辨率的DFT可以得到非常理想的近似结果。从信号的角度来看DFT, cos(1000 t)和cos(1000.001 t)从t=0到100时差别其实并不大。在短暂时间里可以认为两者近似相等,这就是DFT的实用价值。

    但是,有没有可能存在一种情况,就是频率分辨率再高,也无法正确判断。或者从信号角度看,cos(1000 t)和cos(1000.001 t)在t变大,比如t=1000以后,会出现很大的“分离”,不再那么接近。对应DFT,就是栅栏效应。

    另一个问题是,DFT的取点总是有限的,这等于对信号做了一个最一般地加窗操作,即原始信号乘以某个长度为NTs的矩形窗,再进行采样。这和连续信号里面用无限长脉冲序列去采样是不同的。矩形窗的连续时间频谱是Sa函数,所以相当于原始信号的频谱卷积Sa函数,这就造成了DFT采样的频谱实际上是“窗口”函数乘以原始信号后的频谱。

    用一开始的思路去理解这个窗口就更容易了。最开始我们提到,信号源产生的这个波形实际上是有限的,但我们脑补他是一个无限的信号。同样,DFT采集的波形也是有限的,而且这个采集不能被脑补成无限的,因为机器计算的总是有限个点。这样,可以看出,DFT本身的加窗操作对信号的频谱是有畸变作用的。

    矩形窗的频谱图如a.本质上就是Sa函数的模量取对数以后得到的(虽然看起来没有Sa那么优美了,但确实是一个东西)。窗函数中间最大的凸出是主瓣,两边是旁瓣。更加卷积特性,可以知道信号加窗以后的频谱被拓宽了,信号实际上发生了变形。为了抵消这种畸变,引入了汉明窗、布莱克曼窗等等来改善频谱,但不论怎么改善,总会存在某根谱线正好落在旁瓣上,换句话说,信号中本来没有的频率成分,由于加窗导致在原有的频率成为周围出现了不期望的频率,这就是频谱泄露。

    相关文章

      网友评论

        本文标题:DFT的本质

        本文链接:https://www.haomeiwen.com/subject/nmegahtx.html