当前位置:首页 > 熟悉MATLAB环境,快速傅里叶变换(FFT)及其应用,IIR数字滤波器的设计,FIR数字滤波器的设计实验报告
悉用双线性变换法及脉冲响应不变法设计低通、高通和带通IIR数字滤波器的计算机编程。 (2) 观察双线性变换及脉冲响应不变法设计的滤波器的频域特性,了解双线性变换法及脉冲响应不变法的特点。
(3) 熟悉巴特沃思滤波器、切比雪夫滤波器和椭圆滤波器的频率特性。 二、实验内容 (1)P162 例4.4
设采用周期T=250?s(采样频率fs=4kHz),用脉冲响应不变法及双线性变换法设计一个三阶巴特沃思低通滤波器,其3dB边界频率为fc=1kHz。 输入代码如下: clc;
clear all;
[B,A]=butter(3,2*pi*1000,'s'); [num1,den1]=impinvar(B,A,4000); [h1,w]=freqz(num1,den1);
[B,A]=butter(3,2/0.00025,'s'); [num2,den2]=bilinear(B,A,4000); [h2,w]=freqz(num2,den2); f=w/pi*2000;
plot(f,abs(h1),'-.',f,abs(h2),'-'); 运行图片:
(3) P164 例4.6
设计一巴特沃斯带通滤波器,其3dB边界频率分别为f2=110kHz和f1=90kHz,在阻带
f3=120kHz处的最小衰减大于10dB,采样频率fs=400kHz。
输入代码如下: clc;
clear all;
w1=2*400000*tan(2*pi*90/(2*400)); w2=2*400000*tan(2*pi*110/(2*400)); wr=2*400000*tan(2*pi*120/(2*400));
[N,wn]=buttord([w1,w2],[1,wr],3,10,'s'); [B,A]=butter(N,wn,'s');
[num,den]=bilinear(B,A,400000); [h,w]=freqz(num,den); f=w/pi*200;
plot(f,20*log10(abs(h))); axis([40,160,-30,10])
运行图片:
(4)P165 例4.7 设计数字带阻通滤波器 输入代码如下: clc; clear all;
w1=2*1000*tan(2*pi*95/(2*1000)); w2=2*1000*tan(2*pi*105/(2*1000)); [B,A]=butter(1,[w1,w2],'stop','s'); [num,den]=bilinear(B,A,1000);
[h,w]=freqz(num,den); f=w/pi*500;
plot(f,20*log10(abs(h))); axis([50,150,-30,10]); 运行图片:
实验四FIR数字滤波器的设计
一、实验目的
(1) 掌握用窗函数法,频率采样法及优化设计法设计FIR滤波器的原理及方法,熟悉相应的计算机编程;
(2) 熟悉线性相位FIR滤波器的幅频特性和相频特性; (3) 了解各种不同窗函数对滤波器性能的影响。 二、实验内容
(1) 生成一个长度为20的矩形窗,画出其时域和幅频特性曲线。 输入代码如下: n=0:1:19; N=20;
win(1:20)=1;
[H,w]=freqz(win,1);
N?1N?1?i%H(z)??h(i)zi?0??zi?0?i
subplot(2,1,1); stem(n,win) subplot(2,1,2); plot(w,abs(H)); 运行图片:
(2) 用窗口法设计一个11阶的线性相位低通FIR数字滤波器,截止频率Wc=0.25π,求
出滤波器系数,并绘出滤波器的幅频和相频特性。分别用矩形窗和汉明窗实现。修改程序,分别得到阶次为N=61,41的滤波器,并显示其各自的幅频曲线。 输入代码如下: Wc=0.25*pi; N=11;
M=(N-1)/2; %位移量 for n=0:(N-1)
if (n== fix(M)) %中间的点单独算 hd(n+1)=Wc/pi; else
hd(n+1)=sin(Wc*(n-M)) /(pi*(n-M)); end; end;
win=boxcar(N); %%%不同窗函数 h=hd.*win';
[H,w]=freqz(h,1);
N?1%H(z)??h(i)zi?0?i
n=0:1:N-1;
subplot(3,1,1); stem(n,h)
subplot(3,1,2); plot(w,abs(H)); subplot(3,1,3); plot(w,angle(H)); 运行图片:
数字信号处理实验小结:
数字信号处理是一门介于专业基础和专业之间的课程,所以我们在强调其基础理论知识的同时又要强调其应用背景,所以我们要通过做实验来掌握和提高我们的知识。通过这几次试验,我熟悉并掌握了如何使用MATLAB语言来进行数字信号的处理和分析,MATLAB仿真可以准确的计算出系数量化对频率响应的影响,在编写程序时我们需要注意:“%”后的内容是程序的注解,提高了程序的可读性;养成主程序开头用clear指令清除变量的习惯;应当充分利用MATLAB的矩阵运算功能,尽量避免使用“for”等循环控制语句。程序通过运行,我们可以了解一个函数或序列的幅频响应和相频响应。由此可以更深入的了解它的特性。
共分享92篇相关文档