计算机仿真实验指导书.docx
《计算机仿真实验指导书.docx》由会员分享,可在线阅读,更多相关《计算机仿真实验指导书.docx(23页珍藏版)》请在冰豆网上搜索。
计算机仿真实验指导书
实验1MATLAB语言平台及基本运算
一.实验目的
1.学习了解MATLAB语言环境;
2.练习MATLAB命令的基本操作;
3.练习m文件的基本操作;
4.学习MATLAB的基本矩阵运算;
5.学习MATLAB的点运算;
二.实验指导原理
1、常见数学函数
如:
输入x=[-4.85-2.3-0.21.34.566.75],则
ceil(x)=-4-20257
fix(x)=-4-20146
floor(x)=-5-3-1146
round(x)=-5-20157
2、系统的在线帮助
(1)help命令:
1).当不知系统有何帮助内容时,可直接输入help以寻求帮助:
>>help(回车)
2).当想了解某一主题的内容时,如输入:
>>helpsyntax(了解Matlab的语法规定)
3).当想了解某一具体的函数或命令的帮助信息时,如输入:
>>helpsqrt(了解函数sqrt的相关信息)
(2)lookfor命令
现需要完成某一具体操作,不知有何命令或函数可以完成,如输入:
>>lookforline(查找与直线、线性问题有关的函数)
3、常量与变量
系统的变量命名规则:
变量名区分字母大小写;变量名必须以字母打头,其后
可以是任意字母,数字,或下划线的组合。
此外,系统内部预先定义了几个有特殊意
义和用途的变量,见下表:
(1)数值型向量(矩阵)的输入
1).任何矩阵(向量),可以直接按行方式输入每个元素:
同一行中的元素用逗号(,)
或者用空格符来分隔;行与行之间用分号(;)分隔。
所有元素处于一方括号([]内;
例1:
>>Time=[111212345678910]
>>X_Data=[2.323.43;4.375.98]
2).系统中提供了多个命令用于输入特殊的矩阵:
上面函数的具体用法,可以用帮助命令help得到。
如:
helpzeros
ZEROSZerosarray.
ZEROS(N)isanN-by-Nmatrixofzeros.
ZEROS(M,N)orZEROS([M,N])isanM-by-Nmatrixofzeros.等等
4、数组(矩阵)的点运算
运算符:
+(加)、-(减)、./(右除)、.\(左除)、.^(乘方),
例4:
>>g=[1234];h=[4321];
>>s1=g+h,s2=g.*h,s3=g.^h,s4=g.^2,s5=2.^h
5、矩阵的运算
运算符:
+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)、’(转置)等;
常用函数:
det(行列式)、inv(逆矩阵)、rank(秩)、eig(特征值、特征向量)、rref
(化矩阵为行最简形)
例5:
>>A=[20–1;132];B=[17–1;423;201];
>>M=A*B%矩阵A与B按矩阵运算相乘
>>det_B=det(B)%矩阵A的行列式
>>rank_A=rank(A)%矩阵A的秩
>>inv_B=inv(B)%矩阵B的逆矩阵
>>[V,D]=eig(B)%矩阵B的特征值矩阵V与特征向量构成的矩阵D
-1
>>X=A/B%A/B=A*B,即XB=A,求X
-1
>>Y=B\A%B\A=B*A,即BY=A,求Y
6、平面绘图
MATLAB能绘制表现非常丰富的平面图形,以下是一些常用的MATLAB绘图函数,以绘制不同平面图元和实现不同的平面图形绘制功能:
(1).利用plot函数可依据给定的数据绘制平面图形,如绘制正弦函数y=sin(x)的图形:
>>x=-2*pi:
pi/10:
2*pi?
>>y=sin(x)?
>>plot(x,y,’r*-’)
可以使用gridon绘图网格线和holdon同时绘制两个图形,还可以给图形加上各种注解和
处理:
>>x=-2*pi:
pi/10:
2*pi;
>>y=sin(x);
>>plot(x,y,‘r*:
’)
>>gridon%绘制网格线
>>holdon
>>y2=2*cos(x);
>>plot((x,y2,‘b+-’)
>>xlabel('x轴');%x轴注解
>>ylabel('y轴');%y轴注解
>>title('正弦和余弦函数');%图形标题
>>legend({'y=sin(x)','y2=cos(x)'});%图形注解
(2).MATLAB还可以在同一图形窗口完成多个子图的功能,如:
>>x=-2*pi:
pi/10:
2*pi;
>>y=sin(x);
>>y2=cos(x);
>>y3=2*cos(x);
>>y4=sin(x)+cos(x);
>>subplot(2,2,1);
>>plot(x,y,‘r*:
’)
>>subplot(2,2,2);
>>plot(x,y2,‘b+-’)
>>subplot(2,2,3);
>>plot(x,y3,‘gp:
’)
>>subplot(2,2,4)
>>plot((x,y4,‘kx’)
(3).其它的各种二维函数图
三.实验内容
1.学习了解MATLAB语言环境
(1)MATLAB语言操作界面:
在命令提示符位置键入命令,完成下述练习。
(2)MATLAB的数据格式
键入a=pi;b=exp
(1);改变数据结构,观察并记录变量值。
在workspace里双击变量便可在弹出的窗口中进行修改。
(3)变量查询,命令有who,whos,查询变量并作记录。
(4)联机帮助:
使用help查询who,whos命令。
(5)MATLAB语言演示:
键入命令intro,阅读命令平台内容;键入命令demo,MATLAB语言功能演示。
2.练习MATLAB命令的基本操作
(1)常数矩阵输入
a=[123]a=[1;2;3]记录结果,并比较不同;
b=[125]b=[125];记录结果,并比较不同;
aa'bb';记录结果,比较变量加“'”后的区别;
c=a*bc=a*b'记录显示结果与出错原因;
a=[123;456;780]a^2a^0.5记录显示结果。
(2)创建一个空白文件,建立一个循环命令程序,求解
,并保存为makesum.m,并使用open、run命令对makesum.m进行操作。
(3)执行下列命令
a=[123;456;780]
poly(a)、rank(a)、det(a)、trace(a)、inv(a)、eig(a)、diag(a)、tril(a)
并观察记录显示结果,使用联机帮助help查阅相应的m函数的意义和函数格式,并作记录。
poly求特征多项式和由根求多项式
rank求矩阵的秩
det求行列式
trace矩阵的迹(对角线元素的和)
inv矩阵求逆
eig计算矩阵特征系统
diag建立或提取对角阵
tril下三角形矩阵
3.MATLAB的基本矩阵运算
(1)创建数值矩阵
键入a=[123;456;789]观察a(3,2),a(:
1)
键入t=0:
10;u=0:
0.1:
10,观察向量t,u的值
键入a(:
3)=[2;3;4];a,观察矩阵a的变化
键入b=[11+2i;3+4i3],观察复数矩阵
(2)生成特殊矩阵
键入a=ones(3,3);b=zeros(2,2);c=eye(4);magic(4);观察特殊矩阵
(3)矩阵乘、乘方、加减、右除、左除运算
键入a=[010;001;-6-11-6];b=[12;34;56];c=[110;011];
作矩阵乘运算
v1=c*av2=a*bv3=c*a*bv4=b*cv5=c*b
矩阵乘方运算
a^2a^(1/2)
矩阵加减运算
a1=a+b*ca2=c*b-a(1:
2,1:
2)a3=a(1:
2,2:
3)+c*b
矩阵右除(常规除)a/c
矩阵左除a\b
5.MATLAB的点运算
(1)练习点乘与点除
a1=[12;34];a2=0.2*a1;观察[a1a2][a1.*a2a1./a2]
(2)编制m文件建立一个正弦、余弦函数,并在0~2pi间绘制sin(t)*cos(t)的图形。
四.实验报告要求
1.写明实验目的和实验原理。
实验原理中简要说明实验内容中所使用的MATLAB命令。
2.在实验过程和结果中,要列项目反映各自的实验内容,编写的程序,运行结果,按实验内容对结果的分析与判断。
程序和运行结果(图)可以从屏幕上复制,打印报告或打印粘贴在报告上。
不方便打印的同学,要求手动从屏幕上抄写和绘制。
3.简要写出实验心得和问题或建议。
实验二Simulink基本操作
一、实验目的
1、熟悉Simulink基本模块(信号发生器,数学模块,示波器)的使用。
2、掌握Simulink仿真参数的设置。
3、熟悉构建Simulink子系统。
4、学习自建模快的封装,帮助文档的编写。
5、掌握MATLAB命令窗口中运行Simulink。
二、实验指导原理
1、使用Simulink进行建模和仿真的过程
启动MATLAB之后,在命令窗口中输入命令“Simulink”或单击MATLAB工具栏上的Simulink图标,打开Simulink模块库窗口。
在Simulink模块库窗口中单击菜单项“File|New|Model”,就可以新建一个Simulink模型文件。
利用鼠标单击Simulink基础库中的子库,选取所需模块,将它拖动到新建模型窗口中的适当位置,如果需要对模型模块进行参数设置和修改,只需选中模型文件中的相应模块,单击鼠标右键,弹出快捷菜单,从中选取相应参数进行修改,如图所示。
点击
,即可仿真所建模块。
2、MATLAB命令窗口中运行Simulink。
若参数设置为变量,变量可先在MATLAB命令窗口中进行定义,并使用open,sim等命令直接运行信号。
然后在命令行提示符下输入>>a=1;b=1;open('s01.mdl');sim('s01.mdl');可得到同样的结果,
3、子系统建立与封装
首先将Simulink模块库中Ports&Subsystems子模块库中的Subsystem模块拖动到新建的模型文件窗口中,双击该Subsystem模块就会打开该子系统,其输入用In模块表示,输出用Out模块表示,一个子系统可以有多个输入、输出。
然后如下图所示建立子系统的内部模块。
上例中的子系统模型还存在一些缺点:
子系统中的参数(如增益G)、传递函数系数等是通过MATLAB工作空间传入的,这就破坏了子系统内部的隐藏性质。
对子系统封装以后,它就可以像Simulink模块库所提供的模块一样来使用。
选中上例中子系统模块,改名为Mysubsystem,选择菜单项“Edit|MaskSubsystem”,弹出MaskEditor对话框,
在Icon标签下主要是对封装模块的图标进行设置,可以设置图标的边框是否可见、图标是否透明、是否旋转、绘图单位等,还可使用命令来绘制图标,该标签下部给出了绘制图标的语法举例。
在Parameters标签下可以设置子系统的参数,本例中需要设置的参数就是G、A、B、C四个。
参数设置可以采用编辑框(Edit)、弹出列表(Popup)或复选框(Checkbox)形式。
一般情况下,初始化标签可使用默认值。
文档标签的三部分将分别显示在封装模块的参数设置对话框和帮助文档中,
三、实验内容
1、通过示波器观察1MHz,幅度为15mV的正弦波和100KHz,幅度为5mV的正弦波相乘的结果。
写出数学表达式。
通过使用三踪示波器同时观察1MHz、100KHz正弦波以及相乘的结果。
注意设置仿真参数和示波器的扫描参数和幅度显示参数。
2、将50Hz,有效值为220V的正弦交流电信号通过全波整流(绝对值
)模
块,观察输出波形。
3、学习构建SIMULINK子系统:
构建一个子系统,使得它具有将输入信号m(t)(如一个100Hz的正弦波)和一个常数C相加后再和一个1000Hz的幅度为A的正弦波相乘的功能。
y(t)=A(m(t)+C)sin(2*pi*f*t)
其中f=1000Hz。
保存为s23.用sim指令在命令空间启动模型进行仿真:
在Matlab命令空间中用语句对参数A,C,f进行设置,并对采用命令open打开,采用sim指令进行仿真。
请给出指令语句。
4、对子系统进行封装:
请对3中所建立子系统进行封装(Mask),编写参数输入对话框和帮助文档,并将模块放入一个自己新建的库中,请记录整个的操作过程。
5、MATLAB编程与Simulink模型混合编程:
在MATLAB的命令行中以命令的形式生成1MHz,幅度为15mV的正弦波和100KHz,幅度为5mV的正弦波,然后利用Simulink中的FromWorkspace模块从工作空间中读入,在Simulink中使用Product模块实现其相乘后,再通过ToWorkspace模块将Ssimulink中产生的数据回送到工作空间,从而实现MATLAB编程与Simulink模型相结合的混合仿真。
四、实验报告要求:
1.写明实验目的和实验原理。
实验原理中简要说明实验内容中所使用的MATLAB命令。
2.在实验过程和结果中,要列项目反映各自的实验内容,编写的程序,运行结果,按实验内容对结果的分析与判断。
程序和运行结果(图)可以从屏幕上复制,打印报告或打印粘贴在报告上。
不方便打印的同学,要求手动从屏幕上抄写和绘制。
3.简要写出实验心得和问题或建议。
实验三通信系统的Simulink建模与仿真
一、实验目的
1、熟悉通信系统中数字2ASK调制系统、频率合成技术和采样定理的基本原理。
2、了解2ASK调制解调、锁相环频率合成和采样定理的建模方法。
3、掌握Simulink常用通信仿真模块参数的设置。
二、实验指导原理
1、2ASK调制解调系统建模与仿真
在一般情况下,调制信号为具有一定波形形状的二进制序列,则二进制振幅键控信号可用下式描述
2ASK信号的产生原理框图如图2.1所示。
(a)乘积法(b)通断键控法
图3.12ASK信号产生的原理框图
因此根据图3.1中2ASK的乘积法产生原理框图可以采用以下的simulink模块对其进行仿真,其中解调采用同步解调。
图3.22ASK信号的simulink仿真模型
思考一下:
若使用通断建控法该如何建模?
2、采样及采样定律
在数字通信系统中传输模拟信号,首先要完成模/数变换。
发送端先将模拟信号采样,使其成为一系列离散的采样值,然后再将采样值量化为有限的量化值,并经编码变换成数字信号,用数字通信方式传输。
采样定理告诉我们:
如果对某一带宽有限的时间连续信号(模拟信号)进行采样,且采样速率达到两倍以上的最高工作频率,那么根据这些采样值就能还原出原始信号。
图3.3采样定理的simulink仿真模型
图3.4采样后信号的时域和频域波形
3、频分多址技术
在无线电通信系统中,在相同的地域、相同的时间范围及相同的频率范围,每个接收设备的天线都沐浴在众多发射设备发出的电磁波中。
但是它们在进行着与各自对象的信息交换(即通信),这靠的是多址技术。
也就是说,靠信号的某些特征的差别,接收设备将发给自己的无线电信号与其他的信号区别开来。
有线通信的频分多址级数也是基于相同的原理。
频分多址是将通信的频段划分成若干等间隔的信道频率,每对通信的设备工作在某个分配或指定的信道上,即不同的通信用户是靠不同的频率划分来实现通信的,称为频分多址。
早期的无线通信系统,包括现在的无线电广播、短波、大多数专用通信网都是采用频分多址技术来完成的。
图3.5所示是频分多址通信系统的仿真模型
图3.5频分多址技术的仿真图图3.5DSB-AM子系统图
三、实验内容
1、参照图3.1,建立一个2ASK通信系统,要求:
伯努利二进制随机数产生器是基于采样的,采样时间为1,占空比为1/2;正弦载波为时基信号,幅度为1,频率为10Hz,记录仿真的结果并进行分析。
2、参照图3.3,建立一个模型验证采样定理,要求:
正弦载波为时基信号,幅度为1,频率为5Hz,比较分析采样脉冲信号频率分别为40Hz和4Hz时,采用后的时域和频域波形。
3、参照图3.5,建立一个频分多址模块,要求三路调制信号分别采用幅度值为1,频率为1Hz的正弦、方波、锯齿波信号,三路信号的载波信号分别采用幅度值为1,频率为30Hz,60Hz和80Hz的正弦信号。
记录仿真的结果并进行分析。
四、实验报告要求:
1.写明实验目的和实验原理。
实验原理中简要说明实验内容中所使用的MATLAB命令。
2.在实验过程和结果中,要列项目反映各自的实验内容,编写的程序,运行结果,按实验内容对结果的分析与判断。
程序和运行结果(图)可以从屏幕上复制,打印报告或打印粘贴在报告上。
不方便打印的同学,要求手动从屏幕上抄写和绘制。
3.简要写出实验心得和问题或建议。
实验四MATLAB信号处理基础实验
一、实验目的
1、掌握MATLAB常用信号处理波形的产生;
2、学习信号序列的各种操作;
3、学习离散傅立叶变换的MATALB相关操作。
二、实验指导原理
MATLAB的信号处理工具箱还提供了各种信号的发生函数,这些信号发生函数的用法详见帮助文档:
y=[1zeros(1,n-1)]%产生单位抽样序列
y=ones(1,N)%产生单位阶跃矩阵
n=0:
N-1;y=a.^n;%产生实指数序列
n=0:
N-1;y=exp((lu+j*w0)*n);%产生复指数序列
y=rand(m,n);%产生m行n列均匀分布的随机数矩阵
y=randn(m,n);%产生m行n列的零均值方差为1的标准正态分布的随机数矩阵
y=square(2*pi*f*t+fai,duty);%产生一个方波,t为时间取样序列,f为方波的基频率,fai为方波的初相位,duty为占空比。
y=sawtooth(2*pi*f*t+fai,width);%产生一个锯齿波,f,fai同上,width为宽度,为0~1之间的数。
y=sin(2*pi*f*t)%产生正弦信号
y=rectpuls(t,w);%产生矩形脉冲
y=tripuls(T,w,s)%产生三角形脉冲
y=diric(x,n)%产生狄拉克函数脉冲(冲激脉冲)
yi=gauspuls(t,fc,bw,bwr);%产生高斯调制的正弦脉冲
y=pulstran(t,d,‘func’);%产生脉冲串
y=sinc(x)%产生取样函数sinc脉冲
y=sum(x)%用于对x中所有元素进行求和运算
y=prod(x)%用于对x中所有元素进行连乘运算
y=abs(x)%用于对x进行取绝对值的运算
y=unwrap(x)%用于对x进行解卷绕的运算
y=fft(x)%用于对x进行快速傅立叶的运算
三、实验内容
1.产生下列各种波形,并记录结果。
单位抽样序列
单位阶跃矩阵
实指数序列
复指数序列
随机序列
方波
正弦波
锯齿波
sinc信号
pulstran信号
diric信号
2.有两信号分别为
,
,其中
,
,编程实现此二信号的叠加,并计算它的抽样和、抽样积、信号能量和信号功率。
信号叠加:
抽样和:
抽样积:
信号能量:
信号功率:
3.求信号
和
之和(其中
,
),并计算和的FFT变换。
有限长序列的离散傅立叶变换对定义:
正变换:
反变换:
4.模拟信号
,求N点DFT的幅值谱和相位谱。
四、实验报告要求:
1.写明实验目的和实验原理。
实验原理中简要说明实验内容中所使用的MATLAB命令。
2.在实验过程和结果中,要列项目反映各自的实验内容,编写的程序,运行结果,按实验内容对结果的分析与判断。
程序和运行结果(图)可以从屏幕上复制,打印报告或打印粘贴在报告上。
不方便打印的同学,要求手动从屏幕上抄写和绘制。
3.简要写出实验心得和问题或建议。