声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

楼主: sorry

[FFT] 傅里叶变换加窗的影响

[复制链接]
发表于 2016-7-5 10:50 | 显示全部楼层
ZH----过客 发表于 2016-7-5 10:47
加不同的窗会造成的泄漏也会不尽相同,但是每个窗都有自己的优点!!!所以在实际中我们要根据具体的情况去 ...

比如呢  举例说说

点评

(1)矩形窗(Rectangle):习惯上不加窗就是使信号通过了矩形窗。优点是主瓣比较集中,缺点是旁瓣较高并伴有负旁瓣。导致变换中带进了高频干扰和泄露,甚至出现负谱现象,频率识别精度较高,幅值识别精度最低,所以  详情 回复 发表于 2016-7-5 10:57
回复 支持 反对
分享到:

使用道具 举报

发表于 2016-7-5 10:57 | 显示全部楼层
sd 发表于 2016-7-5 10:50
比如呢  举例说说

(1)矩形窗(Rectangle):习惯上不加窗就是使信号通过了矩形窗。优点是主瓣比较集中,缺点是旁瓣较高并伴有负旁瓣。导致变换中带进了高频干扰和泄露,甚至出现负谱现象,频率识别精度较高,幅值识别精度最低,所以矩形窗不是一个理想窗。应用:如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用矩形窗。例如测量物体的自振频率等也可以用在阶次分析中。
     (2)汉宁窗(Hanning):又称余弦窗。主瓣加宽并降低,旁瓣则显著减小。从减小泄露的观点出发,汉宁窗优于矩形窗,但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨率下降。它与矩形窗相比泄露、波动都减小了并且选择性也提高。应用:如果测试信号有多个频率分量,频谱表现的十分复杂,且测试的目的更多关注频率点而非能量大小需要选择汉宁窗。如果被测信号是随机或未知的选择汉宁窗。
发表于 2016-7-5 13:09 | 显示全部楼层
一个二维Hann窗的例子

由于hann函数只能得到一个1维的窗。所以要用一个矩阵乘法
f1 = imread('deglena00000.tif');
[N1,N2] = size(f1);
W = hanning(N1) * hanning(N2)';                     
f1_fft = fft2(W.*double(f1));
发表于 2016-7-5 16:13 | 显示全部楼层
1. 如果DFT采集时间窗口内的信号的周期延拓与实际信号完全吻合,那么就不会出现泄漏现象。换句话说,对于周期信号,如果采集时间窗口内正好包含整数个信号周期,就能避免频谱泄漏。有时可利用这个特点来进行所谓的整周期采样(这里面还有更多的规矩细节)。

FFTContainingIntegerNumberOfCycles.png

下面是一个1000.4882812Hz的正弦信号,采样频率为48kHz,FFT点数为32768(无窗,或矩形窗),因此一个FFT段包含32768/48000*1000.4882812=683个整信号周期,信号能量集中于单一谱线上,无泄漏。

FFTContainingIntegerNumberOfCyclesExample.png


2. 如果DFT采集时间窗口内的信号的周期延拓与实际信号不完全吻合,就会在周期延拓的边界上出现不连续点,就会出现泄漏现象。
FFTContainingNonIntegerNumberOfCycles.png

下面是一个1000Hz的正弦信号,采样频率为48kHz,FFT点数为32768(无窗,或矩形窗),因此一个FFT段包含32768/48000*1000=682.6666667个信号周期,信号能量分散于多条谱线上,而且散布到离信号本身频率以外相当远的地方,出现了严重的频谱泄漏。


FFTContainingNonIntegerNumberOfCyclesExample.png


3. 减少频谱泄漏的方法就是将采集时间窗口内的数据乘以一个窗函数,再做DFT。与矩形窗给所有采集窗口内的数据同样的权重(即:1)不同,通常采用的窗函数都是给予采集窗口内中间的数据最大的权重(即:1),然后从中间到两边权重逐渐减小,最后在边界上变为0,这就强制了在DFT周期延拓的边界上,不会出现不连续的跳变。
Windowing.png

