《MATLAB仿真技术》实验指导书附答案.docx

上传人:b****8 文档编号:9234440 上传时间:2023-02-03 格式:DOCX 页数:42 大小:1.67MB
下载 相关 举报
《MATLAB仿真技术》实验指导书附答案.docx_第1页
第1页 / 共42页
《MATLAB仿真技术》实验指导书附答案.docx_第2页
第2页 / 共42页
《MATLAB仿真技术》实验指导书附答案.docx_第3页
第3页 / 共42页
《MATLAB仿真技术》实验指导书附答案.docx_第4页
第4页 / 共42页
《MATLAB仿真技术》实验指导书附答案.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

《MATLAB仿真技术》实验指导书附答案.docx

《《MATLAB仿真技术》实验指导书附答案.docx》由会员分享,可在线阅读,更多相关《《MATLAB仿真技术》实验指导书附答案.docx(42页珍藏版)》请在冰豆网上搜索。

《MATLAB仿真技术》实验指导书附答案.docx

《MATLAB仿真技术》实验指导书附答案

 

实验项目及学时安排

实验一MATLAB环境的熟悉与基本运算2学时

实验二MATLAB数值计算实验2学时

实验三MATLAB数组应用实验2学时

实验四MATLAB符号计算实验2学时

实验五MATLAB的图形绘制实验2学时

实验六MATLAB的程序设计实验2学时

实验七MATLAB工具箱Simulink的应用实验2学时

实验八MATLAB图形用户接口GUI的应用实验2学时

实验一MATLAB环境的熟悉与基本运算

一、实验目的

1.熟悉MATLAB开发环境

2.掌握矩阵、变量、表达式的各种基本运算

二、实验基本知识

1.熟悉MATLAB环境:

MATLAB桌面和命令窗口、命令历史窗口、帮助信息浏览器、工作空间浏览器、文件和搜索路径浏览器。

2.掌握MATLAB常用命令

clc

清除命令窗口中内容

clear

清除工作空间中变量

help

对所选函数的功能、调用格式及相关函数给出说明

lookfor

查找具有某种功能的函数但却不知道该函数的准确名称

who

查询工作空间中的变量信息

3.MATLAB变量与运算符

变量命名规则如下:

(1)变量名可以由英语字母、数字和下划线组成

(2)变量名应以英文字母开头

(3)长度不大于31个

(4)区分大小写

MATLAB中设置了一些特殊的变量与常量,列于下表。

表1MATLAB的特殊变量与常量

变量名

功能说明

变量名

功能说明

ANS

默认变量名,以应答

最近一次操作运算结果

realmin

最小的正实数

i或j

虚数单位

INF(inf)

无穷大

pi

圆周率

NAN(nan)

不定值(0/0)

eps

浮点数的相对误差

nargin

函数实际输入参数个数

realmax

最大的正实数

nargout

函数实际输出参数个数

MATLAB运算符,通过下面几个表来说明MATLAB的各种常用运算符

表2MATLAB算术运算符

操作符

功能说明

操作符

功能说明

+

\

矩阵左除

-

.\

数组左除

*

矩阵乘

/

矩阵右除

.*

数组乘

./

数组右除

^

矩阵乘方

'

矩阵转置

.^

数组乘方

.'

数组转置

表3MATLAB关系运算符

操作符

功能说明

==

等于

~=

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

表4MATLAB逻辑运算符

逻辑运算符

逻辑运算

说明

&

And

逻辑与

|

Or

逻辑或

~

Not

逻辑非

Xor

逻辑异或

表5MATLAB特殊运算

符号

功能说明示例

符号

功能说明示例

1:

1:

4;1:

2:

11

.

分隔行

..

分隔列

()

%

注释

[]

构成向量、矩阵

调用操作系统命令

{}

构成单元数组

=

用于赋值

4.MATLAB的一维、二维数组的寻访

表6子数组访问与赋值常用的相关指令格式

指令格式

指令功能

A(r,c)

数组A中r指定行、c指定列之元素组成的子数组

