数字信号课程实验——FIR数字滤波器的设计

FIR数字滤波器的设计

一、实验目的 

(1) 掌握用窗函数法、频率采样法及优化设计法设计FIR滤波器的原理及方法,熟悉相应的MATLAB编程。

(2) 熟悉线性相位FIR滤波器的幅频特性和相频特性。

(3) 了解各种不同窗函数对滤波器性能的影响。

二、主要仪器设备 

硬件:微型计算机

软件:Matlab 

三、实验内容

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

程序代码:

N=45;

w1=boxcar(N);w2=hamming(N);w3=blackman(N);

[h,w]=freqz(w1,N); figure(1);

plot(w/pi,20*log10(abs(h)));

axis([0,1,-80,10]);

grid on; 

xlabel('归一化频率/π');ylabel('幅度/dB');

title('20610815李卫    矩形窗');

figure(2);

[h,w]=freqz(w2,N);

plot(w/pi,20*log10(abs(h))); 

axis([0,1,-80,10]);

grid on;

xlabel('归一化频率/π');ylabel('幅度/dB');

title('汉明窗');

figure(3);

[h,w]=freqz(w3,N); 

plot(w/pi,20*log10(abs(h)));

axis([0,1,-150,10]);

grid on;

xlabel('归一化频率/π');

ylabel('幅度/dB');

title('布莱克曼窗'); 

结果显示:

实验分析:

矩形窗函数具有最窄的主瓣宽度,但有最大的旁瓣峰值;汉明窗函数的主瓣稍宽,而旁瓣较小;布莱克曼窗函数则更甚之。 矩形窗设计的滤波器过渡带最窄,但是阻带最小衰减也最差; 布莱克曼窗设计的滤波器阻带衰减最好,过渡带最宽,约为矩形窗设计的的三倍。 汉明窗设计的滤波器处于矩形窗和布莱克曼窗之间。

2、N=15,带通滤波器的两个通带边界分别为\omega _{1}=0.3 \pi ,\omega _{2}=0.5 \pi。用汉宁窗设计此线性相位带通滤波器,观察它的实际3dB和20dB带宽。N=45,重复这一设计,观察幅频和相频特性的变化,注意长度N变换的影响。

程序代码:

N=15;w1=0.3;w2=0.5; 

w=hanning(N);

n=0:N-1;alfa=(N-1)/2;

h=fir1(N-1,[w1 w2],w);

[h1,w3]=freqz(h,1);

figure(1);

subplot(2,1,1);

plot(w3/pi,20*log10(abs(h1)));grid on;

axis([0,1,-80,10]);

xlabel('归一化频率/π');

ylabel('幅度/dB');

subplot(2,1,2);

plot(w3/pi,angle(h1));grid on;axis([0,1,-4,4]);

xlabel('归一化频率/π');

ylabel('角度/rad'); 

N=45;w=hanning(N);

n=0:N-1;alfa=(N-1)/2;

h=fir1(N-1,[w1 w2],w);

[h1,w3]=freqz(h,1);

figure(2);

subplot(2,1,1);

plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]);

xlabel('归一化频率/π');

ylabel('幅度/dB');

subplot(2,1,2);plot(w3/pi,angle(h1));grid on;

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

xlabel('归一化频率/π');

ylabel('角度/rad');

结果显示:

实验分析:

观察图像,当N增大,3db带宽和20db带宽减小,滤波器特性变好,过渡带变陡,幅频曲线显示其通带较平缓,波动小,阻带衰减大。相频特性曲线显示其相位随频率变化也变大。

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

程序代码:

N=15;

w1=0.3;

w2=0.5;

wn1=boxcar(N);

wn2=blackman(N); 

hn1=fir1(N-1,[w1 w2],wn1);

hn2=fir1(N-1,[w1 w2],wn2);

[h1,w3]=freqz(hn1,1);

figure(1);

plot(w3/pi,20*log10(abs(h1)));

grid on;

axis([0,1,-80,10]);

xlabel('归一化频率/π');

ylabel('幅度/dB');

title('矩形窗,N=15');

[h1,w3]=freqz(hn2,1);

figure(2);

plot(w3/pi,20*log10(abs(h1)));

grid on; 

axis([0,1,-80,10]);

xlabel('归一化频率/π');

ylabel('幅度/dB'); 