加窗后,在周期延拓的边界上,被强制连续。
FFTContainingNonIntegerNumberOfCyclesForcedContinuityByWindow.png

下面是一个1000Hz的正弦信号,采样频率为48kHz,FFT点数为32768(汉宁窗),因此一个FFT段包含32768/48000*1000=682.6666667个信号周期,加窗后信号能量集中于信号频率附近的几条谱线上,频谱泄漏的情况比不加窗时小。

FFTContainingNonIntegerNumberOfCyclesWithHanningWindowExample.png

点评

为啥说人家胡说八道啊  详情 回复 发表于 2016-7-11 08:56
又在胡说八道了。  发表于 2016-7-8 17:49
sd
说的很详细很清楚 要是能把程序也贴出来就更好了 加窗的意义就是要减少频谱泄露对吗?  详情 回复 发表于 2016-7-5 16:23
回复 支持 2 反对 0

使用道具 举报

发表于 2016-7-5 16:23 | 显示全部楼层
TestGuru 发表于 2016-7-5 16:13
1. 如果DFT采集时间窗口内的信号的周期延拓与实际信号完全吻合,那么就不会出现泄漏现象。换句话说,对于周 ...

说的很详细很清楚  要是能把程序也贴出来就更好了  
加窗的意义就是要减少频谱泄露对吗?
发表于 2016-7-5 16:32 | 显示全部楼层
在时域乘以窗函数,相当于在频域对跟该窗函数的频谱做卷积。不同的窗函数有不同的频谱,那么在频谱泄漏不可避免的时候,如何选择合适的窗函数呢?这个得首先估计被测信号的频率成分。

1. 如果信号中的干扰信号的频率离所关注的信号的频率较远,则应选择旁瓣衰减率高的窗函数;
2. 如果信号中的干扰信号的频率离所关注的信号的频率较近,则应选择最高旁瓣幅度低的窗函数;
3. 如果信号中的干扰信号的频率离所关注的信号的频率非常接近,则应选择主瓣窄的窗函数;
4. 如果要准确测量信号的某一单频分量的幅度,则应选择主瓣宽的窗函数;
5. 如果信号是宽频噪音信号,则宜采用矩形窗。

总的来看,汉宁窗具有较好的频率分辨率,也大大减少了频谱泄漏,适用于大多数情形。

我们评估了MI所支持的55种窗函数,在这55种窗函数中选择了单项冠军。


1. 旁瓣衰减率高的窗函数 Cosine Window (Alfa = 5)
Cosine5.png

2. 最高旁瓣幅度低的窗函数 Kaiser-Bessel Window  (Alfa = 19.0)

Kaiser19.png

3. 主瓣窄的窗函数 Rectangle Window
Rectangle.png

4. 主瓣宽的窗函数 Kaiser-Bessel Window  (Alfa = 20.0)
Kaiser20.png

另一个常用的主瓣宽的窗函数是 Flat Top Window

FlatTop.png


5. 最常用的窗之一 Hanning Window
Hanning.png


评分

1

查看全部评分

发表于 2016-7-8 08:44 | 显示全部楼层
楼上给的资料太详细了  谢谢谢谢!  学习一下!
发表于 2016-7-8 13:56 | 显示全部楼层
TestGuru 发表于 2016-7-5 16:13
1. 如果DFT采集时间窗口内的信号的周期延拓与实际信号完全吻合,那么就不会出现泄漏现象。换句话说,对于周 ...

楼主写的例子很好,我的疑问基本均已解决,十分感谢,顶!
发表于 2016-7-11 08:56 | 显示全部楼层
TestGuru 发表于 2016-7-5 16:13
1. 如果DFT采集时间窗口内的信号的周期延拓与实际信号完全吻合,那么就不会出现泄漏现象。换句话说,对于周 ...

为啥说人家胡说八道啊
发表于 2016-7-14 08:38 | 显示全部楼层
怪咖先生 发表于 2016-7-11 08:56
为啥说人家胡说八道啊

你懂?说来听听

点评

教了你无数遍了,你还是屡教不改。不可救药!  发表于 2016-7-14 21:32
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 21:18 , Processed in 0.102739 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表