频谱泄漏 matlab,关于MATLAB FFT频谱泄露和加窗

我们分析的信号,如果只含整数次谐波的话,用FFT分析信号的频谱和相位是非常准确的,如果信号含有确定的间谐波,比如信号含有60HZ和65HZ的频率,那我们也可以准确的分析出信号的频谱和相位,我们只要用矩形窗截取10个周波的信号就可以分析出50HZ/10=5HZ以及5HZ的整数倍的信号的频谱和相位了,分析的相位和频谱都是非常准确的!如果我们需要分析的信号含有不确定的间谐波,比如我们根本不知道信号含有什么样的间谐波,那么此时用FFT分析,必然会有频谱泄露!那么怎么样才能减少频谱泄露呢(注意:这种情况下我们只能减少频谱泄露,而基本上不可能完全消除频谱泄露)?我们可以有两种方法:方法一:增加采样的长度,方法二:加窗函数。增加采样长度可以分析出更多频率的信号,可以减少频谱泄露,不过增加采样长度必然会对数据处理的实时性造成影响!理想的窗函数是主瓣很窄,旁瓣衰减很快,矩形窗的主瓣很窄,但是旁瓣衰减却很慢,hanning窗、hamming窗、blackman窗等的旁瓣衰减有了明显的改进,但是主瓣却宽了很多,大概是矩形窗主瓣的二倍,blackman窗的主瓣还要宽,这就造成了信号频谱的频率识别率很低!什么叫频率识别率呢?简单举个例子解释一下:比如说我取十个周波(请注意:这里我用十个周波举例子是为了便于计算,实际中我们是不取10个周波的,因为基2的FFT运算要求取样点数是2的整数倍整数次幂,我们实际操作是取4、8或者16个周波等2的整数次幂),我用一个含有25HZ间谐波的信号做分析,那么我加hamming窗和hanning窗以后,在20HZ和30HZ处的频率点上都将有幅值,而且有趣的是:我们将20HZ、25HZ和30HZ频率点处的幅值相加以后基本上接近与信号在25HZ处的真实幅值(这一点我还没搞清楚,是否隐含什么关系),并且在频谱上看到的25HZ处的幅值要小于实际信号在25HZ处的幅值,所以我们要对加窗后的FFT变换的幅值要乘以一个恢复系数,不同窗的恢复系数也是不同,矩形窗的是1,hanning窗的是2,hamming窗的好像是1.84左右吧(不好意思,记不清了,大家可以在网上查到)!这样我们在分析25HZ频率点处的幅值时,对于20HZ和30HZ频率点处的幅值都是不可信的,所以我们至少要求20HZ和30HZ附近是不能有信号的,这样频率分辨率相对来说是不是就降低了?因为20HZ和30HZ是不能用的!(哈哈,语言组织能力差了点,有什么不严谨的地方大家包含啊)!大家可想而知,如果我的原始信号在20HZ和30HZ处本来就都有幅值,那么20HZ和30HZ处的频率也将反过来影响25HZ处的信号,这样测出来的幅值误差将会很大,所以我们在加窗时由一个要求:那就是谐波和间谐波,以及间谐波与间谐波之间要相隔较远,我觉得,至少要相隔2条谱线以上我们才能获得较高精度的幅值!blackman窗要求相隔的谱线还要多!这是因为blackman窗的主瓣还要宽!所以对于加窗函数我们要权衡利弊,根据具体需要来选择!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值