2.1.2自编matlab程序:
clear;clc;%清除数据区,指令区
nf1=1:
10;
lf1=length(nf1);%f1序列长度
f1=ones(1,lf1);%f1序列
nf2=1:
15;
lf2=length(nf2);%f2长度
f2=exp(-0.1.*nf2);%f2序列
f3=fliplr(f2);%f2翻转
h=[zeros(1,lf2+1),f2,zeros(1,lf1-1)];%f2补零
u=[zeros(1,lf2+1),f1,zeros(1,lf2-1)];%f1补零
nf3=-lf2:
lf1+lf2-1;
%求卷积
fork=0:
lf1+lf2%卷积的动态显示过程
p=[zeros(1,k),f3,zeros(1,lf1+lf2-k)];%序列补零并且进行循环移位
y1=p.*u;%求乘积
yk=sum(y1);%各点之和,即一个点卷积结果
y(k+1)=yk;%将卷积结果存入y序列
z=[zeros(1,lf2-1),y,zeros(1,lf2+lf1-k)];%y序列进行补零后的卷积序列
%绘图
subplot(5,1,1);stem(nf3,u,'filled');title('u(n)');ylabel('u(n)');
subplot(5,1,2);stem(nf3,h,'filled');title('h(n)');ylabel('h(n)');
subplot(5,1,3);stem(nf3,p,'filled');title('翻转移位');ylabel('h(n-k)');
subplot(5,1,4);stem(nf3,y1,'filled');title('乘积');ylabel('u(n)*h(n)');
subplot(5,1,5);stem(nf3,z,'filled');title('卷积结果');ylabel('y(n)');
ifk==0disp('开始卷积'),pause;
End
Ifk==1f1+1disp/(‘暂停’),pause;
Elsepause(0.5)
End
end
2.1.3仿真图形
图2-2卷积动态
2.1.4仿真结果分析:
1、卷积后的结果000.904841.72362.46443.13473.74124.294.78665.2365.64256.01045.43844.92093.64553.09672.60012.15081.74421.37631.04350/742260.469730.22313
2、u(n)的长度为10,h(n)的长度为15,卷积后的长度Ny=Nu+Nh-1=24.有图分析知,y(n)的长度为24点,满足卷积定理。
2.2用双线性变换法设计IIR数字滤波器
2.2.1双线性变换法的基本知识
1)双线性变换法是将整个s平面映射到整个z平面,其映射关系为
双线性变换法克服了脉冲响应不变法从s平面到z平面的多值映射的缺点,消除了频谱混叠现象。
但其在变换过程中产生了非线性的畸变,在设计IIR数字滤波器的过程中需要进行一定的预修正。
2)设计中有关双线性变换法的子函数。
Bilinear
功能:
双线性变换——将s域(模拟域)映射到z域(数字域)的标准方法,将模拟滤波器变换成离散等效滤波器。
调用格式:
[numd,dend]=bilinear(num,den,Fs);将模拟域传递函数变换为数字域传递函数,Fs为取样频率。
[numd,dend]=bilinear(num,den,Fs,Fp);将模拟域传递函数变换为数字域传递函数,Fs为取样频率,Fp为通带截止频率。
[zd,pd,kd]=bilinear(z,p,k,Fs);将模拟域零极点增益系数变换到数字域,Fs为取样频率。
[zd,pd,kd]=bilinear(z,p,k,Fs,Fp);将模拟域零极点增益系数变换到数字域,Fs为取样频率,Fp为通带截止频率。
[Ad,Bd,Cd,Dd]=bilinear(A,B,C,D,Fs);将模拟域状态变量系数变换到数字域,Fs为取样频率。
3)用MATLAB双线性变换法进行IIR数字滤波器设计的步骤:
(1)输入给定的数字滤波器设计指标;
(2)根据公式
进行预修正,将数字滤波器指标转换成模拟滤波器设计指标;
(3)确定模拟滤波器的最小阶数和截止频率;
(4)计算模拟低通原型滤波器的系统传递函数;
(5)利用模拟域频率变换法,求解实际模拟滤波器的系统传递函数;
(6)用双线性变换法将模拟滤波器转换为数字滤波器。
2.2.2采用双线性变换法设计一个巴特沃斯数字低通滤波器,
要求:
wp=0.2
,Rp=1dB;ws=0.3
,As=15dB,滤波器采样频率Fs=100Hz。
2.2.3自编matlab程序
wp=0.2*pi;%滤波器的通带截止频率
ws=0.3*pi;%滤波器的阻带截止频率
Rp=1;As=15;%输入滤波器的通阻带衰减指标
ripple=10^(-Rp/20);Attn=10^(-As/20);
Fs=100;T=1/Fs;
Omgp=(2/T)*tan(wp/2);%原型通带频率预修正
Omgs=(2/T)*tan(ws/2);%原型阻带频率预修正
[n,Omgc]=buttord(Omgp,Omgs,Rp,As,'s');%计算阶数n和3dB截止频率
[z0,p0,k0]=buttap(n);%归一化原型设计
ba=k0*real(poly(z0));%求原型滤波器系数b
aa=real(poly(p0));%求原型滤波器系数a
[ba1,aa1]=lp2lp(ba,aa,Omgc);%变换为模拟低通滤波器系数b,a
[bd,ad]=bilinear(ba1,aa1,Fs)%用双线性变换法求数字滤波器系数b,a
[sos,g]=tf2sos(bd,ad);%由直接型变换为级联型
[H,w]=freqz(bd,ad);
dbH=20*log10((abs(H)+eps)/max(abs(H)));%化为分贝值
subplot(2,2,1),plot(w/pi,abs(H));
ylabel('|H|');title('幅度响应');axis([0,1,0,1.1]);
set(gca,'XTickMode','manual','XTick',[0,0.25,0.4,1]);
set(gca,'YTickMode','manual','YTick',[0,Attn,ripple,1]);grid
subplot(2,2,2),plot(w/pi,angle(H)/pi);
ylabel('\phi');title('相位响应');axis([0,1,-1,1]);
set(gca,'XTickMode','manual','XTick',[0,0.25,0.4,1]);
set(gca,'YTickMode','manual','YTick',[-1,0,1]);grid
subplot(2,2,3),plot(w/pi,dbH);title('幅度响应(dB)');
ylabel('dB');xlabel('频率(\pi)');axis([0,1,-40,5]);
set(gca,'XTickMode','manual','XTick',[0,0.25,0.4,1]);
set(gca,'YTickMode','manual','YTick',[-50,-15,-1,0]);grid
subplot(2,2,4),zplane(bd,ad);
2.2.4仿真波形
2.2.5仿真结果分析
1、滤波器阶数n=6,3dB截止频率Omgc=76.623.
分子系数bd=0.00070.00440.01110.01480.01110.00440.0007
分母系数ad1.0000-3.18364.6222-3.77951.8136-0.48000.0544
二阶环节级联结构的分子分母系数矩阵sos
Sos=12.000411-0.904370.21552
12.0181.01841-1.01060.35827
11.98160.981941-1.26860.70513
增益g=0.00073782
2、由频率特性曲线可知,设计结果在通带截止频率处满足Rp≦1dB,As≧15dB的设计指标要求,系统的极点全部在单位圆内,是一个稳定的系统,由N=6可知,设计的巴特沃斯数字低通滤波器是一个6阶的系统,原型H(s)在s=-∞处有六个零点,映射到z=-1处。
3、由幅度相应图可看出,通带有富余量,这是由于用最小阻带频率指标计算的结果。
4、计算过程:
Wp=0.2πRp=1dBWs=0.3πAs=15dB
Omgp=(2/T)*tan(wp/2)=200tan0.1π=64.9839
Omgs=(2/T)*tan(ws/2)=200tan0.15π=101.9051
λsp=Omgs/Omgp=1.568
Ksp=
=10.875
N=lgksp/lgλsp=5.3056
N取6
Omgc=Omgs(100.1as-1)-1/2N=76.6229
Gp=1/(p2+0.5176p+1)(p2+1.4142p+1)(p2+1.9319p+1)
P=S/Omgcs=2/T(1-Z-1)(1+Z1)
H(z)=(0.0007+0.0044z-1+0.0111z-2+0.0148z-3+0.0111z-4+0.0044z-5+0.0007z-6)/
(1.0000-3.1836z-1+4.6222z-2-3.7795z-3+1.8136z-4-0.4800z-5+0.0544z-6)
本题所设计的滤波器是一个六阶滤波器,由于MATLAB精度有限,表现的sos有误差,把它们调整到精确值后,滤波器的级连型系统函数应该为
H(z)=0.00073782(1+z-1)-6/[(1-0.90437z-10.21552z-2)(1-1.0106z-1+0.35827z-2)(1-1.2686z-1+0.70513z-2)]
四、总结
通过本次课程设计,我学会了用Simulink建模的方法和调试过程,验证了低通抽样定理,实现PCM编码及13折线量化,通过MATLAB实现卷积过程的动态,实现用双线性变换法设计IIR数字滤波器。
学会了用simulink建立模型来完成仿真过程,全新的接触了另外一种结合书本学习的方法,通过建立模型后对其参数进行设置,得到我们所需的结果,在接受MATLAB后,另外一种编程完成仿真过程,通过对程序的不断调试和更改,最后完成了本次课设的任务。
了解了仿真技术及通信仿仿真的基本概念,知道了仿真的基本步骤和应该注意的问题,对simulink中的模块的基本了解及其作用,然后对MATLAB工作环境的认知,本次课程设计需要掌握通信原理和数字信号处理的理论知识,通过老师的讲解及到图书馆查阅各种有关的资料,掌握了利用simulink来建模实现抽样定理及13折线编码,建模锻炼了我的动手和独立思考的能力。
学会了利用MATLAB进行双线性变换法设计FIR数字低通滤波器,在进行编程和调试的过程会遇到各种各样的问题,通过自己的思考,向同学老师请教逐次解决。
通过本次课程设计,加深理解和巩固通信原理、数字信号处理课上所学的有关基本概念、基本理论和基本方法,锻炼了我的分析问题和解决问题的能力,同时培养良好的独立工作习惯和科学素质,初步掌握了MATALB的使用为今后的学习打下良好的基础。
五、参考文献
[1]李贺冰等.Simulink通信仿真教程.北京:
国防工业出版社,2006.
[2]刘舒帆等.数字信号处理实验(MATLAB版).西安:
西安电子科技大学出版社,2008.
[3]党宏