A(r,:

数组A中r指定行对应的所有列之元素组成的子数组

A(:

c)

数组A中c指定列对应的所有行之元素组成的子数组

A(:

数组A中各列元素首尾相连组成的“一维长列”子数组

A(i)

"一维长列"子数组中的第i个元素

A(r,c)=Sa

数组A中r指定行、c指定列之元素组成的子数组的赋值

A(:

)=D(:

数组全元素赋值,保持A的行宽、列长不变,A、D两组元素

总合应相同

5.MATLAB的基本运算

表7两种运算指令形式和实质内涵的异同表

数组运算

矩阵运算

指令

含义

指令

含义

A.'

非共轭转置

A’

共轭转置

A=s

把标量s赋给A的每个元素

s+B

标量s分别与B元素之和

s-B,B-s

标量s分别与B元素之差

s.*A

标量s分别与A元素之积

s*A

标量s分别与A每个元素之积

s./B,B.\s

标量s分别被B的元素除

S*inv(B)

B阵的逆乘s

A.^n

A的每个元素自乘n次

A^n

A阵为方阵,自乘n次

A.^p

对A各元素分别求非整数幂

A^p

方阵A的非整数乘方

A+B

对应元素相加

A+B

矩阵相加

A-B

对应元素相减

A-B

矩阵相减

A.*B

对应元素相乘

A*B

内维相同矩阵相乘

A./B

A的元素别B的对应元素除

A/B

A右除B

B.\A

与上相同

B\A

A左除B

exp(A)

以自然数e为底,分别以A的元素为指数,求幂

expm(A)

A的矩阵指数函数

log(A)

对A的各元素求对数

logm(A)

A的矩阵对数函数

sqrt(A)

对A的各元素求平方根

sqrtm(A)

A的矩阵平方根函数

6.MATLAB的常用函数

表8标准数组生成函数

指令

含义

指令

含义

diag

产生对角形数组(对高维不适用)

rand

产生均匀分布随机数组

eye

产生单位数组(对高维不适用)

randn

产生正态分布随机数组

magic

产生魔方数组(对高维不适用)

zeros

产生全0数组

ones

产生全1数组

size()

返回指定矩阵的行数和列数

表9数组操作函数

指令

含义

diag

提取对角线元素,或生成对角阵

flipud

以数组“水平中线”为对称轴,交换上下对称位置上的数组元素

fliplr

以数组“垂直中线”为对称轴,交换左右对称位置上的数组元素

reshape

在总元素数不变的前提下,改变数组的“行数、列数”

rot90

矩阵逆时针旋转90度

det

方阵的行列式值

rank

矩阵的秩

三、实验内容

1、学习使用help命令,例如在命令窗口输入helpeye,然后根据帮助说明,学习使用指令eye(其它不会用的指令,依照此方法类推)

2、学习使用clc、clear,观察commandwindow、commandhistory和workspace等窗口的变化结果。

3、初步程序的编写练习,新建M-file,保存(自己设定文件名,例如exerc1、exerc2、exerc3……),学习使用MATLAB的基本运算符、数组寻访指令、标准数组生成函数和数组操作函数。

注意:

每一次M-file的修改后,都要存盘。

(1)helprand,然后随机生成一个2×6的数组,观察并记录commandwindow、commandhistory和workspace等窗口的变化结果。

 

(2)学习使用clc、clear,了解其功能和作用。

(3)输入C=1:

2:

20,则C(i)表示什么?

其中i=1,2,3,…,10。

 

(4)输入A=[715;256;315],B=[111;222;333],在命令窗口中执行下列表达式,记录其结果:

A(2,3)A(:

2)A(3,:

)A(:

1:

2:

3)A(:

3).*B(:

2)A(:

3)*B(2,:

)A*BA.*BA^2A.^2B/AB./A

(5)二维数组的创建和寻访,创建一个二维数组(4×8)A,查询数组A第2行、第3列的元素,查询数组A第2行的所有元素,查询数组A第6列的所有元素。

(6)两种运算指令形式和实质内涵的比较。

设有3个二维数组A2×4,B2×4,C2×2,写出所有由2个数组参与的合法的数组运算和矩阵指令。

A+B;A-BC*A,C*BA/BA.*BA.+BA.-BA./BA.^B…A\B

(7)学习使用表8列的常用函数(通过help方法)

(8)学习使用表9数组操作函数。

(9)用reshape指令生成下列矩阵,并取出方框内的数组元素。

 

实验二MATLAB数值计算实验

•实验目的

1、了解伴随矩阵、稀疏矩阵、魔方矩阵、对角矩阵等各种矩阵的创建,掌握矩阵的基本运算

2、掌握矩阵的数组运算

3、掌握多项式的基本运算

4、会求解代数方程

•实验基本知识

1、创建矩阵的方法:

直接输入法、用MATLAB函数创建矩阵

2、矩阵运算:

矩阵加、减(+,-)运算

矩阵乘()运算

矩阵乘方

inv——矩阵求逆

det——行列式的值

eig——矩阵的特征值

diag——对角矩阵

’——矩阵转置

sqrt——矩阵开方

3、矩阵的数组运算:

数组加减(.+,.-):

对应元素相加减

数组乘():

a,b两数组必须有相同的行和列,两数组相应元素相乘

数组除(./,.\):

a./b=b.\a—都是b的元素被a的对应元素除(a除以b)

a.\b=b./a—都是a的元素被b的对应元素除(b除以a)

数组乘方(.^):

元素对元素的幂

数组点积(点乘):

维数相同的两个向量的点乘,其结果是一个标量

数组叉积:

就是一个过两个相交向量的交点且垂直于两个向量所在平面的向量

数组混合积:

先叉乘后点乘

4、多项式运算

poly——产生特征多项式系数向量

roots——求多项式的根

p=poly2str(c,‘x’)(以习惯方式显示多项式)

conv,convs——多项式乘运算

deconv——多项式除运算

多项式微分

polyder(p):

求p的微分

polyder(a,b):

求多项式a,b乘积的微分

[p,q]=polyder(a,b):

求多项式a,b商的微分

5、代数方程组求解

1).恰定方程组的解

方程ax=b(a为非奇异)两种求解方法:

x=inv(a)b—采用求逆运算解方程

x=a\b—采用左除运算解方程

2)超定方程组的解

方程ax=b,m

x=(a'a)-1a'b——求逆法

3)欠定方程组的解

MATLAB可求出两个解:

用除法求的解x是具有最多零元素的解是具有最小长度或范数的解,这个解是基于伪逆pinv求得的。

6、复数运算:

复数的实虚部、模和幅角计算

real_z=real(z)

image_z=imag(z)

magnitude_z=abs(z)

angle_z_radian=angle(z)%弧度单位

angle_z_degree=angle(z)*180/pi%度数单位

三、实验内容

1、生成一个3行3列的随机矩阵,并逆时针旋转90°,左右翻转,上下翻转。

2、已知a=[123],b=[456],求a.\b和a./b

3、数组和矩阵有何不同?

数组中的元素可以是字符等,矩阵中的只能是数,这是二者最直观的区别。

从外观形状和数据结构上看,二维数组和数学中的矩阵没有区别。

但是矩阵作为一种变换或映射算子的体现,矩阵运算有着明确而严格的数学规则。

而数组运算是Matlab软件所定义的规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。

虽然数组运算尚缺乏严谨的数学推理,而且数组运算仍在完善和成熟中,但是它的作用和影响正随着matlab的发展而扩大。

4、已知a=[123;456;780],求其特征多项式并求其根。

5、求解方程1)

