信号与系统实验报告一1 实验一:信号的表示、可视化及时域运算 一、实验目的: 1、学习并熟练MATLAB 的操作环境; 2、掌握各种不同信号的MATLAB 编程与绘图方式; 3、掌握各种不同函数的符号表示与数值表示的操作方式; 4、掌握连续信号与离散信号的运算方式 二、实验内容: 1、练习并验证实验指导书上实验1-4的内容,学习并掌握信号的MATLAB 仿真 2、利用Matlab 软件的funtool 符号计算方式——图式化函数计算器,分别设置f,g 函数为3sin()x ,5exp()x -,sin()/x x ,12*()/abs x a -(abs 求绝对值),(*)sqrt a x (开方),square(x)(方波)等进行各种变换与显示 3、写出正弦信号、指数信号、抽样信号、随机信号、三角脉冲信号、矩形脉冲信号、周期方波信号、周期锯齿波信号的显示程序并观看波形,按照M*N 的矩阵形式将上述信号显示到一个Figure 上 4、采用不同的方法(至少三种)编写单位冲激信号与单位阶跃信号的程序并显示图形编制函数))3()2((2 1)2()1())1()1((2 1 22---+---+--+t u t u t t u t u t u t u t 的显示程序(方法自选)。
5、画出课本P29例题2-3 f1=sin(k*pi/6)、f2=sin(k/6)的波形图,由图形判断是否是周期序列 6、完成实验书上实验4 P36的程序设计实验的f5与f7的内容 三、实验数据处理与结果分析: 1. 写出正弦信号、指数信号、抽样信号、随机信号、三角脉冲信号、矩形脉冲 信号、周期方波信号、周期锯齿波信号的显示程序如下: A=2;w0=2*pi; phi=pi/3; t=0:0.01:8; ft=A*cos(w0*t+phi); subplot(241); plot(t,ft,'k'); title('正弦信号');xlabel('时间(t)');ylabel('幅度(f)'); t=-3*pi:pi/100:3*pi; ft=sinc(t/pi); subplot(242); plot(t,ft,'k'); title('抽样信号'); xlabel('时间(t)');ylabel('幅度(f)'); t=0:0.001:50; ft=randn(size(t)); subplot(243) plot(t(1:50),ft(1:50),'k'); title('随机信号'); xlabel('时间(t)');ylabel('幅度(f)'); A=1;a=-0.4; t=0:0.001:10; ft=A*exp(a*t); subplot(244); plot(t,ft,'k'); title('指数信号'); xlabel('时间(t)');ylabel('幅度(f)'); t=0:0.0001:1; y=square(2*pi*15*t); subplot(245) plot(t,y,'k'); axis([0,1,-1.5,1.5]); title('周期方波'); xlabel('时间(t)');ylabel('幅度(f)'); t=0:0.001:4; T=1; ft=rectpuls(t-2*T,2*T); subplot(246); plot(t,ft,'k'); title('矩形脉冲'); xlabel('时间(t)');ylabel('幅度(f)'); t=-3:0.001:3; ft=tripuls(t,4,0.5); subplot(247); plot(t,ft,'k'); title('三角波脉冲'); xlabel('时间(t)');ylabel('幅度(f)'); t=0:0.001:4; ft=sawtooth(2*pi*t); subplot(248); plot(t,ft,'k'); title('周期锯齿波信号'); xlabel('时间(t)');ylabel('幅度(f)'); 显示出的2*4的矩阵形式在一个Figure上,如下图: 2.采用不同的方法(至少三种)编写单位冲激信号与单位阶跃信号的程序并显 示图形,如下: 单位冲激信号第一种方法: t0=0;t1=-1;t2=5;dt=0.1; t=t1:dt:t2; n=length(t); x=zeros(1,n); x(1,(t0-t1)/dt+1)=1/dt; stairs(t,x,'k'); axis([t1,t2,0,1/dt]); xlabel('时间(t)');ylabel('幅度(f)');title('单位冲激信号'); 单位冲激信号第二种方法: t0=0;t1=-1;t2=3;dt=0.001; t=t1:dt:t2; n=length(t); k1=floor((t0-t1)/dt); x=zeros(1,n); x(k1)=1/dt; stairs(t,x,'k'); axis([-1,3,0,22]); xlabel('时间(t)');ylabel('幅度(f)');title('单位冲激信号'); t0=-1;t1=0;t2=3; t=t0:0.0001:t2; ft=(t==0); plot(t,ft,’k’); xlabel('时间(t)');ylabel('幅度(f)');title('单位冲激信号');其中第一种方法生成的图形如下: 第二和第三种方法生成的图形如下: t0=-1;t1=0;t2=3; t=t0:0.0001:t2; ft=(t>0); plot(t,ft,'kd'); title('单位阶跃信号');xlabel('时间(t)');ylabel('幅度(f)'); 单位阶跃信号的第二种方法: syms t; f=sym('heaviside(t)'); ezplot(f,[-1,3]); 单位阶跃信号的第三种方法: t0=0;t1=-1;t2=3; dt=0.01; t=t1:dt:-t0; n=length(t); t3=-t0:dt:t2; n3=length(t3); u=zeros(1,n); u3=ones(1,n3); plot(t,u,'kd'); hold on; plot(t3,u3,'kd'); plot([-t0,-t0],[0,1],'kd'); hold off; axis([t1,t2,0,1]); title('单位阶跃信号');xlabel('时间(t)');ylabel('幅度(f)'); 生成的阶跃信号图形如下: 下面来编制函数))3()2((2 1)2()1())1()1((2122---+---+--+t u t u t t u t u t u t u t 的显示程序: t=-1:0.01:5; ft=0.5*t.*t.*(u(t+1)-u(t-1))+u(t-1)+u(t-2)+0.5*t.*t.*(u(t-2)-u(t-3)); plot(t,ft,'k.'),grid on; xlabel('时间(t )');ylabel('幅度(f )');title('实验内容四函数图'); *注:在运行以上程序时,需先建立u 的M 文件函数。
u 的函数M 文件如下: function f=u(t) f=(t>0) 这样,生成的信号的函数图形如下: 3.画出课本P29例题2-3 f1=sin(k*pi/6)、f2=sin(k/6)的波形图,由图形 判断是否是周期序列 写出生成图形的函数如下: k=-30:30; f1=sin(k*pi/6); subplot(121); stem(k,f1,'k','filled'); title('序列sin (k*pi/6)'); xlabel('时间(t )');ylabel('幅度f (k )'); f2=sin(k/6); subplot(122); title(' 序列sin(k/6)'); xlabel('时间(t)');ylabel('幅度f(k)'); 生成的图形如下: 由图形我们可以看到 :f1=sin(k*pi/6)是周期信号,周期N=12;f2=sin(k/6)不是周期信号我们在理论分析中也得出同样的结论,可见两者是相符的 4.完成实验书上实验4 P36的程序设计实验的f5与f7的内容。
已知序列f(k)={2,3,1,2,3,4,3,1},对应的k值为4>=k>=-3;分别绘制以下图形,其中f5(k)=f(k+1);f7(k)=f(k+2)u(k); 程序如下: k=-3:4; ft=[2,3,1,2,3,4,3,1]; subplot(131); stem(k,ft,'k','filled'); xlabel('时间(t)');ylabel('幅值(f)');title('f(k)'); subplot(132); stem(k-2,ft.*E(k-2),'k','filled'); xlabel('时间(t)');ylabel('幅值(f)')title('f(k+2)*u(k)'); subplot(133); xlabel('时间(t)');ylabel('幅值(f)')title('f(k+1)'); 生成的图形如下: 四、实验总结: 本次实验是第一次信号与系统实验,由于对MATLAB相对陌生,所以在初始了解用了相当长的时间,且只是初步了解了MATLAB的操作环境,整个下午只完成了实验一的第一部分,因此在之后的几次实验中我还要对MATLAB语言进一步熟练,以便灵活的使用。
本次实验是信号的表示,可视化和简单的时域运算,通过对一些信号的编程语言实现及绘制出其图形,对这些信号有了进一步的了解对于信号的表示,初步了解了各种不。