信号与系统及MATLAB实现
《信号与系统及MATLAB实现》 实验指导书 信息工程学院实验中心 2009年3月 前 言 长期以来,《信号与系统》课程一直采用单一理论教学方式,同学们依靠做习题来巩固和理解教学内容,虽然手工演算训练了计算能力和思维方法,但是由于本课程数学公式推导较多,概念抽象,常需画各种波形,作题时难免花费很多时间,现在,我们给同学们介绍一种国际上公认的优秀科技应用软件MATLAB,借助它我们可以在电脑上轻松地完成许多习题的演算和波形的绘制。 MATLAB的功能非常强大,我们此处仅用到它的一部分,在后续课程中我们还会用到它,在未来地科学研究和工程设计中有可能继续用它,所以有兴趣的同学,可以对MATLAB再多了解一些。 MATLAB究竟有那些特点呢? 1.高效的数值计算和符号计算功能,使我们从繁杂的数学运算分析中解脱出来; 2.完备的图形处理功能,实现计算结果和编程的可视化; 3.友好的用户界面及接近数学表达式的自然化语言,易于学习和掌握; 4.功能丰富的应用工具箱,为我们提供了大量方便实用的处理工具; MATLAB的这些特点,深受大家欢迎,由于个人电脑地普及,目前许多学校已将它做为本科生必须掌握的一种软件。正是基于这些背景,我们编写了这本《信号与系统及MATLAB实现》指导书,内容包括信号的MATLAB表示、基本运算、系统的时域分析、频域分析、S域分析、状态变量分析等。通过这些练习,同学们在学习《信号与系统》的同时,掌握MATLAB的基本应用,学会应用MATLAB的数值计算和符号计算功能,摆脱烦琐的数学运算,从而更注重于信号与系统的基本分析方法和应用的理解与思考,将课程的重点、难点及部分习题用MATLAB进行形象、直观的可视化计算机模拟与仿真实现,加深对信号与系统的基本原理、方法及应用的理解,为学习后续课程打好基础。另外同学们在进行实验时,最好事先预习一些MATLAB的有关知识,以便更好地完成实验,同时实验中也可利用MATLAB的help命令了解具体语句以及指令的使用方法。 实验一 基本信号在MATLAB中的表示和运算 一、实验目的 1. 学会用MATLAB表示常用连续信号的方法; 2. 学会用MATLAB进行信号基本运算的方法; 二、实验原理 1. 连续信号的MATLAB表示 MATLAB提供了大量的生成基本信号的函数,例如指数信号、正余弦信号。 表示连续时间信号有两种方法,一是数值法,二是符号法。数值法是定义某一时间范围和取样时间间隔,然后调用该函数计算这些点的函数值,得到两组数值矢量,可用绘图语句画出其波形;符号法是利用MATLAB的符号运算功能,需定义符号变量和符号函数,运算结果是符号表达的解析式,也可用绘图语句画出其波形图。 例1-1指数信号 指数信号在MATLAB中用exp函数表示。 如,调用格式为 ft=A*exp(a*t) 程序是 A=1; a=-0.4; t=0:0.01:10; %定义时间点 ft=A*exp(a*t); %计算这些点的函数值 plot(t,ft); %画图命令,用直线段连接函数值表示曲线 grid on; %在图上画方格 例1-2 正弦信号 正弦信号在MATLAB中用 sin 函数表示。 调用格式为 ft=A*sin(w*t+phi) A=1; w=2*pi; phi=pi/6; t=0:0.01:8; %定义时间点 ft=A*sin(w*t+phi); %计算这些点的函数值 plot(t,ft); %画图命令 grid on; %在图上画方格 例1-3 抽样信号 抽样信号Sa(t)=sin(t)/t在MATLAB中用 sinc 函数表示。 定义为 t=-3*pi:pi/100:3*pi; ft=sinc(t/pi); plot(t,ft); grid on; axis([-10,10,-0.5,1.2]); %定义画图范围,横轴,纵轴 title( 抽样信号 ) %定义图的标题名字 例1-4 三角信号 三角信号在MATLAB中用 tripuls 函数表示。 调用格式为 ft=tripuls(t,width,skew),产生幅度为1,宽度为width,且以0为中心左右各展开width/2大小,斜度为skew的三角波。width的默认值是1,skew的取值范围是-1~+1之间。一般最大幅度1出现在t=(width/2)*skew的横坐标位置。 t=-3:0.01:3; ft=tripuls(t,4,0.5); plot(t,ft); grid on; axis([-3,3,-0.5,1.5]); 例1-5 虚指数信号 调用格式是f=exp((j*w)*t) t=0:0.01:15; w=pi/4; X=exp(j*w*t); Xr=real(X); %取实部 Xi=imag(X); %取虚部 Xa=abs(X); %取模 Xn=angle(X); %取相位 subplot(2,2,1),plot(t,Xr),axis([0,15,-(max(Xa)+0.5),max(Xa)+0.5]), title( 实部 ); subplot(2,2,3),plot(t,Xi),axis([0,15,-(max(Xa)+0.5),max(Xa)+0.5]), title( 虚部 ); subplot(2,2,2), plot(t,Xa),axis([0,15,0,max(Xa)+1]),title( 模 ); subplot(2,2,4),plot(t,Xn),axis([0,15,-(max(Xn)+1),max(Xn)+1]),title( 相角 ); %subplot(m,n,i) 命令是建立m行n列画图窗口,并指定画图位置i 例1-6 复指数信号 调用格式是f=exp((a+j*b)*t) t=0:0.01:3; a=-1;b=10; f=exp((a+j*b)*t); subplot(2,2,1),plot(t,real(f)),title( 实部 ) subplot(2,2,3),plot(t,imag(f)),title( 虚部 ) subplot(2,2,2),plot(t,abs(f)),title( 模 ) subplot(2,2,4),plot(t,angle(f)),title( 相角 ) 例1-7 矩形脉冲信号 矩形脉冲信号可用rectpuls函数产生, 调用格式为y=