FIR数字滤波器的设计[Matlab][带源码]

本次为实验项目,在学习数字信号处理课程需要利用matlab来巩固所学知识

参考博主为整个项目实验,本次我们所需只需前三问即可。

FIR数字滤波器的设计_A Master的博客-CSDN博客_fir数字滤波器的设计

 一、实验内容

(1)N=45,计算并画出矩形窗、汉明窗、布莱克曼窗归一化的幅度谱,并比较各自的主要特点。

(2) N=15,带通滤波器的两个通带边界分别是w1 =0.3π,w2=0.5π。用汉宁窗设计此线性相位带通滤波器,观察它的实际3dB和20dB带宽。N=45,重复这一设计,观察幅频和相位特性的变化 ,注意长度N变化的影响。

(3)分别改用矩形窗和布莱克曼窗,设计(2)中的带通滤波器,观察并记录窗函数对滤波器幅频特性的影响,比较三种窗的特点。

二、实验流程

2.1  N=45,画出矩形窗、汉明窗、布莱克曼窗归一化的幅度谱。

可以看到图1为三种窗函数的汇总,图2为三种窗口函数的时域波形和分开展示的幅度谱。

7038aadba9154a8c9a7c3c83d3c959a9.png46642731143143808d8be3860e9a628b.png 

具体代码见下:将汇总拆开只需要subplot函数来规划区域即可。

clear all;
N=45;
%矩形窗
wn1=boxcar(N);
%汉明窗
wn2=hanning(N);
%布莱克曼窗
wn3=blackman(N);
[h1,w1]=freqz(wn1,1);% 调用freqz函数求数字滤波器的频率响应[h2,w2]=freqz(wn2,1);
[h3,w3]=freqz(wn3,1);
%其分贝转化=20log10(h)
plot(w1/pi,20*log10(abs(h1)),'r-',w2/pi,20*log10(abs(h2)),'m--',w3/pi,20*log10(abs(h3)),'b-.');
xlable('归一化频率/\pi'); ylable('幅度/db');
title('矩形窗red','汉明窗purple','布莱克曼窗blue');

2.2 采样N=15和N=45汉宁窗设计带通滤波器,通带边界为0.3pi和0.5pi。

cd545295aea24faa8138340f360b9127.png

 具体代码见下:第三问只需要将窗口函数hanning分别改为boxcar和blackman即可

clear all;
N1=15;
wn=[0.3,0.5];
window=hanning(N1+1);
b1=fir1(N1,wn,window);
[h1,w]=freqz(b1);
subplot(2,2,1);
plot(w/pi,20*log10(abs(h1)),'r');
xlabel('归一化频率/\pi');ylabel('幅度/dB');
title('N=15,幅度特性');
subplot(2,2,3);
plot(w/pi,angle(h1),'r');
title('N=15,相位特性');
 
N2=45;
wn2=[0.3,0.5];
window2=hanning(N2+1);
b2=fir1(N2,wn2,window2);
[h2,w1]=freqz(b2);
subplot(2,2,2);
plot(w1/pi,20*log10(abs(h2)),'m');
title('N=45,幅度特性');
xlabel('归一化频率/\pi');ylabel('幅度/dB');
subplot(2,2,4);
plot(w/pi,angle(h2),'r');
title('N=45,相位特性');

上述代码主要使用了fir1函数来设计其滤波器,其函数中各个参数使用:

 b:返回fir滤波器的单位脉冲相应,偶对称,长度为n+1;
n:滤波器的阶数,设计出的滤波器长度为n+1;
wn:滤波器的截止频率,取值范围0<wn<1,1对应采样频率的1/2。当需要设计低通/高通滤波器,wn是单个值的,即截至频率,ftype参数是low/high;;当设计带通/带阻滤波器时,wn由两个数组成的向量[wn1 wn2],ftype参数是bandpass/stop;
window:指定使用的窗函数,默认是汉明窗(Hamming),最常用的还有汉宁(Hanning)、布莱克曼窗(Blackman)、凯赛窗(Kaiser);

    b=fir1(n,wn);
    b=fir1(n,wn,'ftype');
    b=fir1(n,wn,'ftype',window)

为了显示的更加美观和简便可以使用GUI交互界面来达到更好的展示效果:图片展示如下,可以看到其实验所需的图形在一个界面便可以展示,当我们想要使用时,点击相关控制按键即可。

 9bb24c2c5cbb4a31820bfd7d4779111c.pngfb9aff946e92479faf763b8e31a7f927.png

aa97d5088bed49689479dc97b9ada9f7.png da3e6ea3d53c4b8aa7e8d8e0ed62e7bc.png

  本次实验相对来说代码量较少,主要为分析其设计的流程和效果分析,对于课程知识的巩固很有帮助,对于滤波器的设计是个较为复杂的过程,相关知识大家可以自行寻找资源查看。

 

 

  • 16
    点赞
  • 109
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Esaki diode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值