2)

6、用两种方法创建符号矩阵,A=[a,2*b]

[3*a,0]

7、对符号方程f=ax2+bx+c求解1)对x求解;2)对a求解。

8、求解微分方程

 

实验三MATLAB数组应用实验

•实验目的

1、掌握字符串数组、单元数组创建及显示、结构数组创建及访问

2、掌握符号表达式的微分和积分运算

•实验基本知识

•字符串数组相关命令

•直接输入法---用单引号或者大括号+单引号

•disp(S)法---S是字符串,作用是显示出S的文本

•char(S)法---S是字符串,作用是显示出S的文本

•input(out,in)法---显示出字符串out的文本并等待终端的输入,in可缺省

•在字符串中用两个单引号来表示一个单引号

•findstr(S1,S2)---在较长字符串里查找较短字符串所在的位置并返回位置值

•str2mat()---字符串转换成矩阵

•str2num()、num2str()---字符串与数值互相转换

•单元数组相关命令

•直接创建法---使用大括号{}、对细胞元素直接赋值

•cell(m,n)---创建一个m*n的空细胞矩阵(所有行的细胞数必须相同)

•celldisp()---逐个显示cell中的每个元素值

•cellplot(C)---用彩色的图形来显示单元型变量C的结构形式

•结构数组相关命令

