DFT的本质

姓名:吴晓春

学号: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那么优美了,但确实是一个东西)。窗函数中间最大的凸出是主瓣,两边是旁瓣。更加卷积特性,可以知道信号加窗以后的频谱被拓宽了,信号实际上发生了变形。为了抵消这种畸变,引入了汉明窗、布莱克曼窗等等来改善频谱,但不论怎么改善,总会存在某根谱线正好落在旁瓣上,换句话说,信号中本来没有的频率成分,由于加窗导致在原有的频率成为周围出现了不期望的频率,这就是频谱泄露。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,875评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,569评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,475评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,459评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,537评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,563评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,580评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,326评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,773评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,086评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,252评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,921评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,566评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,190评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,435评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,129评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,125评论 2 352