资源描述:
《数字信号处理实验报告(二)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数字信号处理第二次实验报告学院:信息工程学院班级:2012级电子信息工程*班姓名:学号:20125507**指导老师:实验四:IIR数字滤波器设计及软件实现一、实验目的1、熟悉双线性变换设计HR滤波器的原理与方法2、掌握IIR滤波器的MATLAB实现方法二、实验原理简述IIR数字滤波器间接法基本设计过程:1、将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;2、设计过渡模拟滤波器;3、将过渡模拟滤波器系统函数转换成数字滤波器的系统函数三、程序与图形1、%信号产生函数mstgfunctionst二
2、mstg%功能函数的写法%产生信号序列向量st,并显示st的吋域波形和频谱%st=mstg返回三路调幅信号相加形成的混合信号,长度21600N=16009績为信号st的长度。Fs=10000;T=l/Fs;Tp=N*T;%釆样频率Fs=10kHz,Tp为釆样时间t二0:T:(N-1)*T;k二0:N-1;f=k/Tp;fcl二Fs/10;fml=fcl/10;fc2=Fs/20;fm2=fc2/10;fc3二Fs/40;fm3=fc3/10;%第1路调幅信号的载波频率fcl=1000Hz,%第1路
3、调幅信号的调制信号频率fml=100Ilz%第2路调幅信号的载波频率fc2二500Hz%第2路调幅信号的调制信号频率fn)2二50Hz%第3路调幅信号的载波频率fc3二250Hz,%第3路调幅信号的调制信号频率fm3=25Hzxtl二cos(2*pi*fml*t).*cos(2*pi*fcl*t);%产生第1路调幅信号xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);%产生第2路调幅信号xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);%产生第3路调
4、幅信号st二xtl+xt2+xt3;%三路调幅信号相加fxt二fft(st,N);%计算信号st的频谱%绘制st的时域波形和幅频特性曲线——subplot(2,1,1)plot(t,st);grid;xlabel('t/s,);ylabel('s(t)');axis([0,Tp/8,min(st),max(st)]);title(,(a)s(t)的波形')subplot(2,1,2)stcm(f,abs(fxt)/max(abs(fxt)),'・');grid;title('(b)s(t)的频谱'
5、)axis([0,Fs/5,0,1.2]);xlabel('f/Hz,);ylabel('幅度')(b)s(t)的频谱0.50O20040060080010OO12001400160018002000f/Hz2、%实验4-2clearall;closeallFs=10000;T=l/Fs;%采样频率%调用信号产牛函数mstg产牛由三路抑制载波调幅信号相加构成的复合信号stst=mstg;fp=280;fs=450;%下面wp,ws,为fp,fs的归一化值范围为0-1wp二2*fp/Fs;ws二2*
6、fs/Fs;rp二0.1;rs二60;%DF指标(低通滤波器的通、阻带边界频)[N,wp]=ellipord(wp,ws,rp,rs);%调用ellipord计算椭圆DF阶数N和通带截止频率wp[B,A]=ellip(N,rp,rs,wp);%调用cllip计算椭圆带通DF系统函数系数向量B和A[h,w]=freqz(B,A);ylt=filter(B,A,st);%滤波器软件实现figure(2);subplot(2,1,1);plot(w,20*logl0(abs(h)));axis([0,1
7、,-80,0])subplot(2,1,2);t=0:T:(length(ylt)-l)*T;plot(t,ylt);%axis([O,1,-80,0])(a)s(t)的波形(b)s(t)的频谱0200400600800100012001400160018002000f/Hz1.500.020.040.060.080.10.120.140.163、%实验4-3fpl=440;fpu=560;fsl=275;fsu=900;wp二[2*fpl/Fs,2*fpu/Fs];ws二[2*fsl/Fs,2*
8、fsu/Fs];rp=0.1;rs=60;[N,wp]=ellipord(wp,ws,rp,rs);%调用ellipord计算椭圆DF阶数N和通带截止频率wp[B,A]=el1ip(N,rp,rs,wp):%调用cllip计算椭圆带通DF系统函数系数向量B和A[h,w]=freqz(B,A);y2t=filter(B,A,st);figure(3);subplot(2,1,1);plot(w,20*logl0(abs(h)));axis([0,1,-80,0])subplot(2,