•直接输入法---使用“.”将结构变量名和元素名连接

格式:

struct_name(record#).field_name=data

•S=struct(‘field1’,V1,’field2’,V2,…)---field为各成员变量名,V为对应的各成员变量的内容

•S=rmfield(S,fields)---将结构数组S中的fields项删除,仍用数组名S表示

•结构体名称.数组名称---在结构数组中调用元素项

•C=strcuct2cell(S)、S=cell2struct(C)---结构数组与单元数组的转换

•map容器

•mapobj=containers.Map({‘key1’,’key2’,…},{‘val1’,’val2’,…})---创建map对象

•keys()、values()---查看map对象

•existingmapobj(newkeysname)=newvalue---在一个map对象中添加新元素

•remove(mapname,’keyname’)---从一个map对象中删除keys/values对

三、实验内容

•创建一个名为S、内容为“matlabprogrammingforengineers.”的字符串,并查找字符串S中字母为“g”出现的位置以及出现的次数。

•创建大小为2╳2的单元数组,其元素分别为:

字符串(‘SunYang’,‘LiuWen’)、字符串数组(char(‘2012001’,’2012002’))、数值矩阵((858990;808788))和细胞数组(’Maths’,’Maths’,’Matlab’)。

•创建一个数组名为student的结构数组,其内容如下表所示:

ID

Name

Age

Sex

Score

3001

zhao

20

F

90

3002

wang

21

M

86

3003

yang

18

F

88

3004

liu

19

F

80

 

实验四MATLAB符号计算实验

•实验目的

1、掌握创建符号表达式和矩阵的方法

2、掌握符号表达式的微分和积分运算

•实验基本知识

1、符号矩阵的创建

1)用matlab函数sym创建矩阵(symbolic的缩写)

命令格式:

A=sym('[]')

2)用字符串直接创建矩阵

2、符号矩阵的修改

直接修改:

可用、键找到所要修改的矩阵,直接修改

3、符号矩阵与数值矩阵的转换

将数值矩阵转化为符号矩阵,函数调用格式:

double(A)

将符号矩阵转化为数值矩阵,函数调用格式:

numeric(A)

4、符号微积分与积分变换

diff(f)—对缺省变量求微分

diff(f,v)—对指定变量v求微分

diff(f,v,n)—对指定变量v求n阶微分

int(f)—对f表达式的缺省变量求积分

int(f,v)—对f表达式的v变量求积分

int(f,v,a,b)—对f表达式的v变量在(a,b)区间求定积分

5、符号代数方程求解

solve(f)——求一个方程的解

solve(f1,f2,…fn)——求n个方程的解

6、符号微分方程求解指令:

dsolve

命令格式:

dsolve(f,g):

f——微分方程,可多至12个微分方程的求解;

g为初始条件,默认自变量为'x',可任意指定自变量't','u'等,微分方程的各阶导数项以大写字母D表示

三、实验内容

1、用符号方法求下列极限

1)

2)

2、用符号方法求下列积分

1)

2)

 

实验五MATLAB的图形绘制实验

一、实验目的

1、学习MATLAB二维、三维图形绘制的基本方法;

2、熟悉和了解MATLAB图形绘制程序编辑的基本指令;

3、熟悉掌握利用MATLAB图形编辑窗口编辑和修改图形界面,并添加图形的各种标注;

4、掌握clf、plot、plot3、subplot、hold、figure、gtext、mesh、surf、cylinder、sphere、polar、bar、hist、pie、area、fill、scatter、stairs、stem、contour等的指令格式和语法。

二、实验基本知识

1、plot(x,y)------绘制由x,y所确定的曲线;

2、多组变量绘图:

plot(x1,y1,选项1,x2,y2,选项2,……);

3、双Y轴绘图:

plotyy()函数;

4、图形窗口的分割;

5、图形编辑窗口的使用。

三、实验内容

(1)绘制下列函数二维图形。

y=k*cos(t),t∈[0,2π],k∈[0.4,1],分布以plot(t,y)、plot(t)、plot(y)、plot(y,t)产生图形并记录观察其不同。

(2)绘制连续调制波形Y=sin(t)sin(9t)及其包络线。

(参考)

(3)绘制向量x=[130.52.52]的饼形图,并把3对应的部分分离出来。

