数字信号处理窗函数程序
几种常见窗函数及其MATLAB程序实现
几种常见窗函数及其MATLAB程序实现2013-12-16 13:58 2296人阅读评论(0) 收藏举报分类:Matlab(15)数字信号处理中通常是取其有限的时间片段进行分析,而不是对无限长的信号进行测量和运算。
具体做法是从信号中截取一个时间片段,然后对信号进行傅里叶变换、相关分析等数学处理。
信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的。
在FFT分析中为了减少或消除频谱能量泄漏及栅栏效应,可采用不同的截取函数对信号进行截短,截短函数称为窗函数,简称为窗。
泄漏与窗函数频谱的两侧旁瓣有关,对于窗函数的选用总的原则是,要从保持最大信息和消除旁瓣的综合效果出发来考虑问题,尽可能使窗函数频谱中的主瓣宽度应尽量窄,以获得较陡的过渡带;旁瓣衰减应尽量大,以提高阻带的衰减,但通常都不能同时满足这两个要求。
频谱中的如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱。
不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。
信号的加窗处理,重要的问题是在于根据信号的性质和研究目的来选用窗函数。
图1是几种常用的窗函数的时域和频域波形,其中矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低,如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用矩形窗,例如测量物体的自振频率等;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高;如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。
表1 是几种常用的窗函数的比较。
如果被测信号是随机或者未知的,或者是一般使用者对窗函数不大了解,要求也不是特别高时,可以选择汉宁窗,因为它的泄漏、波动都较小,并且选择性也较高。
但在用于校准时选用平顶窗较好,因为它的通带波动非常小,幅度误差也较小。
数字信号处理窗函数特性
信息科学与技术学院实验报告课程名称: 数字信号处理实验项目: 窗函数的特性实验地点:博西105 指导教师: 日期: 2013年5月7日实验类型:综合性实验(验证性实验综合性实验设计性实验)专业: 电子信息班级:姓名: 学号:一、实验目的及要求1.分析各种窗函数时域和频域特性。
2.为灵活运用窗函数分析信号频谱和设计FIR数字滤波器奠定基础。
二、实验仪器、设备或软件计算机 MATLAB软件三、实验步骤(或过程)(一):实验程序:N=51;beta=2;w1=boxcar(N);W1=fft(w1,256);w2=hanning(N);W2=fft(w2,256);w3=hamming(N);W3=fft(w3,256);w4=blackman(N);W4=fft(w4,256);w5=bartlett(N);W5=fft(w5,256);w6=Kaiser(N);W6=fft(w6,256);figure(1);subplot(2,1,1);stem([0:N-1],w1);title('Rectangle 窗');Y1=abs(fftshift(W1));subplot(2,1,2);plot([-128:127],Y1);title('幅度谱');figure(2);subplot(2,1,1);stem([0:N-1],w2);title('Hanning窗');Y2=abs(fftshift(W2));subplot(2,1,2);plot([-128:127],Y2);title('幅度谱');figure(3);subplot(2,1,1);stem([0:N-1],w3);title('Hamming窗');Y3=abs(fftshift(W3));subplot(2,1,2);plot([-128:127],Y3);title('幅度谱');figure(4);subplot(2,1,1);stem([0:N-1],w4);title('Blacekman窗');Y4=abs(fftshift(W4));subplot(2,1,2);plot([-128:127],Y4);title('幅度谱');figure(5);subplot(2,1,1);stem([0:N-1],w5);title('Bartlett窗');Y5=abs(fftshift(W5));subplot(2,1,2);plot([-128:127],Y5);title('幅度谱');figure(6);subplot(2,1,1);stem([0:N-1],w6);title('Kaiser 窗');Y6=abs(fftshift(W6));subplot(2,1,2);plot([-128:127],Y6);title('幅度谱');(二)程序设计实验:1.利用fft 函数分析常用窗函数的频谱特性,并从主瓣宽度和旁瓣相对幅度两个角度分析比较。
数字信号处理系列串讲第18篇(数字滤波器之二)——FIR滤波器(2):窗函数法(2)
数字信号处理系列串讲第18篇(数字滤波器之二)——FIR滤波器(2):窗函数法(2)FIR滤波器设计-窗函数法(2)来自信号与系统和数字信号处理00:0029:30本文是FIR滤波器的第二个问题——窗函数法的第二篇。
我们介绍各种窗函数。
二窗函数法1. 设计原理上一篇以低通滤波器加矩形窗为例,详细介绍了窗函数法设计FIR 滤波器的原理,辅以动画演示,形象生动。
链接如下:数字信号处理系列串讲第17篇(数字滤波器之二)——FIR滤波器(2):窗函数法(1)2. 各种窗函数下面,给出几种常见窗函数的时域和幅度函数的表达式。
由于其时域都满足关于(N-1)/2 偶对称,都具有线性相位特性。
下面重点分析其时域表达式和频域的幅度函数。
(1)矩形窗大家可能会有疑问:矩形窗的旁瓣与主瓣幅度之比,真的与长度N无关吗?我们详细分析一下:矩形窗的幅度函数:sin(Nw/2)/sin(w/2),将w=0代入得到主瓣幅度峰值为N,将w=3Π/N代入得到第一旁瓣(最高的旁瓣)峰值为1/sin(3Π/2N),所以旁瓣与主瓣峰值之比为:1/(N×sin(3Π/2N))。
我们分别以该数值以及该数值取20log10为纵轴,N为横轴,画出图形如下:可见,当N大于30时,矩形窗谱的旁瓣与主瓣幅度之比基本保持为常数0.21(-13.5dB)。
(2)三角窗既然矩形窗的旁瓣和主瓣幅度之比基本是一固定值,我们就想到,如果把它平方一下,这一比值会减小,0.21的平方为0.044(-27dB)。
而根据傅里叶变换的性质,频域相乘,对应时域卷积,两个宽度相同的矩形脉冲卷积为三角形。
这就是三角窗。
与矩形窗相比,三角窗的旁瓣虽然显著降低了,但不幸的是,主瓣宽度也增加了一倍,为8Π/N。
(3)汉宁(Hanning)窗(又称为升余弦窗)汉宁窗的设计思想是,将矩形窗的窗谱分别左移和右移半个主瓣宽度,使其旁瓣相互抵消,如下图所示。
蓝色实线为矩形窗谱(幅度函数),红色虚线和绿色虚线分别为其右移和左移半个主瓣,用红色的第一旁瓣和绿色的第三旁瓣去抵消蓝色的第一旁瓣,以此类推,达到降低旁瓣幅度的目的。
实验六用窗函数法设计FIR滤波器分析解析
实验六用窗函数法设计FIR滤波器分析解析一、引言数字滤波器是数字信号处理中的重要组成部分。
滤波器可以用于去除噪声、调整频率响应以及提取感兴趣的信号。
有许多方法可以设计数字滤波器,包括窗函数法、频域法和优化法等。
本实验将重点介绍窗函数法设计FIR滤波器的原理和过程。
二、窗函数法设计FIR滤波器窗函数法是设计FIR滤波器的一种常用方法。
其基本原理是将滤波器的频率响应与理想滤波器的频率响应进行乘积。
理想滤波器的频率响应通常为矩形函数,而窗函数则用于提取有限长度的理想滤波器的频率响应。
窗函数的选择在FIR滤波器的设计中起着重要的作用。
常用的窗函数包括矩形窗、汉宁窗、汉明窗、布莱克曼窗等。
对于每种窗函数,都有不同的特性和性能指标,如主瓣宽度、副瓣抑制比等。
根据不同的应用需求,可以选择合适的窗函数。
窗函数法设计FIR滤波器的具体步骤如下:1.确定滤波器的阶数N。
阶数N决定了滤波器的复杂度,一般情况下,阶数越低,滤波器的简单度越高,但频率响应的近似程度也会降低。
2.确定滤波器的截止频率。
根据应用需求,确定滤波器的截止频率,并选择合适的窗函数。
3.根据窗函数长度和截止频率计算理想滤波器的频率响应。
根据所选窗函数的特性,计算理想滤波器的频率响应。
4.根据理想滤波器的频率响应和窗函数的频率响应,得到所需的FIR滤波器的频率响应。
将理想滤波器的频率响应与窗函数的频率响应进行乘积,即可得到所需滤波器的频率响应。
5.对所得到的频率响应进行逆傅里叶变换,得到时域的滤波器系数。
6.实现滤波器。
利用所得到的滤波器系数,可以通过卷积运算实现滤波器。
三、实验结果与分析本实验以Matlab软件为平台,利用窗函数法设计了一个低通滤波器。
滤波器的阶数为16,截止频率为500Hz,采样频率为1000Hz,选择了汉宁窗。
根据上述步骤,计算得到了所需的滤波器的频率响应和时域的滤波器系数。
利用这些系数,通过卷积运算,实现了滤波器。
为了验证滤波器的性能,将滤波器应用于输入信号,观察输出信号的变化。
几种常见窗函数及其MATLAB程序实现
几种常见窗函数及其MATLAB程序实现2013-12-16 13:58 2296人阅读评论(0) 收藏举报分类:Matlab(15)数字信号处理中通常是取其有限的时间片段进行分析,而不是对无限长的信号进行测量和运算。
具体做法是从信号中截取一个时间片段,然后对信号进行傅里叶变换、相关分析等数学处理。
信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的。
在FFT分析中为了减少或消除频谱能量泄漏及栅栏效应,可采用不同的截取函数对信号进行截短,截短函数称为窗函数,简称为窗。
泄漏与窗函数频谱的两侧旁瓣有关,对于窗函数的选用总的原则是,要从保持最大信息和消除旁瓣的综合效果出发来考虑问题,尽可能使窗函数频谱中的主瓣宽度应尽量窄,以获得较陡的过渡带;旁瓣衰减应尽量大,以提高阻带的衰减,但通常都不能同时满足这两个要求。
频谱中的如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱。
不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。
信号的加窗处理,重要的问题是在于根据信号的性质和研究目的来选用窗函数。
图1是几种常用的窗函数的时域和频域波形,其中矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低,如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用矩形窗,例如测量物体的自振频率等;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高;如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。
表1 是几种常用的窗函数的比较。
如果被测信号是随机或者未知的,或者是一般使用者对窗函数不大了解,要求也不是特别高时,可以选择汉宁窗,因为它的泄漏、波动都较小,并且选择性也较高。
但在用于校准时选用平顶窗较好,因为它的通带波动非常小,幅度误差也较小。
窗函数的实现与分析
窗函数的实现与分析窗函数是一种在数字信号处理中常用的技术,用于对信号进行加窗处理。
加窗处理的目的是在频域上对信号进行平滑,以减少频谱泄漏或者减小窗口边界效应。
窗函数广泛应用于傅里叶变换、滤波器设计、频谱分析、信号重构等领域。
窗函数实现的原理是在信号的时域上对原始信号进行截断,即乘以一个截断窗口函数。
截断窗口函数通常是一个平滑、有限的、具有零边界值的函数。
这样可以使得信号在窗口内部逐渐减小,并在窗口外部变为零,从而达到减少频谱泄漏的效果。
常用的窗函数有矩形窗、汉明窗、汉宁窗、布莱克曼窗、海明窗等。
下面以汉明窗为例,介绍窗函数的实现与分析。
汉明窗是一种常用的窗函数,其定义为:w(n) = 0.54 - 0.46 * cos(2πn/N),其中0 <= n <= N-1假设需要对长度为N的信号x(n)进行加窗处理,实现过程如下:1.初始化窗口长度N。
2.初始化一个长度为N的空数组w,用于存储窗函数的值。
3.对n从0到N-1循环,计算w(n)的值,并存储到w中。
4.对信号x(n)和窗函数w(n)进行逐点乘法运算,得到加窗后的信号y(n)。
y(n)=x(n)*w(n),其中0<=n<=N-15.返回加窗后的信号y(n)。
分析:1.汉明窗的定义表明,在窗口中心附近,窗函数的值最大,逐渐向窗口两端减小,直至为零。
这样可以对信号进行平滑处理,减少频谱泄漏。
2.汉明窗的参数0.54和0.46是经验值,具体值的选择可以根据应用场景进行调整,以达到最佳的效果。
3.窗口长度N的选择也很重要。
如果窗口长度过短,会导致频谱分辨率降低,无法准确表示高频成分;如果窗口长度过长,会导致频域分辨率提高,但时间分辨率降低。
4.窗函数的选择也是根据应用场景的不同而不同。
汉明窗适用于大多数信号分析场景,但对于具有突变的信号,如短时能量突变的语音信号,汉明窗可能会引入较大的误差。
5.窗函数的性能可以通过计算频谱泄漏、主瓣宽度、旁瓣幅度等指标来评估。
数字信号处理第七章
H(ej)h(n)
Hd (e j)为理想低通
滤波器的传输函数。
数字信号处理第七章
h (n )h d(n )R N (n )
如果对截取后的信号进行傅里叶变换,假设采用矩形窗截
取,对截取后信号进行傅里叶变换得:
频域卷积定理
H(ej) 1
Hd
(e
j
)
1 e 0
j
c
c
:低通滤波器的延时
hd(n)
1
2
Hd(ej)ejnd
1
2
c ej
c
ejnd
1
2
c ej(n)d
c
1
2
1
j(n)
ej(n)
|c c
s
in( c(n)) (n)
数字信号处理第七章
理想特性的hd(n)和Hd(ω)
hd
(n)
sin(c(n ) (n )
hd(n)的最大 值是多少?
ej 2 1 H d()W R ()d
H(ej)H()ej 数字信号处理第七章
则实际FIR滤波器的幅度函数H (ω) 为
H ()2 1 H d()W R()d
取样函数
矩形窗
正好是理想滤波器幅度函数与窗函数幅度函数的卷积。
数字信号处理第七章
H(0) 0.5H(0) H(ω)max H(ω)min
③N增加,过渡带宽减小,肩峰值不变。 因主瓣附近
(a)
(b)
hd(n)是一个以(N-1)/2为中心的偶对称的无限长非因果序列, 如果截取一段n=0~N-1的hd(n)作为h(n),则为保证所得到的
几种常见窗函数及其MATLAB程序实现
几种常见窗函数及其MATLAB程序实现2013-12-16 13:582296人阅读评论(0)收藏举报分类:Matlab(15)数字信号处理中通常是取其有限的时间片段进行分析,而不是对无限长的信号进行测量和运算。
具体做法是从信号中截取一个时间片段,然后对信号进行傅里叶变换、相关分析等数学处理。
信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的。
在FFT分析中为了减少或消除频谱能量泄漏及栅栏效应,可采用不同的截取函数对信号进行截短,截短函数称为窗函数,简称为窗。
泄漏与窗函数频谱的两侧旁瓣有关,对于窗函数的选用总的原则是,要从保持最大信息和消除旁瓣的综合效果出发来考虑问题,尽可能使窗函数频谱中的主瓣宽度应尽量窄,以获得较陡的过渡带;旁瓣衰减应尽量大,以提高阻带的衰减,但通常都不能同时满足这两个要求。
频谱中的如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱。
不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。
信号的加窗处理,重要的问题是在于根据信号的性质和研究目的来选用窗函数。
图1是几种常用的窗函数的时域和频域波形,其中矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低,如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用矩形窗,例如测量物体的自振频率等;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高;如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。
表1 是几种常用的窗函数的比较。
如果被测信号是随机或者未知的,或者是一般使用者对窗函数不大了解,要求也不是特别高时,可以选择汉宁窗,因为它的泄漏、波动都较小,并且选择性也较高。
但在用于校准时选用平顶窗较好,因为它的通带波动非常小,幅度误差也较小。
几种常见窗函数及其MATLAB程序实现
几种常见窗函数及其MATLAB程序实现2013-12-16 13:58 2296人阅读评论(0) 收藏举报分类:Matlab(15)数字信号处理中通常是取其有限的时间片段进行分析,而不是对无限长的信号进行测量和运算。
具体做法是从信号中截取一个时间片段,然后对信号进行傅里叶变换、相关分析等数学处理。
信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的。
在FFT分析中为了减少或消除频谱能量泄漏及栅栏效应,可采用不同的截取函数对信号进行截短,截短函数称为窗函数,简称为窗。
泄漏与窗函数频谱的两侧旁瓣有关,对于窗函数的选用总的原则是,要从保持最大信息和消除旁瓣的综合效果出发来考虑问题,尽可能使窗函数频谱中的主瓣宽度应尽量窄,以获得较陡的过渡带;旁瓣衰减应尽量大,以提高阻带的衰减,但通常都不能同时满足这两个要求。
频谱中的如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱。
不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。
信号的加窗处理,重要的问题是在于根据信号的性质和研究目的来选用窗函数。
图1是几种常用的窗函数的时域和频域波形,其中矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低,如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用矩形窗,例如测量物体的自振频率等;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高;如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。
表1 是几种常用的窗函数的比较。
如果被测信号是随机或者未知的,或者是一般使用者对窗函数不大了解,要求也不是特别高时,可以选择汉宁窗,因为它的泄漏、波动都较小,并且选择性也较高。
但在用于校准时选用平顶窗较好,因为它的通带波动非常小,幅度误差也较小。
数字信号处理实验报告——用窗函数法设计-FIR数字滤波器
实验四 用窗函数法设计 FIR 数字滤波器一、 实验目的(1) 掌握用窗函数法设计FIR 数字滤波器的原理和方法。
(2) 熟悉线性相位FIR 数字滤波器特性。
(3) 了解各种窗函数对滤波特性的影响。
二、 实验原理、滤波器的理想频率响应函数为H d (e j ω),则其对应的单位脉冲响应为h d (n) =⎰-ππωωωπd e e H n j j d)(21 窗函数设计法的基本原理是用有限长单位脉冲响应序列h(n)逼h d (n)。
由于h d (n)往往是无限长序列,且是非因果的,所以用窗函数。
w(n)将h d (n)截断,并进行加权处理:h(n) = h d (n) w(n)h(n)就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数H(e j ω)为H(e j ω) =∑-=-10)(N n n j en h ω用窗函数法设计的滤波器性能取决于窗函数w(n)的类型及窗口长度N 的取值。
设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。
三、 实验内容1.MATALAB 程序任务一N1=15;N2=33;b1=fir1(14,1/4,hanning(15));b2=fir1(32,1/4,hanning(33));[H1,W]=freqz(b1,1);H1_db=20*log10(abs(H1));magH1=abs(H1);phaH1=angle(H1);[H2,W]=freqz(b2,1);H2_db=20*log10(abs(H2));magH2=abs(H2);phaH2=angle(H2);figure(1);subplot(2,1,1);stem(b1);title('N=15时,汉宁窗得到的FIR滤波器脉冲响应'); subplot(2,1,2);stem(b2);title('N=33时,汉宁窗得到的FIR滤波器脉冲响应');figure(2);subplot(3,1,1);plot(W/pi,magH1);title('N=15时汉宁窗得到的FIR滤波器的幅频特性') subplot(3,1,2);plot(W/pi,H1_db);title('N=15时汉宁窗得到的FIR滤波器的对数幅频特性') subplot(3,1,3);plot(W/pi,phaH1);title('N=15时汉宁窗得到的FIR滤波器的相频特性')figure(3);subplot(3,1,1);plot(W/pi,magH2);title('N=33时汉宁窗得到的FIR滤波器的幅频特性') subplot(3,1,2);plot(W/pi,H2_db);title('N=33时汉宁窗得到的FIR滤波器的对数幅频特性') subplot(3,1,3);plot(W/pi,phaH2);title('N=33时汉宁窗得到的FIR滤波器的相频特性')任务二N=33;b1=fir1(32,1/4,boxcar(33));b2=fir1(32,1/4,hanning(33));b3=fir1(32,1/4,bartlett(33));b4=fir1(32,1/4,blackman(33));[H1,W]=freqz(b1,1);H1_db=20*log10(abs(H1));magH1=abs(H1);phaH1=angle(H1);[H2,W]=freqz(b2,1);H2_db=20*log10(abs(H2));magH2=abs(H2);phaH2=angle(H2);[H3,W]=freqz(b3,1);H3_db=20*log10(abs(H3));magH3=abs(H3);phaH3=angle(H3);[H4,W]=freqz(b4,1);H4_db=20*log10(abs(H4));magH4=abs(H4);phaH4=angle(H4);figure(1);subplot(2,2,1);stem(b1);title('矩形窗得到的FIR滤波器脉冲响应') subplot(2,2,2);stem(b2);title('汉宁窗得到的FIR滤波器脉冲响应') subplot(2,2,3);stem(b3);title('三角窗得到的FIR滤波器脉冲响应') subplot(2,2,4);stem(b4);title('布拉克曼窗得到的FIR滤波器脉冲响应') figure(2);subplot(2,2,1);plot(W/pi,magH1);title('矩形窗得到的FIR滤波器幅频特性')title('汉宁窗得到的FIR滤波器幅频特性') subplot(2,2,3);plot(W/pi,magH3);title('三角窗得到的FIR滤波器幅频特性') subplot(2,2,4);plot(W/pi,magH4);title('布拉克曼窗得到的FIR滤波器幅频特性') figure(3);subplot(2,2,1);plot(W/pi,H1_db);title('矩形窗得到的FIR滤波器相频特性') subplot(2,2,2);plot(W/pi,H2_db);title('汉宁得到的FIR滤波器相频特性') subplot(2,2,3);plot(W/pi,H3_db);title('三角窗得到的FIR滤波器相频特性') subplot(2,2,4);plot(W/pi,H4_db);title('布拉克曼得到的FIR滤波器相频特性') figure(4);subplot(2,2,1);plot(W/pi,phaH1);title('矩形窗得到的FIR滤波器相频特性') subplot(2,2,2);plot(W/pi,phaH2);title('汉宁窗得到的FIR滤波器相频特性') subplot(2,2,3);plot(W/pi,phaH3);title('三角窗得到的FIR滤波器相频特性')title('布拉克曼窗得到的FIR滤波器相频特性') 2.实验波形图任务一任务二四、 实验结论1.N 的大小决定了窗谱的主瓣宽度,N 越大,窗谱的主瓣宽度越大2.最小阻带衰减只有窗行决定,不受N 的影响,过渡带宽度与N 和窗形都有关,N 越大,过渡带宽越小3.由实验可知滤波特性:布拉克曼窗>汉宁窗>三角窗>矩形窗五、 思考题(1) 如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?写出设计步骤。
数字信号课程设计窗函数
数字信号课程设计窗函数一、教学目标本节课的教学目标是使学生掌握窗函数的基本概念、性质和应用,能够熟练运用窗函数进行数字信号处理。
具体来说,知识目标包括:了解窗函数的定义和特点,理解窗函数在数字信号处理中的应用;技能目标包括:能够运用窗函数对信号进行加窗处理,掌握窗函数在信号处理中的基本操作;情感态度价值观目标包括:培养学生对数字信号处理的兴趣,增强学生对科学探究的热情。
二、教学内容本节课的教学内容主要包括窗函数的基本概念、性质和应用。
首先,介绍窗函数的定义和特点,通过实例让学生感受窗函数的作用;其次,讲解窗函数的性质,包括窗函数的周期性、对称性和局部化性质;最后,介绍窗函数在数字信号处理中的应用,如信号的能量泄漏、频率分析等。
三、教学方法为了达到本节课的教学目标,将采用多种教学方法相结合的方式进行教学。
首先,采用讲授法,系统地讲解窗函数的基本概念、性质和应用;其次,采用讨论法,引导学生分组讨论窗函数的特点和作用,增强学生的参与感;再次,采用案例分析法,通过具体案例让学生了解窗函数在实际应用中的重要性;最后,采用实验法,让学生动手实践,运用窗函数进行数字信号处理。
四、教学资源为了支持本节课的教学内容和教学方法的实施,将准备以下教学资源:教材《数字信号处理》,为学生提供系统的理论知识;参考书《窗函数及其应用》,为学生提供更多的案例和实践方法;多媒体资料,包括窗函数的动画演示和实际应用的视频,丰富学生的学习体验;实验设备,如计算机和信号处理器,让学生能够实际操作,加深对窗函数的理解。
五、教学评估本节课的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
评估主要包括以下几个方面:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现,评估其对窗函数的理解和应用能力。
2.作业:布置相关的窗函数练习题,要求学生按时完成,并通过批改作业了解学生对窗函数知识和技能的掌握情况。
3.考试:在课程结束后,安排一次窗函数专项考试,全面测试学生对窗函数知识的掌握和运用能力。
数字信号处理实验——用窗函数设计FIR滤波器
实验四 用窗函数设计FIR 滤波器一、 实验目的1、熟悉FIR 滤波器设计的基本方法。
2、掌握用窗函数设计FIR 数字滤波器的原理及方法,熟悉相应的计算机高级语言编程。
3、熟悉线性相位FIR 滤波器的幅频特性和相位特性。
4、了解各种不同窗函数对滤波器性能的响应。
二、 实验原理和方法窗函数法设计的任务在于寻找一个可实现有限长单位脉冲响应的传递函数H(e jw )=∑-=10N n h(n)e -jwn 去逼近h d (n)=1/2π⎰π20H d (e jw )e jwn dw即h(n)=h d (n)w (n ) (一)几种常用的窗函数1、矩形窗 w(n)=R N (n)2、Hanning 窗 w(n)=0.5[1-cos(2πn /N-1)]R N (n)3、Hamming 窗 w(n)=[0.54-0.46cos(2πn /N-1)]R N (n)4、Blackman 窗 w(n)=[0.42-0.5 cos(2πn /N-1)+0.08 cos(4πn /N-1)] R N (n)5、Kaiser 窗 w(n)=I 0(β(1-[(2n /(N-1))-1]2)½)/I 0(β)(二)窗函数法设计线性相位FIR 滤波器的步骤1、确定数字滤波器的性能要求。
确定各临界频率{w k }和滤波器单位脉冲响应长度N 。
2、根据性能要求和N 值,合理地选择单位脉冲响应h(n)有奇偶对称性,从而确定理想频率响应h d (e jw )的幅频特性和相位特性。
3、用傅里叶反变换公式求得理想单位脉冲响应h d (n)。
4、选择适当的窗函数W (n ),求得所设计的FIR 滤波器单位脉冲响应。
5、用傅里叶变换求得其频率响应H (e jw ),分析它的幅频特性,若不满足要求,可适当改变窗函数形式或长度N ,重复上述过程,直至得到满意的结果。
三、实验内容和步骤1、分别用矩形窗、Hanning 窗、Hamming 窗、Blackman 窗、Kaiser 窗(β=8.5)设计一个长度N=8的线性相位FIR 滤波器。
数字信号处理窗函数的对比
数字信号处理窗函数的对比目录摘要 (2)第一章窗函数基本概念 (3)第二章三种窗函数简介及对比 (4)2.1三角窗函数 (5)2.2汉宁窗函数 (6)2.3切比雪夫窗 (6)2.4、窗口长度N分别等于90,60,30的程序及结果 (6)2.5不同长度及不同窗函数对比分析 (9)第三章程序实现及比较 (10)3.1设计要求 (10)3.2N=20时三种窗函数程序及运行结果 (10)3.3N=40时三种窗函数程序及运行结果 (13)3.3N=70时三种窗函数程序及运行结果 (16)3.5整体分析 (19)第四章课设心得 (21)参考文献 (21)摘要数字信号处理学科的一项重大进展是关于数字滤波器设计方法的研究。
而FIR数字滤波器可以方便地实现线性相位且其群时延不随频率变化的,因此在数字信号处理中占有非常重要的地位。
在现代电子系统中,FIR数字滤波器以其良好的线性特性被广泛使用。
FIR数字滤波器传统的设计方法有窗函数法、频率抽样法和等波纹逼近法。
用窗函数设计FIR数字滤波器就是用有限长的脉冲相应逼近序列,其基本设计思想为:首先选定一个理想的选频滤波器,然后截取它的脉冲响应得到线性相位。
本文就是以窗函数设计方法为基础的。
窗函数是一种用一定宽度窗函数截取无限长脉冲响应序列获取有限长脉冲响应序列的设计方法。
本文首先介绍了利用窗函数法设计带通滤波器的基本方法;然后对矩形窗,汉宁窗,哈明窗,布莱克曼窗,三角窗和凯塞窗等六种常用的窗函数进行了说明;再后应用MATLAB软件设计加窗的FIR数字滤波器,并结合具体实例进行了说明;最后主要探讨了各窗函数设计法中随着其窗函数长度的不同其幅度特性曲线和相位特性曲线的性能分析以及不同类型窗函数的性能分析。
关键字:数字滤波器;MATLAb;不同长度;窗函数第一章窗函数基本概念在实际进行数字信号处理时,往往需要把信号的观察时间限制在一定的时间间隔内,只需要选择一段时间信号对其进行分析。
窗函数设计原理
利用窗函数法设计FIR 滤波器一.要求用窗函数法设计线性相位FIR 低通滤波器,通带截止频率0.5 ,阻带频率0.9 ,通带允许的最大衰减5dB ,阻带衰减不小于40dB 。
二. 设计原理1.线性相位FIR 数字滤波器对于长度为N 的h(n),频率响应函数为()()1N jwjw nn H e h n e--==∑ ()()()gj w jwH eH eθω=式中,()gH ω称为相位特性;()w θ为相位特性注意,这里()gH ω不用于|()jw H e |,()gH ω为w 的实函数,可能取负值,而|()jwH e| 总是正值。
线性相位FIR 滤波器是指()w θ是w 的线性函数,即()w θτω=- τ为常数 ① 如果 满足下式:()0w θθτω=- 0θ是起始相位 ②严格地说,此时 不具有线性相位特性,但以上两情况都满足群延时是一个常数,即()d d θωτω-=也称这种情况为线性相位。
一般称满足①式是第一类线性相位;满足②式为第二类线性相位。
是第二类线性相位特性常用的情况。
2.窗函数设计原理设数字滤波器的传输函数为()j H e ω,()dh n 是与其对应的单位脉冲响应,()H z为系统函数。
()()1N jwjw nn H eh n e--==∑ ①()()12d jwjw nh n H eed ππωπ-=⎰ ②()()1N nn H z h n z ---=∑ ③一般说来,()d h n 是无限长的,需要求对()j H e ω的一个逼近。
采用窗函数设计法时,可通过对理想滤波器的单位采样响应加窗设计滤波器()()()d H n n h n ω=④其中, ()n ω是一个长度有限的窗,在区间0 ≤ n ≤ N 外值为0 ,且关于中间点对称()()1n N n ωω=--⑤频率响应根据式3-5 ,由卷积定理得出()()()12d j j i H eH ee ωωωωπ=∙ ⑥理想的频率响应被窗函数的离散时间傅立叶变换()i e ωω “平滑”了。
数字信号处理实验用窗函数法设计FIR滤波器
实验四用窗函数法设计FIR数字滤波器%实验四:用窗函数法设计FIR数字滤波器clear allclose allN=input('输入窗函数长度N=?(输入0=退出)'); %注意加分号与不加分号的区别while(N~=0)wc=input('输入希望逼近的理想低通滤波器的截止频率Wc=?'); %注意截止频率pi/4的输入,matlab中已经默认定义了pin=0:(N-1);alpha=(N-1)/2;m=n-alpha+eps;hd=sin(wc*m)./(pi*m); %得到理想低通滤波器(教材P333式7-41)k=input('请选择窗函数类型(1=矩形;2=汉宁;3=海明;4=布莱克曼):');if k==1B=boxcar(N); %产生矩形窗string=['Boxcar, N=',num2str(N)]; %text函数使用字符串string在图中标明所用窗的类型及长度elseif k==2 %注意elseif与else if的区别, 有几个独立的if就要求有几个endB=hamming(N);string=['Hamming, N=',num2str(N)];elseif k==3B=hanning(N);string=['Hanning, N=',num2str(N)];elseB=blackman(N)string=['Blackman, N=',num2str(N)];endh=hd.*(B)'; %得到FIR数字滤波器h(n)=hd(n)w(n), 注意*是矩阵相乘,.*是矩阵的对应元素相乘[H,w]=freqz(h,[1],1024); %求滤波器h(n)的频率响应;对FIR而言, H(z)分子分母多项式的系数向量b=[1], a=h;返回向量H的点数N =1024db=20*log10(abs(H)+eps); %得到幅值pha=angle(H); %得到相位%绘制单位脉冲响应h(n)、幅频衰减特性20lg︱H(ejw)︱)、相频特性和幅频特性︱H(ejw)︱的波形figure; %加figure语句,下一个plot所绘出的图不会把上次的图给取代。
几种典型窗口函数数字信号处理教程
2 sin w
2
矩形窗频谱波形:
根据7.32式:
H (e jw ) 1
2
Hd
(e
j
)WR[e
j (w
)
]d
H (e jw) 1
2
wc wc
WR
[e
j
(
w
)
]d
等于由 wc到wc区间曲线WR[e j(w ) ]下的面积
w变化时,曲线左右移动,面积也发生变化
H (e jw ) 1
2
通过逆变换求得冲激响应
得到FIR滤波器的冲击响应,最直接的方法是 将它截短:
相当于将其与矩形窗函数相乘:
理论分析
时域相乘,频域卷积
H
(e
jw
)
1
2
[Hd
(e
jw ) *WR
(e
jw )]
矩形窗的频谱: WR (e jw )
wR (n)e jnw
n
N 1
2
e jnw
n N 1 2
sin Nw
幅度频谱为:
W
(w)
0.42WR
(w)
0.25[WR (w
2 )
N 1
WR (w
2 )]
N 1
0.04[WR
(w
4 )
N 1
WR
(w
4 )]
N 1
5. 凯塞窗
设计方法小结
➢ (1) 7.2.2节作的分析虽然是针对矩形窗,但 其基本原则和结论对采用其它窗也完全适用。
➢ (2)上述分析涉及的序列是非因果的
hehewejwjwhewewwwe等于由到区间曲线下的面积w变化时曲线左右移动面积也发生变化资料仅供参考jwjwhewe资料仅供参考资料仅供参考723几种常用的窗函数若窗函数记为窗函数的频谱
几种常见窗函数及其MATLAB程序实现
几种常见窗函数及其MATLAB程序实现2013-12-16 13:58 2296人阅读评论(0) 收藏举报分类:Matlab(15)数字信号处理中通常是取其有限的时间片段进行分析,而不是对无限长的信号进行测量和运算。
具体做法是从信号中截取一个时间片段,然后对信号进行傅里叶变换、相关分析等数学处理。
信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的。
在FFT分析中为了减少或消除频谱能量泄漏及栅栏效应,可采用不同的截取函数对信号进行截短,截短函数称为窗函数,简称为窗。
泄漏与窗函数频谱的两侧旁瓣有关,对于窗函数的选用总的原则是,要从保持最大信息和消除旁瓣的综合效果出发来考虑问题,尽可能使窗函数频谱中的主瓣宽度应尽量窄,以获得较陡的过渡带;旁瓣衰减应尽量大,以提高阻带的衰减,但通常都不能同时满足这两个要求。
频谱中的如果两侧瓣的高度趋于零,而使能量相对集中在主瓣,就可以较为接近于真实的频谱。
不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。
信号的加窗处理,重要的问题是在于根据信号的性质和研究目的来选用窗函数。
图1是几种常用的窗函数的时域和频域波形,其中矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低,如果仅要求精确读出主瓣频率,而不考虑幅值精度,则可选用矩形窗,例如测量物体的自振频率等;布莱克曼窗主瓣宽,旁瓣小,频率识别精度最低,但幅值识别精度最高;如果分析窄带信号,且有较强的干扰噪声,则应选用旁瓣幅度小的窗函数,如汉宁窗、三角窗等;对于随时间按指数衰减的函数,可采用指数窗来提高信噪比。
表1 是几种常用的窗函数的比较。
如果被测信号是随机或者未知的,或者是一般使用者对窗函数不大了解,要求也不是特别高时,可以选择汉宁窗,因为它的泄漏、波动都较小,并且选择性也较高。
但在用于校准时选用平顶窗较好,因为它的通带波动非常小,幅度误差也较小。
数字信号处理---窗函数法设计FIR滤波器,窗函数选取原则
)
)]
W Hm ( ) 0.54W R ( ) 0.23[W R (
2 N 1
) W R (
2 N 1
)]
15 Logo
请加入标题 窗函数介绍
汉明窗
16 Logo
请加入标题 窗函数介绍
汉明窗
主瓣宽度 B m 8 / 23 1.092 -41dB
旁瓣峰值衰减
幅频响应窗函数介绍布莱克曼窗04205cos18频率响应窗函数介绍布莱克曼窗19窗函数介绍布莱克曼窗20主瓣宽度旁瓣峰值衰减57db阻带最小衰减74db精确过渡带12231638231502凯塞窗kaiserwindow窗函数介绍21其中22窗函数介绍23旁瓣峰值衰减57db阻带最小衰减80db精确过渡带1023136524各种窗函数性能比较窗类型主瓣宽度精确过旁瓣峰值衰减db阻带最小衰减db矩形窗18n1321三角窗61n252562n314466n4153布莱克曼窗12n11n577410n5780各种窗函数性能比较克曼窗阻带最小衰减较大凯塞窗的阻带最小衰减最大各窗函数的旁瓣峰值衰减规律与此关系相同
精确过渡带 Bt 6.6 / 23 0.9010 阻带最小衰减 53dB
17 Logo
布莱克曼窗
窗函数介绍
布莱克曼窗(Blankman Window) ,又
称二阶升余弦窗。
w Bl ( n ) [0.42 0.5 cos( 2 n N 1 ) 0.08 cos(
j
4 n N 1
各种窗函数性能比较
窗类型
矩形窗 三角窗
主瓣宽度
精确过
渡带 B t
1.8π/N 6.1π/N
旁瓣峰值
衰减/dB
-13 -25
窗函数的C语言实现
窗函数的C语言实现窗函数是一种在信号处理和数字滤波中常用的技术。
它们通常用于信号的预处理,以减少频谱泄漏和振铃等问题。
窗函数的作用是在信号的时域中应用一个权重函数,以限制信号在时间上的窗口范围内。
C语言中,我们可以使用数组来实现窗函数的计算。
以下是一个实现汉宁窗函数的C语言代码示例:```c#include<stdio.h>#include<math.h>void hanning_window(float *window, int size)int i;for(i=0; i<size; i++)window[i] = 0.5 * (1 - cos(2 * PI * i / (size - 1)));}int mainint i;int size = 512;float window[size];hanning_window(window, size);for(i=0; i<size; i++)printf("%f\n", window[i]);}return 0;```在这个示例代码中,我们定义了一个`hanning_window`函数,它接受一个指向浮点数数组的指针和窗口大小作为输入参数。
函数使用`for`循环遍历数组的所有元素,计算窗函数的值,并将结果存储在相应的数组元素中。
具体计算采用了汉宁窗函数的公式:`0.5 * (1 - cos(2 * PI * i / (size - 1)))`,其中`i`表示元素的索引,`size`表示窗口大小。
最后,我们在`main`函数中调用`hanning_window`函数,并打印窗口数组的值。
除了汉宁窗函数,还有其他常用的窗函数,如矩形窗、海明窗、布莱克曼窗等,它们的实现方式大致相似,只需在计算公式中修改对应的系数即可。
此外,还可以通过改变窗口大小、窗口重叠等方式对窗函数的效果进行调整。
窗函数在信号处理和数字滤波中具有广泛的应用,如频谱分析、滤波器设计等。
窗函数的C语言实现
窗函数的C语⾔实现⼀般的讲数字信号处理的书中都会提到窗函数。
⼤多数只会提及其中的⼏种。
这⾥我把这些窗都⽤C语⾔实现了⼀下,都不复杂,但如果要⾃⼰去弄也挺费时间。
所有函数都⽤Matlab验证了。
包括以下窗:1/*窗类型*/2 typedef enum3 {4 Bartlett = 0,5 BartLettHann,6 BlackMan,7 BlackManHarris,8 Bohman,9 Chebyshev,10 FlatTop,11 Gaussian,12 Hamming,13 Hann,14 Kaiser,15 Nuttal,16 Parzen,17 Rectangular,18 Taylor,19 Triangular,20 Tukey21 }winType;别的不多说了,直接上⼲货。
1/*2 *file WindowFunction.h3 *author Vincent Cui4 *e-mail whcui1987@5 *version 0.36 *data 31-Oct-20147 *brief 各种窗函数的C语⾔实现8*/91011 #ifndef _WINDOWFUNCTION_H_12#define _WINDOWFUNCTION_H_1314 #include "GeneralConfig.h"1516#define BESSELI_K_LENGTH 101718#define FLATTOPWIN_A0 0.21557899519#define FLATTOPWIN_A1 0.4166315820#define FLATTOPWIN_A2 0.27726315821#define FLATTOPWIN_A3 0.08357894722#define FLATTOPWIN_A4 0.0069473682324#define NUTTALL_A0 0.363581925#define NUTTALL_A1 0.489177526#define NUTTALL_A2 0.136599527#define NUTTALL_A3 0.01064112829#define BLACKMANHARRIS_A0 0.3587530#define BLACKMANHARRIS_A1 0.4882931#define BLACKMANHARRIS_A2 0.1412832#define BLACKMANHARRIS_A3 0.0116833343536 dspErrorStatus taylorWin(dspUint_16 N, dspUint_16 nbar, dspDouble sll, dspDouble **w);37 dspErrorStatus triangularWin(dspUint_16 N, dspDouble **w);38 dspErrorStatus tukeyWin(dspUint_16 N, dspDouble r, dspDouble **w);39 dspErrorStatus bartlettWin(dspUint_16 N, dspDouble **w);40 dspErrorStatus bartLettHannWin(dspUint_16 N, dspDouble **w);41 dspErrorStatus blackManWin(dspUint_16 N, dspDouble **w);42 dspErrorStatus blackManHarrisWin(dspUint_16 N, dspDouble **w);43 dspErrorStatus bohmanWin(dspUint_16 N, dspDouble **w);44 dspErrorStatus chebyshevWin(dspUint_16 N, dspDouble r, dspDouble **w);45 dspErrorStatus flatTopWin(dspUint_16 N, dspDouble **w);46 dspErrorStatus gaussianWin(dspUint_16 N, dspDouble alpha, dspDouble **w);47 dspErrorStatus hammingWin(dspUint_16 N, dspDouble **w);48 dspErrorStatus hannWin(dspUint_16 N, dspDouble **w);49 dspErrorStatus kaiserWin(dspUint_16 N, dspDouble beta, dspDouble **w);50 dspErrorStatus nuttalWin(dspUint_16 N, dspDouble **w);51 dspErrorStatus parzenWin(dspUint_16 N, dspDouble **w);52 dspErrorStatus rectangularWin(dspUint_16 N, dspDouble **w);53545556#endifWindowFunction.h1/*2 *file WindowFunction.c3 *author Vincent Cui4 *e-mail whcui1987@5 *version 0.36 *data 31-Oct-20147 *brief 各种窗函数的C语⾔实现8*/91011 #include "WindowFunction.h"12 #include "GeneralConfig.h"13 #include "MathReplenish.h"14 #include "math.h"15 #include <stdlib.h>16 #include <stdio.h>17 #include <string.h>1819/*函数名:taylorWin20 *说明:计算泰勒窗。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.矩形窗:程序代码:wp=0.2*pi;wst=0.3*pi;tr_width=wst-wp;N(1)=ceil(1.8*pi/tr_width)+1;w_boxcar=boxcar(N(1))';N(2)=ceil(6.2*pi/tr_width)+1;w_hanning=hanning(N(2))';N(3)=ceil(6.6*pi/tr_width)+1;w_hamming=hamming(N(3))';N(4)=ceil(11*pi/tr_width)+1;w_blackman=blackman(N(4))';N(5)=ceil((50-7.95)/(2.285*tr_width)+1);w_kaiser=kaiser(N(5),0.1102*(50-8.7))';n=0:(N(1)-1);wc=(wp+wst)/2;alpha=(N(1)-1)/2;hd=(wc/pi)*sinc(wc/pi*(n-alpha));h=hd.*w_boxcar;figure(1);subplot(221);stem(n,hd,'filled');axis tight;xlabel('n');ylabel('hd(n)');[Hr,w1]=zerophase(h);subplot(222);plot(w1/pi,Hr);axis tight;xlabel('\omega/\pi');ylabel('H(\omega)'); subplot(223);stem(n,h,'filled');axis tight;xlabel('n');ylabel('h(n)');[H,w]=freqz(h,1);subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); xlabel('\omega/\pi');ylabel('db');grid on程序结果:nh d (n )0.20.40.60.800.51ω/πH (ω)nh (n )0.51-100-50ω/πd b汉宁窗:程序代码:wp=0.2*pi; wst=0.3*pi;tr_width=wst-wp;N(1)=ceil(1.8*pi/tr_width)+1; w_boxcar=boxcar(N(1))';N(2)=ceil(6.2*pi/tr_width)+1; w_hanning=hanning(N(2))'; N(3)=ceil(6.6*pi/tr_width)+1; w_hamming=hamming(N(3))'; N(4)=ceil(11*pi/tr_width)+1; w_blackman=blackman(N(4))';N(5)=ceil((50-7.95)/(2.285*tr_width)+1); w_kaiser=kaiser(N(5),0.1102*(50-8.7))';n=0:(N(2)-1); wc=(wp+wst)/2; alpha=(N(2)-1)/2;hd=(wc/pi)*sinc(wc/pi*(n-alpha));h=hd.*w_hanning; figure(2);subplot(221);stem(n,hd,'filled'); axis tight;xlabel('n');ylabel('hd(n)'); [Hr,w1]=zerophase(h);subplot(222);plot(w1/pi,Hr);axis tight;xlabel('\omega/\pi');ylabel('H(\omega)'); subplot(223);stem(n,h,'filled'); axis tight;xlabel('n');ylabel('h(n)'); [H,w]=freqz(h,1);subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); xlabel('\omega/\pi');ylabel('db');title('hanning'); grid on程序结果:nh d (n )00.20.40.60.80.51ω/πH (ω)nh (n )0.51-200-150-100-500ω/πd bhanning海明窗:程序代码:wp=0.2*pi; wst=0.3*pi;tr_width=wst-wp;N(1)=ceil(1.8*pi/tr_width)+1;w_boxcar=boxcar(N(1))';N(2)=ceil(6.2*pi/tr_width)+1;w_hanning=hanning(N(2))';N(3)=ceil(6.6*pi/tr_width)+1;w_hamming=hamming(N(3))';N(4)=ceil(11*pi/tr_width)+1;w_blackman=blackman(N(4))';N(5)=ceil((50-7.95)/(2.285*tr_width)+1);w_kaiser=kaiser(N(5),0.1102*(50-8.7))';n=0:(N(3)-1);wc=(wp+wst)/2;alpha=(N(3)-1)/2;hd=(wc/pi)*sinc(wc/pi*(n-alpha));h=hd.*w_hamming;figure(3);subplot(221);stem(n,hd,'filled');axis tight;xlabel('n');ylabel('hd(n)');[Hr,w1]=zerophase(h);subplot(222);plot(w1/pi,Hr);axis tight;xlabel('\omega/\pi');ylabel('H(\omega)'); subplot(223);stem(n,h,'filled');axis tight;xlabel('n');ylabel('h(n)');[H,w]=freqz(h,1);subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); xlabel('\omega/\pi');ylabel('db');title('hanmming'); grid on程序结果:n h d (n )00.20.40.60.80.51ω/πH (ω)n h (n )0.51-150-100-500ω/πd bhanmming布莱克曼窗:程序代码:wp=0.2*pi; wst=0.3*pi;tr_width=wst-wp;N(1)=ceil(1.8*pi/tr_width)+1; w_boxcar=boxcar(N(1))';N(2)=ceil(6.2*pi/tr_width)+1; w_hanning=hanning(N(2))'; N(3)=ceil(6.6*pi/tr_width)+1; w_hamming=hamming(N(3))'; N(4)=ceil(11*pi/tr_width)+1; w_blackman=blackman(N(4))';N(5)=ceil((50-7.95)/(2.285*tr_width)+1); w_kaiser=kaiser(N(5),0.1102*(50-8.7))';n=0:(N(4)-1); wc=(wp+wst)/2; alpha=(N(4)-1)/2;hd=(wc/pi)*sinc(wc/pi*(n-alpha));h=hd.*w_blackman; figure(4);subplot(221);stem(n,hd,'filled'); axis tight;xlabel('n');ylabel('hd(n)'); [Hr,w1]=zerophase(h);subplot(222);plot(w1/pi,Hr);axis tight;xlabel('\omega/\pi');ylabel('H(\omega)'); subplot(223);stem(n,h,'filled'); axis tight;xlabel('n');ylabel('h(n)'); [H,w]=freqz(h,1);subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); xlabel('\omega/\pi');ylabel('db');title('blackman'); grid on程序结果:nh d (n )00.20.40.60.80.51ω/πH (ω)nh (n )0.51-200-150-100-500ω/πd bblackman凯瑟窗:程序代码:wp=0.2*pi;wst=0.3*pi;tr_width=wst-wp;N(1)=ceil(1.8*pi/tr_width)+1;w_boxcar=boxcar(N(1))';N(2)=ceil(6.2*pi/tr_width)+1;w_hanning=hanning(N(2))';N(3)=ceil(6.6*pi/tr_width)+1;w_hamming=hamming(N(3))';N(4)=ceil(11*pi/tr_width)+1;w_blackman=blackman(N(4))';N(5)=ceil((50-7.95)/(2.285*tr_width)+1);w_kaiser=kaiser(N(5),0.1102*(50-8.7))';n=0:(N(5)-1);wc=(wp+wst)/2;alpha=(N(5)-1)/2;hd=(wc/pi)*sinc(wc/pi*(n-alpha));h=hd.*w_kaiser;figure(5);subplot(221);stem(n,hd,'filled');axis tight;xlabel('n');ylabel('hd(n)');[Hr,w1]=zerophase(h);subplot(222);plot(w1/pi,Hr);axis tight;xlabel('\omega/\pi');ylabel('H(\omega)'); subplot(223);stem(n,h,'filled');axis tight;xlabel('n');ylabel('h(n)');[H,w]=freqz(h,1);subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); xlabel('\omega/\pi');ylabel('db');title('kaiser');grid on程序结果:nh d (n )00.20.40.60.80.51ω/πH (ω)nh (n )0.51-150-100-500ω/πd bkaiser2.程序代码:wst1=0.2*pi;wp1=0.35*pi; wst2=0.8*pi;wp2=0.65*pi; tr_width=wp1-wst1;N=ceil(11*pi/tr_width)+1;n=0:(N-1);wc1=(wst1+wp1)/2;wc2=(wst2+wp2)/2; alpha=(N-1)/2;hd=(wc2/pi)*sinc(wc2/pi*(n-alpha))-(wc1/pi)*sinc(wc1/pi*(n-alpha));w_blackman=blackman(N)'; h=hd.*w_blackman;subplot(221);stem(n,hd,'filled'); axis tight;xlabel('n');ylabel('hd(n)'); [Hr,w1]=zerophase(h);subplot(222);plot(w1/pi,Hr);axis tight;xlabel('\omega/\pi');ylabel('H(\omega)');subplot(223);stem(n,h,'filled'); axis tight;xlabel('n');ylabel('h(n)'); [H,w]=freqz(h,1);subplot(224);plot(w/pi,20*log10(abs(H)/max(abs(H)))); xlabel('\omega/\pi');ylabel('db'); grid on程序结果:nh d (n )00.20.40.60.80.51ω/πH (ω)nh (n )0.51-150-100-500ω/πd b。