几种常见的窗函数

几种常用的窗函数的比较

名称

特点

应用

矩形窗

Rectangle

矩形窗使用最多,习惯上不加窗就是使信号通过了矩形窗。这种窗的优点是主瓣比较集中,缺点是旁瓣较高,并有负旁瓣,导致变换中带进了高频干扰和泄漏,甚至出现负谱现象。频率识别精度最高,幅值识别精度最低,所以矩形窗不是一个理想的窗。

如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用矩形窗,例如测量物体的自振频率等,也可以用在阶次分析中。

汉宁窗

Hanning

又称升余弦窗。主瓣加宽并降低,旁瓣则显著减小,从减小泄漏观点出发,汉宁窗优于矩形窗.但汉宁窗主瓣加宽,相当于分析带宽加宽,频率分辨力下降。它与矩形窗相比,泄漏、波动都减小了,并且选择性也提高。

是很有用的窗函数。如果测试信号有多个频率分量,频谱表现的十分复杂,且测试的目的更多关注频率点而非能量的大小,需要选择汉宁窗。如果被测信号是随机或者未知的,选择汉宁窗。

海明窗

(汉明窗)

Hamming

与汉宁窗都是余弦窗,又称改进的升余弦窗,只是加权系数不同,使旁瓣达到更小。但其旁瓣衰减速度比汉宁窗衰减速度慢。

与汉明窗类似,也是很有用的窗函数。

平顶窗

Flap Top

平顶窗在频域时的表现就象它的名称一样有非常小的通带波动。

由于在幅度上有较小的误差,所以这个窗可以用在校准上。

凯塞窗

Kaiser

定义了一组可调的由零阶贝塞尔Bessel 函数构成的窗函数,通过调整参数β可以在主瓣宽度和旁瓣衰减之间自由选择它们的比重。对于某一长度的Kaiser 窗,给定β,则旁瓣高度也就固定了。

 

布莱克曼窗

Blackman

二阶升余弦窗,主瓣宽,旁瓣比较低,但等效噪声带宽比汉宁窗要大一点,波动却小一点。频率识别精度最低,但幅值识别精度最高,有更好的选择性。

常用来检测两个频率相近幅度不同的信号。

高斯窗

Gaussian

是一种指数窗。主瓣较宽,故而频率分辨力低;无负的旁瓣,第一旁瓣衰减达一55dB。常被用来截短一些非周期信号,如指数衰减信号等。

对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。

三角窗

(费杰窗)

Fejer

是幂窗的一次方形式。与矩形窗比较,主瓣宽约等于矩形窗的两倍,但旁瓣小,而且无负旁瓣。

如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;

切比雪夫窗(Chebyshev)

在给定旁瓣高度下,Chebyshev窗的主瓣宽度最小,具有等波动性,也就是说,其所有的旁瓣都具有相等的高度。

 

下面是几种窗函数归一化DTFT幅度的MATLAB程序:

在FIR滤波器设计中,窗函数法是一种常用的时域设计方法。通过将理想滤波器的无限长冲激响应与有限长窗函数相乘,可以获得实际可实现的滤波器系数。不同类型的窗函数对滤波器性能有着显著影响,主要包括过渡带宽度、通带波纹和阻带衰减等指标。以下是一些常用的窗函数及其性能特点: ### 常见窗函数及其性能特点 #### 1. 矩形窗(Rectangular Window) - **主瓣宽度**:最窄,约为 $ \frac{4\pi}{N} $。 - **旁瓣高度**:较高,约为 -13 dB。 - **通带波纹**:较大。 - **阻带衰减**:较低,约为 21 dB。 - **适用场景**:适用于对过渡带要求不高的场合,但由于其较大的波纹和较弱的衰减性能,实际应用较少。 #### 2. 三角窗(Bartlett Window) - **主瓣宽度**:约为 $ \frac{8\pi}{N} $。 - **旁瓣高度**:约为 -25 dB。 - **通带波纹**:较小于矩形窗。 - **阻带衰减**:约为 25 dB。 - **适用场景**:比矩形窗有更好的波纹抑制能力,但仍不适合高精度滤波需求。 #### 3. 汉宁窗(Hanning Window) - **主瓣宽度**:约为 $ \frac{8\pi}{N} $。 - **旁瓣高度**:约为 -31 dB。 - **通带波纹**:较小。 - **阻带衰减**:约为 44 dB。 - **适用场景**:适用于需要较好频率分辨率和较低旁瓣的应用,如音频信号处理。 #### 4. 海明窗(Hamming Window) - **主瓣宽度**:约为 $ \frac{8\pi}{N} $。 - **旁瓣高度**:约为 -41 dB。 - **通带波纹**:非常小。 - **阻带衰减**:约为 52 dB。 - **适用场景**:广泛用于通信系统中,特别是在频谱分析和信号检测中,因其具有良好的旁瓣抑制能力。 #### 5. 布莱克曼窗(Blackman Window) - **主瓣宽度**:约为 $ \frac{12\pi}{N} $。 - **旁瓣高度**:约为 -57 dB。 - **通带波纹**:极小。 - **阻带衰减**:约为 74 dB。 - **适用场景**:适用于对旁瓣抑制要求极高的场合,如高精度频谱分析和雷达信号处理。 #### 6. 凯撒窗(Kaiser Window) - **主瓣宽度**:可通过参数 $\beta$ 调整,通常在 $ \frac{4\pi}{N} $ 到 $ \frac{12\pi}{N} $ 之间。 - **旁瓣高度**:可通过 $\beta$ 调整,范围从 -21 dB 到 -100 dB 不等。 - **通带波纹**:可通过 $\beta$ 控制。 - **阻带衰减**:可通过 $\beta$ 控制。 - **适用场景**:适用于需要灵活调整主瓣宽度和旁瓣高度的场合,具有较高的设计自由度。 --- ### 窗函数选择的考虑因素 - **主瓣宽度**:决定了滤波器的过渡带宽度,主瓣越宽,过渡带越宽,频率分辨率越差。 - **旁瓣高度**:决定了通带和阻带中的波纹幅度,旁瓣越高,波纹越大。 - **阶数 $N$**:窗函数的长度直接影响滤波器的性能。通常 $N$ 越大,主瓣越窄,旁瓣越高;反之,$N$ 越小,主瓣越宽,旁瓣越低。 - **应用需求**:根据具体应用场景选择合适的窗函数,如对过渡带要求高则选择主瓣窄的窗,对波纹要求高则选择旁瓣低的窗。 --- ### 示例代码:使用Python设计FIR滤波器并应用不同窗函数 ```python import numpy as np import matplotlib.pyplot as plt from scipy.signal import firwin, freqz # 设计参数 num_taps = 51 # 滤波器阶数 cutoff_freq = 0.2 # 归一化截止频率 (0.2 * Nyquist) # 使用不同窗函数设计低通滤波器 windows = ['rectangular', 'bartlett', 'hanning', 'hamming', 'blackman'] filters = {} for window in windows: if window == 'rectangular': filters[window] = firwin(num_taps, cutoff_freq, window=window) else: filters[window] = firwin(num_taps, cutoff_freq, window=window) # 绘制频率响应 for window in windows: w, h = freqz(filters[window]) plt.plot(w / np.pi, 20 * np.log10(abs(h)), label=f'{window.capitalize()} Window') plt.title('Frequency Response of FIR Filters with Different Windows') plt.xlabel('Normalized Frequency (×π rad/sample)') plt.ylabel('Magnitude (dB)') plt.grid(True) plt.legend() plt.show() ``` --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值