(4)绘制参数方程x=t,y=sin(t),z=cos(t)在t=[07]区间的三维曲线。

(5)用holdon命令在同一个窗口绘制曲线y=sin(t),y1=sin(t+0.25),y2=sin(t+0.5),其中t∈[010]。

(参考)

(6)使用sphere()函数产生球面坐标,绘制网线图和表面图。

 

实验六MATLAB的程序设计实验

一、实验目的

1、熟悉MATLAB程序编辑与设计环境

2、掌握各种编程语句语法规则及程序设计方法

3、函数文件的编写和设计

4、了解和熟悉跨空间变量传递和赋值

二、实验基本知识

1、程序流程控制语句

for循环结构

语法:

fori=初值:

增量:

终值

语句1;

……;

语句n;

end

说明:

1.i=初值:

终值,则增量为1。

2.初值、增量、终值可正可负,可以是整数,也可以是小数,只须符合数学逻辑。

while循环结构

语法:

while逻辑表达式

循环体语句

end

说明:

1、whiIe结构依据逻辑表达式的值判断是否执行循环体语勾。

若表达式的值为真,执行循环体语句一次、在反复执行时,每次都要进行判断。

若表达式的值为假,则程序执行end之后的语句。

2、为了避免因逻辑上的失误,而陷入死循环,建议在循环体语句的适当位置加break语句、以便程序能正常执行。

(执行循环体的次数不确定;每一次执行循环体后,一定会改变while后面所跟关系式的值)

3、while循环也可以嵌套、其结构如下:

while逻辑表达式1

循环体语句1

while逻辑表达式2

循环体语句2

end

循环体语句3

end

if-else-end分支结构

if表达式1

语句1

elseif表达式2(可选)

语句2

else(可选)

语句3

end

end

说明:

1.if结构是一个条件分支语句,若满足表达式的条件,则往下执行;若不满足,则跳出if结构。

2.elseif表达式2与else为可选项,这两条语句可依据具体情况取舍。

3.注意:

每一个if都对应一个end,即有几个if,记就应有几个end。

switch-case结构

语法:

switch表达式

case常量表达式1

语句组1

case常量表达式2

语句组2

……

otherwise

语句组n

end

说明:

1.switch后面的表达式可以是任何类型,如数字、字符串等。

2.当表达式的值与case后面常量表达式的值相等时,就执行这个case后面的语句组如果所有的常量表达式的值都与这个表达式的值不相等时,则执行otherwise后的执行语句。

程序流程控制指令:

break、return、pause

2、函数文件的结构和编写方法

函数只能在函数体内对变量进行操作,也就是只能访问函数本身工作空间中的变量。

M函数文件的结构

(1)函数定义行(function)

(2)H1行(函数帮助文本的第一行)

(3)函数帮助文本

(4)函数体

(5)注释

函数文件编写后,保存时,其文件名必须与函数名相同。

注意:

函数名不要与MATLAB自身的函数命令相同。

三、实验内容:

1、用for循环语句实现求1~100的和。

2、用循环语句实现编写一个求n阶乘的函数文件。

3、已知一维数组A=[2,4,5,8,10],B=[4,6,9,3,4],用for循环语句实现

求和函数可用sum()。

.

 

实验七MATLAB工具箱Simulink的应用实验

一、实验目的:

1、熟悉SIMULINK工作环境及特点

2、掌握线性系统仿真常用基本模块的用法

3、掌握SIMULINK的建模与仿真方法

二、实验基本知识:

1、了解SIMULINK模块库中各子模块基本功能

2、SIMULINK的建模与仿真方法

(1)打开模块库,找出相应的模块。

鼠标左键点击相应模块,拖拽到模型窗口中即可。

(2)创建子系统:

当模型大而复杂时,可创建子系统。

(3)设置仿真控制参数。

三、实验内容

1、建立实现y=sin2tsin3t的Simulink模型,并进行仿真分析,相应的输入输出曲线在示波器上显示。

 

2、根据下列要求和图,完成以下任务:

(1)在Simulink集成环境下建立模型,在给定信号作用点处输入单位给定阶跃响应信号,0.3秒后在扰动信号点输入单位阶跃响应信号,并绘制相应的响应曲线。

(2)计算仿真结果的超调量、上升时间、峰值时间、稳态误差。

超调量:

mp=(1.2072-0.99)/0.99上

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1