测控专业计算机仿真实验指导书.docx
- 文档编号:3866151
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:21
- 大小:169.48KB
测控专业计算机仿真实验指导书.docx
《测控专业计算机仿真实验指导书.docx》由会员分享,可在线阅读,更多相关《测控专业计算机仿真实验指导书.docx(21页珍藏版)》请在冰豆网上搜索。
测控专业计算机仿真实验指导书
测控技术与仪器专业
《计算机仿真》
实验指导书
于微波朱宏殷编写
2009年11月
实验1MATLAB基本操作
一、实验目的
1.熟悉MATLAB实验环境,练习MATLAB命令、m文件、Simulink的基本操作。
2.利用MATLAB编写程序进行矩阵运算、图形绘制、数据处理等。
3.利用Simulink建立系统的数学模型并仿真求解。
二、实验原理
MATLAB环境是一种为数值计算、数据分析和图形显示服务的交互式的环境。
MATLAB有3种窗口,即:
命令窗口(TheCommandWindow)、m-文件编辑窗口(TheEditWindow)和图形窗口(TheFigureWindow)。
Simulink是MATLAB的一个部件,它为MATLAB用户提供了一种有效的对反馈控制系统进行建模、仿真和分析的方式。
而Simulink另外又有Simulink模型编辑窗口。
1.命令窗口(TheCommandWindow)
当MATLAB启动后,出现的最大的窗口就是命令窗口。
用户可以在提示符“>>”后面输入交互的命令,这些命令就立即被执行。
在MATLAB中,一连串命令可以放置在一个文件中,不必把它们直接在命令窗口内输入。
在命令窗口中输入该文件名,这一连串命令就被执行了。
因为这样的文件都是以“.m”为后缀,所以称为m文件。
2.m文件编辑窗口(TheEditWindow)
我们可以用m文件编辑窗口来产生新的m文件,或者编辑已经存在的m文件。
在MATLAB主界面上选择菜单“File/New/M-file”就打开了一个新的m文件编辑窗口;选择菜单“File/Open”就可以打开一个已经存在的m文件,并且可以在这个窗口中编辑这个m文件。
3.图形窗口(TheFigureWindow)
图形窗口用来显示MATLAB程序产生的图形。
图形可以是2维的、3维的数据图形,也可以是照片等。
4.Simulink的启动方式:
启动运行Simulink有两种方式:
(1)在Commandwindow中,键入simulink,回车。
(2)单击工具栏上Simulink图标。
启动Simulink后,即打开了Simulink库浏览器(Simulinklibrarybrowser)。
在该浏览器的窗口中单击“Createanewmodel(创建新模型)”图标,这样就打开一个尚未命名的模型窗口。
把Simulink库浏览器中的单元拖拽进入这个模型窗口,构造自己需要的模型。
对各个单元部件的参数进行设定,可以双击该单元部件的图标,在弹出的对话框中设置参数。
三、实验内容与方法
1.输入命令,计算以下问题:
(1)已知矩阵
,
,利用MATLAB进行矩阵计算:
a*ba/ba\ba^3a.*ba./ba.\ba.^3
(2)多项式计算:
求[12+2×(7-4)]÷32的算数计算结果。
2.编写M文件绘制函数的图形。
【例1-1】:
绘制下面函数在[03]区间的图形。
MATLAB程序:
x=-6:
0.1:
6;
leng=length(x);
form=1:
leng
ifx(m)<=0
y(m)=sin(x(m));
elseifx(m)<=3
y(m)=x(m);
else
y(m)=-x(m)+6;
end
end
plot(x,y,'*'),grid;
练习:
绘制下面的图形:
(1)sin(1/t),-1 (2)1-cos3(7t) 3.建立Simulink模型,进行系统仿真。 【例1-2】: 信号发生器发出幅值为1,频率为0.2Hz的正弦信号。 信号分两路输出: 一路直接送到示波器,一路扩大5倍送到另外的示波器。 启动Simulink,建立如图模型,并运行,观察运行结果。 练习: (1)应用Simulink建立系统模型,并对系统的阶跃响应进行仿真。 (2)建立一个简单的模型,用信号发生器产生一个幅值为2V,频率为0.5Hz的正弦波,并叠加一个0.1V的噪声信号,将叠加后的信号显示在示波器上。 四、实验报告 1.写出实验步骤1的计算结果。 2.编写M文件,写出程序清单,并绘出实验步骤2的图形曲线。 3.画出建立的模型,输出实验结果。 实验2连续时间信号的产生与运算 一、实验目的 1.熟悉MATLAB软件的使用。 2.掌握连续时间信号表示方法与基本运算的实现。 3.掌握用MATLAB常用函数来产生信号并实现信号的可视化方法。 二、实验原理 时域信号是指将信号表示成时间的函数f(t),信号的时间特性是指信号的波形出现的先后、持续时间的长短、随时间变化的快慢等。 信号按照特性的不同,分为确定信号、周期信号、能量信号等。 常用的连续信号有直流信号、正弦信号、单位阶跃信号、单位门信号、单位冲激信号、符号函数、单位斜坡函数、单位衰减指数信号、采样信号、随机信号等。 信号的运算包括: 信号的基本运算,包括加、减、乘、除等;信号的时域变换,包括信号的平移、翻转、尺度变换等;两个信号的卷积运算等。 三、实验内容与方法 从严格意义上讲,MATLAB并不能处理连续信号。 在MATLAB中是用连续信号在等间隔时间的样值来近似表示连续信号的。 当取样时间间隔足够小时,这些离散的样点就能够很好地近似出连续信号。 MATLAB提供了许多函数用于常用函数的产生,如阶跃信号、脉冲信号、指数信号、正弦信号和周期方波等,这些函数都是信号处理的基础。 1.连续信号的生成与可视化 (1)正弦交流信号 实现,MATLAB程序如下: t=-0: 0.001: 1; y=sin(2*pi*t); plot(t,y,'k'); xlabel('时间(t)');ylabel('幅值(f)');title('正弦交流信号'); (2)单位阶跃信号 MATLAB程序如下: t=-2: 0.01: 6; u=(t>=0); plot(t,u); axis([-2,6,0,1.2]) xlabel('时间(t)');ylabel('幅值(f)');title('单位阶跃信号'); (3)复指数信号 MATLAB程序如下: t=0: 0.01: 3; a=-3;b=4; z=exp((a+i*b)*t); subplot(221); plot(t,imag(z)),title('实部');xlabel('时间');ylabel('幅值'); subplot(222); plot(t,real(z)),title('虚部');xlabel('时间');ylabel('幅值'); subplot(223); plot(t,abs(z)),title('模');xlabel('时间');ylabel('幅值'); subplot(224); plot(t,angle(z)),title('相角');xlabel('时间');ylabel('幅值'); 2.连续时间信号的基本运算 (1)加(减)、乘运算 实现两个信号的加法和乘法运算: 要求两个信号运算的时间序列长度相同。 MATLAB程序如下: t=0: 0.01: 2; f1=exp(-3*t); f2=0.2*sin(4*pi*t); f3=f1+f2; f4=f1.*f2; subplot(221);plot(t,f1);title('f1(t)'); subplot(222);plot(t,f2);title('f2(t)'); subplot(223);plot(t,f3);title('f1+f2'); subplot(224);plot(t,f4);title('f1*f2'); (2)信号的反褶、移位、尺度变换 由 到 步骤: 【例2-1】已知 。 试通过反褶、移位、尺度变换由 的波形得到 的波形。 MATLAB程序如下 symst; f=sym(‘sin(t)/t’); f1=subs(f,t,t+3); f2=subs(f1,t,2*t); f3=sub(f2,t,-t); subplot(2,2,1);ezplot(f,[-8,8]);gridon; subplot(2,2,2);ezplot(f1,[-8,8]);gridon; subplot(2,2,3);ezplot(f2,[-8,8]);gridon; subplot(2,2,4);ezplot(f3,[-8,8]);gridon; (3)连续信号的卷积运算 用于实现x、h两个序列的卷积,假定都是从n=0开始。 Y序列的长度为x、h序列的长度之和再减1. 【例2-2】求两个方波信号的卷积。 MATLAB程序如下: y1=[ones(1,20),zeros(1,20)]; y2=[ones(1,10),zeros(1,20)]; y=conv(y1,y2); n1=1: length(y1); n2=1: length(y2); L=length(y); subplot(3,1,1);plot(n1,y1);axis([1L02]); subplot(3,1,2);plot(n2,y2);axis([1L02]); n=1: L; subplot(3,1,3);plot(n,y),axis([1L020]); 【例2-3】求两个指数信号的卷积。 MATLAB程序如下: t=0: 0.01: 1; y1=exp(-6*t); y2=exp(-3*t); y=conv(y1,y2); L1=length(y1); L2=length(y2); L=length(y); subplot(3,1,1);plot(t,y1); subplot(3,1,2);plot(t,y2); t1=0: 0.01: 2; subplot(3,1,3);plot(t1,y); 四、程序设计实验 1.编制程序,生成如下连续信号: 。 2.设计一个程序,选择一个信号f(t),完成信号f(t)到f(2t+2)的转化。 3.若 ,证明卷积满足: 五、实验预习要求 1.预习实验原理。 2.熟悉实验程序。 3.思考程序设计实验部分程序的编写。 六、实验报告要求 1.在MATLAB中输入程序,验证试验结果,并将实验结果存入指定存储区域。 2.对于程序设计实验,要求通过对验证性实验的练习,自行编制完整的实验程序,实现对信号的模拟,并得出实验结果。 3.在实验报告中写出完整的自编程序,并给出实验结果。 实验3连续LTI系统的时域分析 一、实验目的 1.熟悉连续LTI系统在典型激励信号下的响应及其特征。 2.掌握连续LTI系统单位冲激响应的求解方法。 3.重点掌握用卷积法计算连续时间系统的零状态响应。 4.熟悉MATLAB相关函数的调用格式及作用。 5.会用MATLAB对系统进行时域分析。 二、实验原理 连续时间线性时变系统(LTI)可以用如下的线性常系数微分方程来描述: 其中,n≥m,系统的初始条件为 。 系统的响应一般包括两个部分,即由当前输入所产生的响应(零状态响应)和由历史输入(初始状态)所产生的响应(零输入响应)。 对于低阶系统,一般可以通过解析的方法得到响应。 但对于高阶系统,手工计算就比较困难,这时MATLAB强大的计算功能就能比较容易的确定系统的各种响应,如冲激响应、阶跃响应、零输入响应、零状态响应、全响应等。 1.直接求解法 在MATLAB中,要求以系数向量的形式输入系统的微分方程。 因此,在使用前必须对系统的微分方程进行变换,得到其传递函数。 其分别用向量a和b表示分母多项式和分子多项式的系数(按照s的降幂排列)。 涉及到的MATLAB函数有: impulse(冲激响应)、step(阶跃响应)、roots(零输入响应)、lsim(零状态响应)等。 2.卷积计算法 根据系统的单位冲激响应,利用卷积计算的方法,也可以计算任意输入状态下系统的零状态响应。 设一个线性零状态系统,已知系统的单位冲激响应为h(t),当系统的激励信号为f(t)时,系统的零状态响应为: 也可简单记为 由于计算机采用的是数值计算,因此系统的零状态响应也可用离散序列卷积和来近似为: 式中 、 和 分别对应以T为时间间隔对连续时间信号 、 和 进行采样所得到的离散序列。 三、实验内容与方法 【例3-1】求系统 的冲激响应和阶跃响应。 (1)系统的冲激响应的MATLAB程序如下: b=[3,9];a=[1,6,8]; sys=tf(b,a) t=0: 0.1: 10; y=impulse(sys,t); plot(t,y); xlabel('time(t)');ylabel('y(t)');title('单位冲激响应'); (2)系统的阶跃响应的MATLAB程序如下: b=[3,9];a=[1,6,8]; sys=tf(b,a) t=0: 0.1: 10; y=step(sys,t); plot(t,y); xlabel('time(t)');ylabel('y(t)');title('单位阶跃响应'); 【例3-2】求系统 的全响应。 MATLAB程序如下: b=[1];a=[1,0,1]; sys=tf(b,a) t=0: 0.1: 10; x=cos(t); y=lsim(sys,x,t); plot(t,y); xlabel('time(t)');ylabel('y(t)');title('零状态响应'); 利用函数直接求的程序: b=[1];a=[1,0,1]; [ABCD]=tf2ss(b,a); sys=ss(A,B,C,D); t=0: 0.1: 10; x=cos(t); y=lsim(sys,x,t); plot(t,y); xlabel('time(t)');ylabel('y(t)');title('系统响应'); 四、程序设计实验 1.计算下述系统在指数函数激励下的零状态响应。 2.计算下述系统在冲激、阶跃、斜坡和正弦激励下的零状态响应。 五、实验预习要求 1.预习实验原理。 2.熟悉实验程序。 3.思考程序设计实验部分程序的编写。 六、实验报告要求 1.在MATLAB中输入程序,验证试验结果,并将实验结果存入指定存储区域。 2.对于程序设计实验,要求通过对验证性实验的练习,自行编制完整的实验程序,实现对信号的模拟,并得出实验结果。 3.在实验报告中写出完整的自编程序,并给出实验结果。 实验4连续系统的频域分析 一、实验目的 1.掌握连续时间信号的傅里叶变换和傅里叶逆变换的实现方法。 2.掌握傅里叶变换的数值计算方法和绘制信号频谱的方法。 二、实验原理 1.周期信号的分解 根据傅里叶级数的原理,任何周期信号都可以分解为三角级数的组合这称为f(t)的傅里叶级数。 在误差确定的前提下,可以由一组三角函数的有限项叠加而得到。 例如一个方波信号可以分解为: 合成波形所包含的谐波分量越多,除间断点附近外,它越接近于原波形,在间断点附近,即使合成的波形所含谐波次数足够多,也仍存在约9%的偏差,这就是吉布斯现象(Gibbs)。 2.连续时间信号傅里叶变换的数值计算 由傅里叶变换的公式: 当f(t)为时限信号时,上式中的n取值可以认为是有限项N,则有: , ,其中 3.系统的频率特性 连续LTI系统的频率特性称为频率响应特性,是指在正弦信号激励作用下稳态作用响应随激励信号频率的变化而变化的情况,表示为: 三、实验内容与方法 1.周期信号的分解 【例4-1】用正弦信号的叠加近似合成一个频率为50Hz,幅度为3的方波。 MATLAB程序如下: clearall fs=10000; t=[0: 1/fs: 0.1]; f0=50; sum=0; subplot(211) forn=1: 2: 9 plot(t,4/pi*1/n*sin(2*pi*n*f0*t),'k'); holdon; end title('信号叠加前'); subplot(212) forn=1: 2: 9; sum=sum+4/pi*1/n*sin(2*pi*n*f0*t); end plot(t,sum,'k'); title('信号叠加后'); 2.傅里叶变换和逆变换的实现 求傅里叶变换,可以调用forier函数,调用格式为F=fourier(f,u,v),是关于u的函数f的傅里叶变换,返回函数F是关于v的函数。 求傅里叶逆变换,可以调用iforier函数,调用格式为f=ifourier(F,u,v),是关于v的函数F的傅里叶逆变换,返回函数f是关于u的函数。 【例4-2】已知连续信号 ,通过程序完成其傅里叶变换。 MATLAB程序如下: symst f=fourier(exp(-2*abs(t))); ezplot(f); 【例4-3】已知连续信号 ,通过程序完成其傅里叶变换。 MATLAB程序如下: symstw ifourier(1/(1+w^2),t) 3.傅里叶变换的性质 举例练习傅里叶变换的时移特性和频移特性。 【例4-4】分别绘出信号 和 的频谱,求 的频谱。 MATLAB程序如下: r=0.02;t=-5: r: 5; N=200;W=2*pi; k=-N: N;w=k*W/N; f1=1/2*exp(-2*t).*stepfun(t,0); F=r*f1*exp(-j*t'*w); F1=abs(F);P1=angle(F); subplot(3,1,1);plot(t,f1);grid xlabel('t'),ylabel('f(t)');title('f(t)'); subplot(3,1,2); plot(w,F1);xlabel('w');grid;ylabel('F(jw)的模'); subplot(3,1,3); plot(w,P1*180/pi);grid;xlabel('w');ylabel('相位(度)'); 再求信号f(t-1)的频谱: r=0.02;t=-5: r: 5;N=200;W=2*pi;k=-N: N;w=k*W/N; f1=1/2*exp(-2*(t-1)).*stepfun(t,1); F=r*f1*exp(-j*t'*w); F1=abs(F);P1=angle(F); subplot(3,1,1);plot(t,f1);grid xlabel('t'),ylabel('f(t)');title('f(t)'); subplot(3,1,2); plot(w,F1);xlabel('w');grid;ylabel('F(jw)的模'); subplot(3,1,3); plot(w,P1*180/pi);grid;xlabel('w');ylabel('相位(度)'); 【例4-5】傅里叶变换的频移特性: 信号 为门信号,绘出信号 和信号 的频谱,并与原信号的频谱图进行比较。 (1) ,求其频谱可以采用数值计算的方法。 MATLAB程序如下: R=0.02;t=-2: R: 2; f=stepfun(t,-1)-stepfun(t,1); w1=2*pi*5; N=500; k=0: N; W=k*w1/N; F=f*exp(-j*t'*W)*R; F=real(F);W=[-fliplr(W),W(2: 501)]; F=[fliplr(F),F(2: 501)]; subplot(211);plot(t,f); xlabel('t'),ylabel('f(t)');axis([-2,2,-0.5,2]); title('f(t)=u(t+1)-u(t-1)'); subplot(212);plot(W,F); xlabel('w'),ylabel('F(w)');title('f(t)的傅里叶变换'); (2)得到 , 的频谱的MATLAB程序如下: R=0.02;t=-2: R: 2; f=stepfun(t,-1)-stepfun(t,1); f1=f.*exp(-j*10*t);f2=f.*exp(j*10*t); w1=2*pi*5; N=500; k=-N: N; W=k*w1/N; F1=f1*exp(-j*t'*W)*R;F2=f2*exp(-j*t'*W)*R; F1=real(F1);F2=real(F2); subplot(211);plot(W,F1); xlabel('w'),ylabel('F1(w)');title('F1(jw)的频谱'); subplot(212);plot(W,F2); xlabel('w'),ylabel('F2(w)');title('F2(jw)的频谱'); 四、程序设计实验 1.方波的合成实验。 用5项谐波合成一个频率为50Hz,幅值为3的方波,写出MATLAB程序,给出实验结果。 2.编写程序,画出信号 以及信号 的频谱图。 五、实验预习要求 1.预习实验原理。 2.熟悉实验程序。 3.思考程序设计实验部分程序的编写。 六、实验报告要求 1.在MATLAB中输入程序,验证试验结果,并将实验结果存入指定存储区域。 2.对于程序设计实验,要求通过对验证性实验的练习,自行编制完整的实验程序,实现对信号的模拟,并得出实验结果。 3.在实验报告中写出完整的自编程序,并给出实验结果。 实验5连续系统的复频域分析 一、实验目的 1.了解连续系统的复频域分析的基本方法。 2.掌握相关函数的调用。 二、实验原理 1.拉普拉斯变换与傅里叶变换的关系 如果信号f(t)的傅里叶变换存在,则拉普拉斯变换与傅里叶变换的关系可表示为: 2.系统冲激响应的求解 根据系统函数H(s)和冲激响应的关系式: 可以用拉普拉斯逆变换的方法求系统的冲激响应。 3.应用拉普拉斯变换法求系统的响应 应用经典的拉普拉斯变换法求解系统的响应时,应先从时域变换到复频域,然后在复频域经过处理后,再用拉普拉斯反变换,完成对时域问题的求解。 4.零极点分布与系统稳定性的关系 根据系统函数H(s)零极点的分布来分析连续系统的稳定性是零极点分析的重要应用,由系统稳定性的复频域条件可知,当系统函数H(s)的所有极点均位于S平面的左半平面时,系统稳定。 对于高阶系统,求解极点比较困难,所以可以用MATLAB来实现。 5.零极点分布与系统的频率特性 用向量法可以通过系统的零极点分布直接求出系统的频率响应。 其中 分别为系统的零点和极点,则系统的频率响应为: 其中,幅频响应为: 相频响应为: 向量jw沿着虚轴变化,角频率由0变化到无穷,就可以直观地求出系统的幅频响应和相频响应的变化,从而求出系统的频率特性。 三、实验内容与方法 1.拉普拉斯变换与傅里叶变换的关系 【例5-1】信号 ,绘制MATLAB曲面观察拉普拉斯变换与傅里叶变换的关系,可以求得信号的拉普拉斯变换与傅里叶变换: MATLAB程序如下: %绘制矩形信号拉氏变换曲面图 clf; a=-0: 0.1: 5; b=-20: 0.1: 20; [a,b]=meshgrid(a,b); c=a+i*b; c=(1-exp(-2*c))./c; c=abs(c); mesh(a,b,c); surf(a,b,c)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测控 专业 计算机仿真 实验 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)