MATLAB仿真基础.docx
- 文档编号:11463148
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:33
- 大小:181.72KB
MATLAB仿真基础.docx
《MATLAB仿真基础.docx》由会员分享,可在线阅读,更多相关《MATLAB仿真基础.docx(33页珍藏版)》请在冰豆网上搜索。
MATLAB仿真基础
设计性实验(MATLAB仿真实验)
3.1MATALAB语言概述
MATALAB语言的发展
MATALAB是一种科学计算软件,主要适用于矩阵运算及控制和信息处理领域的分析设计。
它使用方便,输入简洁,运算高效,内容丰富,并且很容易由用户自行扩展,因此,当前已成为美国和其他发达国家大学教学和科学研究中最常用而必不可少的工具。
MATLAB是由美国Mathworks公司与1984年正式推出的,从那时到现在已升级到版本。
随着版本的升级,内容不断扩充,功能更强大。
特别是在系统仿真和实时运行等方面,有很多新进展,更扩大了它的应用前景。
MATLAB是“矩阵实验室”(MATrixLaboratoy)的缩写,它是一种以矩阵运算为基础的交互式程序语言,专门针对科学、工程计算及绘图的需求。
它用解释方式工作,键入程序立即得出结果,人机交互性能好,适应于多种平台。
MATLAB语言在国外的大学工学院中,特别是数值计算用的最频繁的电子信息类学科中,已成为每个学生都掌握的工具了。
它大大提高了课程教学、解题作业、分析研究的效率。
MATLAB语言比较好学,因为它只有一种数据类型,一种标准的输入输出语句,不用“指针”,不需编译,比其他语言少了很多内容;听三、四个小时课,上机练几个小时,就可入门了。
以后自学也十分方便,通过它的演示(demo)和求助(help)命令,人们可以方便地在线学习各种函数的用法及其内涵
MATLAB语言的难点是函数较多,仅基本部分就有700多个,其中常用的有二三百个,要尽量多记少查,可以提高编程效率。
语言的特点
1.矩阵运算:
每个变量代表一个矩阵,它以矩阵运算见长;每个元素都看作复数,所有的运算都对矩阵和复数有效。
(虚部符号可用i或j)
clear%清除内存变量
formatshort%
c1=1-2i,c2=3*(2-sqrt(-1)*3),c3=6+sin(.5)*1j
c4=complex(1,2)%建立复数
c1=
-
c2=
-
c3=
+
c4=
+
c1r=real(c1),c1i=imag(c1),abs_c1=abs(c1),angle_c1=angle(c1)
结果:
c1r=
1
c1i=
-2
abs_c1=
angle_c1=
注意:
(1)所有的标点符号必须是在英文状态下输入。
(2)各指令行可以用逗号或分号隔开,如用分号,则分号前的指令只执行,不显示结果。
(3)在命令窗口中输入指令后,必须按下[enter]键,该指令才会被执行.
(4)%为注释符,即%后面的内容为注释,对MATLAB的计算不产生任何影响。
2.人机界面适合科技人员:
其程序与科技人员的书写习惯相近,易写易读。
矩阵行数列数无需定义。
键入算式即得结果,无需编译。
例如:
简单矩阵
的输入步骤。
(1)在键盘上输入下列内容
A=[1,2,3;4,5,6;7,8,9]
结果:
A=
123
456
789
(2)按[enter]键,指令执行。
注意:
直接输入矩阵时,矩阵元素用空格或逗号”,”分隔,整个矩阵放到方括号“[]”里。
标点符号一定要在英文状态下输入。
(3)指令执行后,矩阵A被保存在MATLAB的工作空间(Workspace)中。
如果用户不用clear指令清除它,或对它重新赋值,那么该矩阵会一直保存在工作空间中,直到本MATLAB指令窗被关闭为止。
(4)MATLAB区分大小写字母。
3.强大而简易的作图功能
(1)能根据输入数据自动确定坐标绘图。
(2)能规定多种坐标系(极坐标,对数坐标等)。
(3)能绘制三维坐标中的曲线和曲面。
(4)可设置不同颜色、线型和视角等。
如果数据齐全,通常只需要一条命令即可出图。
例:
用图形表示离散函数
。
n=(0:
12);%产生一组自变量数据
y=1./abs(n-6);%计算相应点的函数值
plot(n,y,'r*','MarkerSize',15)%用红花标出数据点
gridon%画坐标方格
显示的图形:
图3-1函数
说明:
./表示点除,用于元素对元素的除法。
而/表示矩阵除法。
还有'.*','.^'及'*','^'。
4.智能化程度高
(1)绘图时自动选择最佳坐标。
(2)做数值积分时,自动按精度选择步长。
(3)自动检测和显示程序错误的能力强,易于调试。
5.功能丰富,可扩展性强
MATLAB软件包括基本部分和专业扩展两大部分。
基本部分包括:
矩阵的运算和各种变换;代数和超越方程的求解,数据处理和傅里叶变换,数值积分等等。
扩展部分称为工具箱。
它实际上是用MATLAB的基本语句编成的各种子程序集,用于解决某一方面的专门问题,或实现某一类的新算法。
现在已经有控制系统,信号处理、图像处理、系统辨识、模糊集合、神经元网络和小波分析等数十个工具箱,并且还在继续发展中。
MATLAB的核心内容是它的基本部分,所有的工具箱子程序都是用它的基本语句编写的。
学好这部分内容是掌握MATLAB的关键。
3.1.3MATLAB的工作环境
的工作环境主要由命令窗(CommandWindow)、图形窗(FigureWindow)和文本编辑窗(FileEditor)组成。
1.命令窗(CommandWindow)
CommandWindow是MATLAB中最重要的部分,它是人机交互的主要环境,也是和编译器连接的主要窗口。
用户通过在提示符“>>”后直接输入各种命令并读出相应的结果。
命令窗见MATLAB桌面系统的默认画面。
其左上视窗为当前目录(CurrentDirectory),可切换为工作空间(Workspace);其左下视窗为历史命令(CommandHistory);右半个视窗则为命令窗(CommandWindow)。
常用的窗口命令如下:
clc:
清除CommandWindow里的内容;
clear:
清除内存变量;
home:
光标回到窗口的左上角;
clf:
清除当前Figure窗口的所有非隐藏对象;
close:
关闭当前Figure窗口;
closeall:
关闭所有Figure窗口
工作空间有多种应用功能:
内存变量的查阅、保存和编辑;在命令行下,可以用who,whos查阅MATLAB内存变量;who用于检查现存于工作空间(Workspace)的变量;whos用于检查现存于工作空间的变量的详细资料。
内存变量可以用clear命令清除。
如
clear%清除所有内存变量
a=(1:
7)'
>>
a=
1
2
3
4
5
6
7
who%显示内存变量名
>>
Yourvariablesare:
a
whos%显示内存变量名和尺寸、占用内存空间、类型
>>
NameSizeBytesClassAttributes
a7x156double
cleara%清除变量a
(1)命令窗编辑功能:
键入和修改程序的方法与通常的文字处理相仿。
特殊的功能键为
ESC恢复命令输入的空白状态(即作废命令)
↓调出下一行命令
↑调出上一行(历史)命令
这个功能在程序调试时十分有用。
对于已执行过的命令,如要做些修改后重新执行,就不必重新键入,用↑键调出原命令做修改即可。
(2)主菜单中的编辑(Edit)项功能:
用它可以把屏幕上选中的文字裁剪(Cut)或复制(Copy)下来,放到剪贴板上,然后粘贴(Paste)到任意其他视窗的任何位置上去。
这是MATLAB与其他软件(如Word)交换文件、数据和图形的重要方法。
(3)Debug项是调试程序时使用的。
(4)Desktop项功能:
用它可以改变屏幕上显示的视窗布局。
如显示或隐藏命令窗、历史命令窗、工作空间、当前目录;最大化命令窗等。
(5)Help项功能:
展示详尽的帮助。
(6)在命令行键入help,屏幕上将显示系统中已装入的函数库(即子目录)的名称。
(7)键入help子目录名,如helpelfun,即得出elfun库(初等数学函数库)中各函数名。
(8)键入help函数名,如helpeye,即得到eye函数的意义和用法。
(9)退出MATLAB有两种方法。
一是键入exit或quit,还有一种是用鼠标双击左上角的小方块或单击右上角的×号。
后一种情况属非正常退出,该次进程的所有的命令将不纪录在“历史命令窗中”,故应尽量避免使用。
2.图形窗
通常,只要执行了任一种绘图命令,就会自动产生图形窗。
以后的绘图都在这一个图形窗中进行。
如想再建一个或几个图形窗,则可键入figure,MATLAB会新建一个图形窗,并自动给它依次排序,如果要人为规定新图为图3,则可键入figure(3)。
如要调看已经存在的图形窗n,也应键入fingure(n)。
3.文本编辑窗(M文件编辑窗)
MATLAB程序编制有两种方式。
一种称为命令方式,在命令窗中的命令符“>>”下一行一行地输入命令,计算机每次对一行命令做出反应,像计算器那样;这只能编简单的程序,在入门时可以用这种方式。
程序稍复杂一些,就应把程序写成一个有多行语句组成的文件,即M文件,让MATLAB来执行这个文件;编写和修改这种文件程序就要用到文本编辑器Editor。
文本编辑器可以将程序像文本一样编辑,如复制、粘贴等,非常方便。
一行中可以键入几个命令,用“;”或“,"隔开。
如用“;”则该函数的执行结果不显示(图形函数除外);如用","则该函数的运行结果要显示。
命令窗上方最左边的按钮是用来打开文本编辑器空白页的。
左边第2个按钮是用来打开原有程序文件的。
3.2基本语法
变量及其赋值
在MATLAB内部所有变量均保存成double的形式,即双精度(64位)二进制。
这是为了简化编程,MATLAB省去了许多种数据格式。
MATLAB是基于矩阵运算的,MATLAB中的所有变量或常量都以矩阵形式保存的。
一个数也是矩阵,只不过它是1×1阶的矩阵。
变量名的命名规则如下:
(1)变量名区分大小写。
(2)变量名最多能包括63个字符,其后的字符都被忽略。
(3)变量名必须以一个字母开始,其后可以是任意数量的字母、数字、下划线,字符中间不能留空格。
(4)不允许出现标点符号,因为很多标点符号在MATLAB中有特殊的意义。
(5)MATLAB中的关键字(又称保留字)不能用作变量名。
关键字如下:
Forendifwhilefunctionreturnelseifcaseotherswiseswitchcontinueelsetrycatchglobalpersistentbreak。
矩阵及其元素的赋值
赋值就是把数赋予代表常量或变量的标示符。
MATLAB中的变量或常量都代表矩阵,标量看作1×1阶的矩阵。
赋值语句的一般形式为:
变量=表达式(或数)
例如:
a=[123;456;789]
x=[,sqrt(3),(1+2+3)/5*4]
>>
a=
123
456
789
x=
矩阵的值放在方括号中,同一行元素之间用逗号或空格分开,不同的行则以分号或回车隔开,执行语句要键入[enter]键。
变量的元素用圆括号“()”中的数字(也称为下标)来注明,一维矩阵中的元素用一个下标表示,二维用两个下标,以逗号分开。
三维或更高维数矩阵,可有三个或更多下标。
用户可以单独给元素赋值,如x
(2)=,等。
如果赋值元素的下标超出了原来矩阵的大小,矩阵的行列会自动扩展。
如:
x(5)=abs(x
(1))
a(4,3)=
>>
x=
0
a=
00
可见跳空的元素x(4),a(4,1),a(4,2)被自动赋值。
这种自动扩展维数的功能只适用于赋值语句,在其他语句中若出现超维调用的情况,系统将给出出错提示。
给全行赋值,可用冒号。
如给a的第5行赋值。
键入
a(5,:
)=[5,4,3]
>>
a=
00
把a的第2,4行及第1,3列交点上的元素取出,构成一个新矩阵b。
可键入b=a([2,4],[1,3])
>>
b=
0
要抽去a中的第2、4,5行,可利用空矩阵[]概念。
键入a([2,4,5],:
)=[]
a=
123
789
注意,“空矩阵”是指没有元素的矩阵。
对任何一个矩阵赋值[],就是使它的元素都消失。
这完全不同于“零矩阵”,后者是元素存在,只是其数值为零而已。
可以看出,空矩阵是使矩阵减缩是不可缺少的概念。
复数
MATLB的每一个元素都可以使复数,实数是复数的特例,复数的虚数部分用i或j表示。
这是MATLAB启动时就在内部设定的。
对复数矩阵有两种赋值方法。
(1)将其元素逐个赋予复数,如:
键入z=[1+2i,3+4i;5+6i,7+8i]
z=
++
++
(2)将其实部和虚部分别赋值,如:
z=[1,3;5,7]+[2,4;6,8]*j
z=
++
++
两种方法结果相同。
注意,只有数字和i(或j)的乘积可省略乘号,在上述矩阵式中若省略乘号“*”,就会出错。
另外,如果在前面程序中曾经给i或j赋过其他值,则i,j已经不是虚数符号,这些虚数赋值语句就都不对了。
为此,应使用cleari,j命令把原赋值的i,j清掉,然后再执行复数赋值语句。
MATLAB中的所有的运算符和函数都对复数有效。
例如:
键入f=sqrt(1+2i)
f=
+
基本赋值矩阵
魔方矩阵magic(n)的特点是:
其元素由1到n2的自然数组成;每行、每列及两对角线上的元素之和均等于(n3+n)/2。
单位矩阵eye(n)是n×n阶的方阵,其对角线上的元素为1,其余元素为0。
全1矩阵ones(n)是n×n阶的单位阵。
如:
f1=ones(3,2),f2=zeros(2,3),f3=magic(3),f4=eye
(2)
f1=
11
11
11
f2=
000
000
f3=
816
357
492
f4=
10
01
又如:
g=[1,2,3,4;5,6,7,8;9,10,11,12]
g=
1234
5678
9101112
ones(3)
ans=
111
111
111
size(g)
ans=
34
ones(size(g))
ans=
1111
1111
1111
eye(4)
ans=
1000
0100
0010
0001
eye(2,4)
ans=
1000
0100
eye(4,2)
ans=
10
01
00
00
线形分割函数linspace(a,b,n)在a与b之间均匀地产生n个点值,形成n维向量(步长为(b-a)/(n-1)。
如:
f5=linspace(0,1,5)
f5=
0
大矩阵可由若干小矩阵组成,但必须其行列数正确,恰好填满全部元素。
如键入
fb1=[f1,f3;f4,f2]
fb1=
11816
11357
11492
10000
01000
下面的命令将创建随机矩阵:
randn('state',0)%把正态随机数发生器置零
randn(3)%产生3×3的正态随机阵
ans=
randn(2,5)%产生2×5的正态随机阵
ans=
a=[1:
4;5:
8;9:
12]
a=
1234
5678
9101112
diag(a)%取a的对角元素
ans=
1
6
11
diag(diag(a))%内diag取a的对角元素,外diag利用对角元素生成对角阵
ans=
100
060
0011
数值数组及其运算
引导
数组是由一组实数或复数排成的长方形阵列。
它可以是一维的“行”或“列”,可以是二维或多维的矩阵。
例:
绘制函数y=xe-x在0≤x≤1时的曲线。
x=0:
:
1%定义自变量的采样点取值数组
y=x.*exp(-x)%利用数组运算计算各自变量采样点上的函数值
plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)')%绘图
x=
Columns1through10
0
Column11
y=
Columns1through10
0
Column11
图3-2函数y=xe-x
“.*"实施数组x和数组exp(x)对应元素之间的相乘。
一维数组
1.创建
(1)逐个元素输入法
x=[2pi/2sqrt(3)3+5i]
x=
+
(2)冒号生成法
x=a:
inc:
b
说明:
a是数组的第一个元素;inc是采样点之间的间隔,即步长。
如(b-a)是inc的整数倍,则所生成数组的最后一个元素是b,否则小于b。
注意:
该冒号必须在英文状态下产生。
中文状态下的冒号将导致MATLAB操作错误!
(3)线形分割函数linspace(a,b,n)产生
说明:
a,b分别是生成数组的第一个和最后一个元素。
n是采样总点数。
该命令生成(1×n)数组。
该命令的作用与x=a:
(b-a)/(n-1):
b相同。
2.寻访和赋值
在MATLAB中,可以通过下标来访问单个数组元素。
例如,x
(1)是x的第一个元素。
x
(2)是x的第二个元素,依此类推。
例如:
clear
x=1:
2:
12
x=
1357911
x(3)
ans=
5
x([125])
ans=
139
x(1:
3)
ans=
135
x(3:
end)%end是指一维数组的长度,即最大下标
ans=
57911
x(3:
-1:
1)
ans=
531
x(find(x>5))
ans=
7911
x([12344321])%对元素可以重复访问,使所得数组长度允许大于原数组
ans=
13577531
x(3)=0
x=
1307911
x([14])=[22]%把当前x数组的第一、四个元素都赋值为2
x=
2302911
二维数组
1.创建
可以采用直接输入法。
对于较小输入数组,从键盘上直接输入最简便。
二维数组必须有以下三个要素:
(1)整个数组必须以方括号“[]”为其首尾;
(2)数组的行与行之间必须用分号“;”或回车键[enter]隔离;
(3)数组元素必须由逗号“,”或空格分隔。
例:
a=;b=33/79;
c=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,+i]
c=
+
+
d=c'
d=
-
-
e=c.'
e=
+
+
非数”和“空”数组
1.非数NaN
按IEEE规定,0/0,∞/∞,0×∞等都会产生非数。
该数在MATLAB中用NaN或nan记述。
注意:
(1)NaN参与运算所得结果也是NaN,即具有传递性。
(2)非数没有大小概念,因此不能比较两个非数大小。
2.“空”数组
在旧版本的MATLAB中只有二维“空”数组,用[]表示。
高版本的“空”数组引进了高维数组。
注意:
(1)不要把“空”数组和全零数组混淆。
(2)不要把空数组看成“虚无”,它确实存在。
关系操作和逻辑操作
MATLAB的约定:
(1)在所有关系表达式和逻辑表达式中,作为输入的任何非0数都被看作是“逻辑真”,而只有0才被认为是“逻辑假”。
(2)所有关系表达式和逻辑表达式的计算结果,即输出,是一个由0和1组成的“逻辑数组”。
在此数组中的1表示“真”,0表示“假”。
(3)逻辑数组是一种特殊的数组数组。
1.关系操作
表3-1关系操作符
指令
含义
指令
含义
<
小于
>=
大于等于
<=
小于等于
==
等于
>
大于
~=
不等于
说明:
(1)标量可以与任何数组进行比较。
比较在此标量与数组每个元素之间进行,因此比较结果将与被比较数组同维。
(2)当比较中没有标量时,关系符两边进行比较的数组必修维数相同。
例:
clear;A=1:
9,B=10-A,r0=(A<4),r1=(A==B)
A=
123456789
B=
987654321
r0=
111000000
r1=
000010000
2.逻辑操作
表3-2逻辑运算符
指令
含义
&
与
|
或
~
非
例:
clear;A=1:
9,L1=~(A>5)
L2=(A>3)&(A<7)
A=
123456789
L1=
111110000
L2=
000111000
程序控制语句
下面是MATLAB编程中常用的程序控制语句。
判断if语句
if语句通过判断逻辑表达式的值实现分支算法。
当表达式的逻辑值为真,则执行后面的语句块所包含的指令;否则跳过该语句块。
(1)if逻辑表达式
语句
end
(2)if逻辑表达式
语句1
else
语句2
end
(3)if逻辑表达式1
语句1
elseif逻辑表达式2
语句2
…
else
语句n
end
例:
比较两个数的大小。
x=32;y=86;
ifx>y
'x大于y'
elseifx 'x小于y' elseifx==y 'x等于y' else 'error' end ans= x小于y 循环语句 MATLAB的循环语句有for循环语句和while循环语句两种。 while循环和for循环的区别在于: while循环结构的循环体被执行的次数不是确定的,而for循环结构中循环体的执行次数是确定的。 (1)for循环语句 for循环变量=起始值: 步长: 终止值 循环体 end 例: 从1加到10。 clear; a=0; fori=1: 1: 10 a=a+i; end a a= 55 (2)while循环语句 while表达式 循环体 end 若表达式为真,则执行循环体的内容,执行后再判断表达式是否是真,若不为真,则跳出循环体,向下继续执行。 例: num=0;a=5; whilea>1 a=a/2; num=num+1; end num num= 3 当"a>1"不为真时跳出循环体,共执行了3次循环。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 仿真 基础