MATLAB处理DSP使用窗函数法设计FIR数字滤波器

3 篇文章 0 订阅

1.实验目的

(1) 熟悉矩形窗、汉宁窗、海明窗等常用窗函数。

(2) 掌握用上述窗函数法设计FIR数字滤波器的原理和方法。

(3) 熟悉线性相位FIR数字滤波器特性。

(4) 了解窗函数类型及窗口长度对滤波器特性的影响。

2.实验原理

        如果所希望的滤波器的理想频率响应函数为, 则其对应的单位冲激响应为

用窗函数w(n)将hd(n)截断, 得到:

h(n)就作为实际设计的FIR数字滤波器的单位冲激响应序列, 其频率响应函数为:

如果要求线性相位特性, 则h(n)还必须满足:

根据上式中的正、负号和长度N取为奇数或偶数又将线性相位FIR滤波器分成四类。 要根据所设计的滤波特性正确选择其中一类。

3.运行结果

图1 N=15时不同FIR滤波器特的性曲线

图2 N=33时不同FIR滤波器特的性曲线

4.结果分析

从实验结果来看,对于低通滤波器来说,过渡带宽大小关系为:海明窗 > 汉宁窗 > 矩形窗;阻带最小衰减绝对值大小关系为:海明窗 > 汉宁窗 > 矩形窗。实验结果符合理论预期。

对比N = 15和 N = 33这两种窗口长度, 我们可以发现N =33时,窗的主瓣宽度减小,过渡带变窄。然而,增大窗口长度对阻带最小衰减的影响不大,且加大阻带衰减会导致过渡带的加宽。故应该根据实际要求,选择合适的窗函数以满足阻带衰减指标,然后选择N满足过渡带宽指标;

窗口长度对过渡带有影响,但减少带内波动以及加大阻带的衰减只能从窗函数的形状上找解决方法,因此合理选择窗函数以及长度N才能设计出理想的FIR滤波器。

附:程序代码

function dspwind(wc,N)

wc=pi/4;

N=33; %可改为15

hd=ideallp(wc,N);

wd_1=rectwin(N);

wd_2=hann(N);

wd_3=hamming(N);

h_1=hd.*wd_1';

[H_1,w_1]=freqz(h_1,1,1000,'whole');

mag_1=abs(H_1);

db_1=20*log10((mag_1+eps)/max(mag_1));

angle_1=unwrap(angle(H_1));

subplot(321);

plot(w_1/pi,db_1);

axis([0,1,-120,1]);

xlabel('\omega/\pi');

ylabel('20log|H(e^j^\omega/|(dB)');

title('矩形窗幅度响应(dB)');

subplot(322);

plot(w_1/pi,angle_1);

axis([0,1,-30,0]);

xlabel('\omega/\pi');

ylabel('\theta/(e^j^\omega/)');

title('矩形窗相位响应');

h_2=hd.*wd_2';

[H_2,w_2]=freqz(h_2,1,1000,'whole');

mag_2=abs(H_2);

db_2=20*log10((mag_2+eps)/max(mag_2));

angle_2=unwrap(angle(H_2));

subplot(323);

plot(w_2/pi,db_2);

axis([0,1,-120,1]);

xlabel('\omega/\pi');

ylabel('20log|H(e^j^\omega/|(dB)');

title('汉宁窗幅度响应(dB)');

subplot(324);

plot(w_2/pi,angle_2);

axis([0,1,-30,0]);

xlabel('\omega/\pi');

ylabel('\theta/(e^j^\omega/)');

title('汉宁窗相位响应');

h_3=hd.*wd_3';

[H_3,w_3]=freqz(h_3,1,1000,'whole');

mag_3=abs(H_3);

db_3=20*log10((mag_3+eps)/max(mag_3));

angle_3=unwrap(angle(H_3));

subplot(325);

plot(w_3/pi,db_3);

axis([0,1,-120,1]);

xlabel('\omega/\pi');

ylabel('20log|H(e^j^\omega/|(dB)');

title('海明窗幅度响应(dB)');

subplot(326);

plot(w_3/pi,angle_3);

axis([0,1,-30,0]);

xlabel('\omega/\pi');

ylabel('\theta/(e^j^\omega/)');

title('海明窗相位响应');

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值