计算机系统应用教程网站

网站首页 > 技术文章 正文

窗函数补偿 窗函数法的优缺点

btikc 2024-12-18 12:23:55 技术文章 18 ℃ 0 评论

1. 补偿系数

前面文章已经讲过信号加入窗函数可以减少频谱的泄露,但是加入窗函数后会引起信号值的衰减,此时需要对信号值进行修正。如下图是幅值为3,频率为80Hz的一个正弦信号。

对该信号加入汉宁窗作fft变换,此时频谱曲线如下图所示:

如果我们只关心信号的幅值,此时需要采用的是幅值修正,此时从图中可看出应该在200Hz处应该乘以2。

如果此时采用能量修正的话,此时正弦信号的所有能量:

此时信号需要修正的系数是:

常用的窗函数的幅值和能量修正系数如下表格所示,表格中的点数为1024:

窗函数

幅值系数

能量系数

矩形窗

1

1

汉宁窗

2

1.6338

汉明窗

1.8516

1.5863

三角窗

1.998

1.7312

高斯窗

2.401

1.8399

布莱克曼窗

2.3810

1.8119

Matlab代码实现:

clc

clear all

N=1024;

w=hann(N);

fAmp=sum(w);

fAmp=1.0/(fAmp/(N))

psdscale=w'*w;

psdscale=1.0/(psdscale/(N));

psdcsale=sqrt(psdscale)

2.主瓣

窗函数除了修正系数,还需要关注主瓣宽度等参数。

在这里主瓣分为两种,一种是主瓣带宽(ENBW),还有一种是主瓣3dB带宽。

主瓣3dB带宽一般指的是窗的频谱,指的是频谱峰值的半功率带,一般就是指的是峰值的处的带宽。

主瓣带宽即等效噪声带宽(ENBW),指的是双边的噪声带宽。

Pxx = periodogram(x,hanning(length(x)),[],Fs,'centered','psd');

Sxx = periodogram(x,hanning(length(x)),[],Fs,'centered','power');

plot(1:1:N,Sxx./Pxx)

在Matlab中代码实现,ENBW代表的信号的功率谱密度函数与能量的比值或者直接用ENBW函数。

当信号通过幅值系数修正后,窗函数的能量与实际信号的比值的系数:

以上图中80Hz幅值为3的正弦信号,经汉宁窗后,此时对信号进行幅值比例系数调整,将幅值都乘以2:

此时:

3.栅栏效应

除了信号存在泄露原因外,由于傅里叶频谱变换是离散的,当信号的频率不存在频率分辨率上,此时信号的能量就会在频率左右的谱线。比如当点数为1024,采样率是1024时,此时频率分辨率是1Hz,当频率80.5Hz,幅值为3的正弦信号经过矩形窗时,此时对信号作频谱变换,此时的频谱为:

从图中可以明显看出80.5Hz的正弦信号分布到80Hz与81Hz的谱线上,该现象存在栅栏现象。当信号频率不同,频率分辨率不同时,信号的幅值误差即栅栏损失是不同的。当信号的频率在谱线中间时,栅栏损失是最大的即幅值误差最大。

最高旁瓣,旁瓣衰减

最高旁瓣指的是最大边瓣的幅值,边瓣衰减指的是边瓣谱峰渐进衰减速度。如图所示。

常用窗函数的参数如下图所示:

窗函数

主瓣

ENBW

主瓣

3dB带宽

最大幅值误差(栅栏损失)(dB)

最高旁瓣/dB

旁瓣衰减/每倍频程

矩形窗

1

0.89

-3.92(36.3%)

-13

-6dB

汉宁窗

1.5

1.44

-1.42(15.1%)

-32

-18dB

汉明窗

1.36

1.3

-1.78(20.6%)

-43

-6dB

布莱克曼窗

1.73

1.68

-1.10(12.5%)

-58

-18dB

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表