1、江苏大学计算机14信号仿真实验 课程: 信号与线性系统 姓名: 学院: 计算机科学与通信工程学院 学号: 专业班级: 指导老师: 作业一1.问题分析:使用MATLAB,产生并绘出以下信号(1)正弦波(2)周期三角波(3)矩形脉冲函数(4)单位冲击函数(5)单位阶跃函数(6)抽样函数2.设计:(1) 正弦波正弦信号A*cos(W0*t+phi)和A*sin(W0*t+phi)分别用MATLAB的内部函数cos和sin表示,其调用形式为:A*cos(W0*t+phi)A*sin(W0*t+phi)(2)周期三角波周期性三角波信号在MATLAB中用sawtooth函数来表示,其调用形式为:y = s
2、awtooth(t,WIDTH)用以产生一个周期为2,最大幅度为1,最小幅度为-1的周期性三角波信号,其中的WIDTH参数表示最大幅度出现的位置,在一个周期内,信号从t=0到WIDTHx2时函数是从-1到1线性增加的,从而WIDTHx2到2时函数又是从1到-1线性递减的,在其他周期内依此类推。(3)矩形脉冲函数矩形脉冲信号在MATLAB中用rectpuls函数来表示,其调用形式为:y=rectpuls(t,width)用以产生一个幅值为1,宽度为width,相对于t=0点左右对称的矩形波信号。该函数的横坐标范围由向量t决定,是以t=0为中心向左右各展开width/2的范围。width的默认值为
3、1。(4)单位冲激函数冲击函数为f (t) = (t),图像特点为在0点值为1的冲激,大于0和小于0的值皆为0。即将单位冲激函数写成MATLAB函数的形式,利用关系运算符“=”来实现。(5)单位阶跃函数阶跃函数为f (t) = (t),阶跃函数信号在MATLAB中用stepfun函数来表示,其调用形式为:y = stepfun(t,t0)用以产生一个幅值为1,宽度为width,相对于t0点左右对称的单位阶跃函数信号。(6)抽样函数抽样函数Sa(t)在MATLAB中用sinc函数表示。其定义为:sinc(t)=sin(*t)/(*t)其调用形式为:y=sinc(t)3.过程记录:3.1.1正弦波
4、仿真程序如下:(取A=1,W0=2,初相位为/6) %program sin A=1;W0=2*pi;phi=pi/6; t=0:0.001:8; ft=A*sin(W0*t+phi); plot(t,ft);grid on;3.1.2如图1所示为正弦信号波形图。图1正弦信号3.2.1周期三角波仿真程序如下: %program triangular t=-5*pi:pi/10:5*pi; x=sawtooth(t,0.5); plot(t,x);axis(-16 16 -2 2);grid on;3.2.2如图2所示为周期三角波信号波形图。图2周期三角波3.3.1矩形脉冲函数仿真程序如下:%p
5、rogram rectpulst=0:0.001:4;T=1;ft=rectpuls(t-2*T,2*T);plot(t,ft);grid on;axis(0 4 -0.5 1.5);3.3.2如图3所示为矩形脉冲函数信号波形图。图3矩形脉冲函数信号3.4.1单位冲击函数仿真程序如下:%program chongji t=-5:0.001:5; y=0*(t+-5&t0)+0*(t0)+1*(t=1); plot(t,y);axis(-5 5 -1 1.5);3.4.2如图4所示为单位冲激函数信号波形图。图4单位冲激函数3.5.1单位阶跃函数仿真程序如下: %program stepfun t
6、=-1:0.001:1; t0=0; y=stepfun(t,t0); plot(t,y);grid on;axis(-1 1 -0.2 1.2);3.5.2如图5所示为单位阶跃函数信号波形图。图5单位阶跃函数3.6.1抽样函数仿真程序如下: %program sinc t=-3*pi:pi/100:3*pi; ft=sinc(t/pi); plot(t,ft);grid on;3.6.2如图6所示为抽样函数波形图。图6抽样函数4.报告总结:本次实验报告完成大概花了1小时时间,由于刚开始接触MATLAB,实验着实遇到了不小挑战,还好第一次实验只是辅助软件理解,利用MATLAB绘画一些信号波形,
7、利用MATLAB库里存在的函数来进行波形的绘画方便了很多,只需要进行参数传递便可实现,期间学了一些代码,如grid on 是实现界面覆盖表格,plot(t,y)是以t向量为X轴,y向量为Y轴绘制波形的;axis()函数可以设置界面X,Y轴最大显示值。cos,sin是实现余弦函数和正弦函数,sinc实现抽样函数,rectupls实现矩形脉冲信号,周期性矩形波信号为square函数,三角脉冲信号用tripuls函数来表示,周期性三角波信号在MATLAB中用sawtooth函数来表示,一般周期性脉冲信号用pulstran函数来表示。期间遇到的问题,有代码敲错,或者遇到信号不知使用哪一个函数调用,我便
8、使用从图书馆借来的书查阅。作业二1.问题分析:1.1利用MATLAB 画出图7周期三角波信号的频谱。图7 周期三角波信号1.2利用MATLAB采用数值计算方法近似计算以下三角波信号的频谱。2.设计:2.1例一设计思路经计算,该周期三角波信号的福利叶级数系数为:根据上式便可在规划出定义域上的值域,用abs函数求幅度,用angle函数求相位。2.2例题二的设计思想为了利用quad8函数计算f(t)的频谱,定义如下的MATLAB函数: function y=sf1(t,w);Y=(abs(t)=1),*(1-abs(t).*exp(-j*w*t);对于不同的参数w,函数sf1将计算出傅里叶变换中被积
9、函数的值,其中的(abs(t)=1).*(1-abs(t)就是信号f(t)的MATLAB表示。注意,要将上面的MATLAB函数以文件名sf1.m保存。然后利用quadl函数是从MATLAB 6.0版本才开始出现的一个新的积分函数,MATLAB建议用quadl函数来代替以前的MATLAB版本中支持的quad8函数,因为quadl函数具有更高的求积精度(当然,目前在MATLAB6.x和7.x版本中依然可以调用quad8函数,只是会有警告信息的提示)。注意:quadl的最后一个字符是字母l,而非数字1。quadl函数的一般调用形式为:y=quadl(fun,a,b)Y=quadl(fun,a,b,T
10、OL,TRACE,p1,p1.)其中的fun指定被积函数,可以用下列两种等效的形式来制定,第一种形式为:F=inline(1./(x.3-2*x-5);Q=quadl(F,0,2);第二种形式为:Q=quadl(myfun,0,2);这里的myfun.m是一个内存如下的.m文件:Function y = myfun(x);Y=1./(x/3-2*x-5);上面的“”符号表示取函数的句柄,而quadl函数中的其他参数的意义跟quadl8函数相同。3.过程记录:3.1.1例一仿真程序 %program exampleN=10; N=10; n1=-N:-1;c1=-4*j*sin(n1*pi/2)
11、/pi2./n1.2;%计算n=-N到-1时的傅里叶级数系数 c0=0;%计算n=0时的傅里叶级数系数 n2=1:N;c2=-4*j*sin(n2*pi/2)/pi2./n2.2;%计算n=1到N时的傅里叶级数系数 cn=c1 c0 c2;n=-N:N; subplot(2,1,1);stem(n,abs(cn);ylabel(Cn的幅度); subplot(2,1,2);stem(n,angle(cn);ylabel(Cn的相位); xlabel(omega/omega_0);3.1.2例一周期三角波信号的频谱图如图8所示。图8周期三角波信号的频谱3.2.1例二仿真程序%program sf
12、1function y=sf1(t,w);y=(abs(t)=1),*(1-abs(t).*exp(-j*w*t);%program examplew=linspace(-6*pi,6*pi,512);N=length(w);F=zeros(1,N);for k=1:N F(k)=quadl(sf1,-1,1,w(k);end;figure(1);plot(w,real(F);xlabel(omega);ylabel(F(jomega);title(三角波信号近似频谱);figure(2);plot(w,real(F)-sinc(w/2/pi).2);%这里的sinc函数值即为理论计算结果xl
13、abel(omega);ylabel(error);title(计算误差);3.2.2例二三角波信号近似频谱图如图9所示,计算误差如图10所示。图9三角波信号近似频谱图10计算误差4.报告总结: 本次实验包括报告大概花了45分钟,书写报告需要不少时间,在仿真程序设计过程中,出现了调用quadl和quad8函数得出不同的误差图,其实是变量赋值出现错误,可以见到代码一旦多起来,就越需要敲代码的人越发仔细,通过本次实验,学到了新建文件进行编程的方式,实验一是在Command Window直接进行逐步编译,本次实验学会建立.m文件进行完整代码直接编译,同时学会了几个函数,如abs求幅度,angle求相
14、位,还可以利用subplot函数进行同一个窗口显示几个图,当然重点还是复习了一遍求傅里叶系数的算法。作业三1.问题分析:设有两个稳定的LTI系统,可有以下微分方程描述(1)(2)请画出系统的冲激响应和阶跃响应,并画出它们的系统频率响应的幅值和相位的特性曲线。2.设计:利用impulse函数实现冲激响应,利用step实现阶跃响应,具体参数传递根据其函数本身的定义来进行赋初值。而系统频率响应的幅值和相位的特性曲线根据freqs函数进行传递与计算。3.过程记录:3.1.1例一仿真程序%program Impulse(冲激响应)impulse(tf(3,3 2),10);xlabel(t(sec);y
15、label(y(t);grid on ;%program step(阶跃响应)step(tf(3,3 2),10);xlabel(t(sec);ylabel(y(t);grid on ;%系统频率响应的幅值和相位的特性曲线:w=-3*pi:0.01:3*pi; b=3;a=1,3;H=freqs(b,a,w); subplot(211) plot(w,abs(H),grid on xlabel(omega(rad/s),ylabel(|H(omega)|)title(H(w)的频率特性) subplot(212) plot(w,angle(H),grid on xlabel(omega(rad
16、/s),ylabel(phi(omega)|) title(H(w)的相频特性)3.1.2例一冲激响应如图11所示,阶跃响应如图12所示,频率特性及相频特性如图13所示。图11例一冲激响应图12例一阶跃响应图13频率特性及相频特性3.2.1例二仿真程序%program Impulse(冲激响应)impulse(tf(1 5,3 4 1),10);xlabel(t(sec);ylabel(y(t);grid on%program step(阶跃响应)step(tf(1 5,3 4 1),10);xlabel(t(sec);ylabel(y(t);grid on%系统频率响应的幅值和相位的特性曲线
17、:w=-3*pi:0.01:3*pi; b=1,0,5;a=3,4,1;H=freqs(b,a,w); subplot(211) plot(w,abs(H),grid on xlabel(omega(rad/s),ylabel(|H(omega)|)title(H(w)的频率特性) subplot(212) plot(w,angle(H),grid on xlabel(omega(rad/s),ylabel(phi(omega)|) title(H(w)的相频特性)3.2.2例一冲激响应如图14所示,阶跃响应如图15所示,系统频率响应的幅值和相位的特性曲线如图16所示。图14例二冲激响应图15
18、例二阶跃响应图16例二频率特性及相频特性4.报告总结:本次实验加报告完成时间大概在1.5小时左右,由于对于函数不够理解代码方面花费了不少时间,在此过程中学到了如何绘图系统冲激响应和阶跃响应及其系统频率响应的幅值和相位的特性曲线,可以利用impulse函数求冲激响应,利用step函数求系统的阶跃响应,利用freqs进行参数的传递来求频率响应的幅值和相位,还有xlabel函数可以命名窗口界面X坐标,ylabel函数可以命名窗口界面的Y坐标,title函数进行窗口标题的命名。作业四1.问题分析:对连续时间系统,用MATLAB作图求其奈奎斯特频率。2.设计:先求出y(t),y(t)利用正弦函数相加得出
19、,然后利用nyquist函数求其奈奎斯特频率。3.过程记录:3.1仿真程序如下。%program nyquistnum1=40*pi;den1=1 0 (40*pi)2);tf1=tf(num1,den1);num2=24*pi;den2=1 0 (24*pi)2);tf2=tf(num2,den2);tf=tf1+tf2;%建立系统模型nyquist(tf) ;3.2奈奎斯特频率图如17所示图17奈奎斯特频率4.报告总结:本次实验加报告完成时间大概在1小时左右,提高了报告完成效率,代码部分花费了一小段时间,本次实验主要考察系统奈奎斯特频率的计算以及绘图,使用了nyquist函数,它是绘制奈奎斯特频率图的专用函数。只需进行各个变量的初值幅值便可实现奈奎斯特频率的绘制。本次实验完成的较为顺利。
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2