title('布莱克曼窗,N=15');

N=45; 

wn1=boxcar(N);

wn2=blackman(N);

hn1=fir1(N-1,[w1 w2],wn1);

hn2=fir1(N-1,[w1 w2],wn2);

[h1,w3]=freqz(hn1,1);

figure(3);

plot(w3/pi,20*log10(abs(h1)));

grid on;

axis([0,1,-80,10]);

xlabel('归一化频率/π');

ylabel('幅度/dB');

title('矩形窗,N=45');

[h1,w3]=freqz(hn2,1);

figure(4);

plot(w3/pi,20*log10(abs(h1)));

grid on;

axis([0,1,-110,10]);

xlabel('归一化频率/π');

ylabel('幅度/dB');

title('布莱克曼窗,N=45');

结果显示:

  

实验分析:

观察图像发现,同一N值,分别用矩形窗,汉宁窗,汉明窗,布莱克曼窗设计滤波器时,主瓣宽度逐渐增大,过渡带变宽,但阻带衰减性能变好;N增加,主瓣变窄,旁瓣的分量增加,过渡带变陡,起伏震荡变密。

四、实验小结

通过实验,深入了解了窗函数法、频率采样法及优化设计法设计FIR滤波器的原理及方法,更可以使用MATLAB软件进行相应的编程,同时也了解到线性相位FIR滤波器的幅频特性和相频特性、及各种不同窗函数对滤波器性能的影响。

### FIR数字滤波器设计实验方法与步骤 #### 设计目标 掌握用窗函数法和等波纹最佳逼近法设计FIR数字滤波器的原理和方法,熟悉MATLAB环境下FIR滤波器的设计流程。 #### 实验准备 确保安装并配置好MATLAB环境。准备好所需的工具箱,特别是Signal Processing Toolbox,以便能够调用必要的函数来完成设计过程[^2]。 #### 方法概述 FIR滤波器可以通过多种方式设计,其中最常见的是窗函数法和等波纹最佳逼近法。这两种方法各有特点,在性能上也有所差异: - **窗函数法**:通过加权窗口截断理想的脉冲响应序列来获得有限长度的实际脉冲响应; - **等波纹最佳逼近法**:追求在整个通带内误差最小化,使得最大偏差尽可能均匀分布; #### 具体实施步骤 ##### 步骤一:定义滤波器规格 根据具体应用场景设定滤波器的技术指标,比如截止频率、阻带衰减度以及过渡带宽等参数。这些参数决定了最终滤波效果的好坏及其适用范围[^3]。 ##### 步骤二:选择合适的设计算法 针对上述给定条件选取适当的设计策略——即决定采用窗函数还是等波纹最优拟合来进行下一步计算。这里将以窗函数为例说明基本操作流程[^1]。 ##### 步骤三:确定窗型及阶数N 依据经验法则或理论推导选定合适的窗类型(如汉宁窗、海明窗等),并通过试错调整直至满足预期性能需求为止。同时需注意控制滤波器阶数N以平衡复杂性和效率之间的关系[^4]。 ##### 步骤四:生成理想单位样本响应h(n) 按照指定频响特性构建无限长的理想冲击响应向量`hd=[...]`; ```matlab % 定义低通滤波器理想幅度响应 fs = 8000; % 采样率 fc = 1000; % 截止频率 n = [-M:M]; % 对称区间索引数组 wc = fc/(fs/2); % 归一化角频率 hd = sinc(wc*n); ``` ##### 步骤五:应用选好的窗户w(n),得到实际使用的h'(n)=h(n)*w(n) 将之前创建的理想冲击响应乘以所选窗函数形成新的修正版脉冲响应数据集作为后续处理的基础输入源[^5]。 ```matlab windowType = 'hamming'; % 或者其他类型的窗形 winFunc = window(@eval(windowType), length(hd)); hn = hd .* winFunc'; ``` ##### 步骤六:验证结果并与标准对比分析 绘制幅频特性的图形表示形式直观展示所得成果,并参照既定的标准评判是否达到了预设的质量水平。如果有必要的话还可以进一步优化某些环节直到满意为止。 ```matlab fvtool(hn, 1,'Fs', fs); title('Lowpass Filter Frequency Response'); xlabel('Frequency (Hz)'); ylabel('|H(f)|'); grid on; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值