⼀,基操1,命令窗⼝中的标点符号:空格:⽤于输⼊变量之间的分隔符以及数组⾏元素之间的分隔符。
逗号:⽤于要显⽰计算结果的命令之间的分隔符;⽤于输⼊变量之间的分隔符;⽤于数组⾏元素之间的分隔符。点号:⽤于数值中的⼩数点。
分号:⽤于不显⽰计算结果命令⾏的结尾;⽤于不显⽰计算结果命令之间的分隔符;⽤于数组元素⾏之间的分隔符。冒号:⽤于⽣成⼀维数值数组,表⽰⼀维数组的全部元素或多维数组的某⼀维的全部元素。百分号:⽤于注释的前⾯,在它后⾯的命令不需要执⾏ 。单引号:⽤于括住字符串。
圆括号:⽤于引⽤数组元素;⽤于函数输⼊变量列表;⽤于确定算术运算的先后次序。⽅括号:⽤于构成向量和矩阵;⽤于函数输出列表。花括号:⽤于构成元胞数组。
下划线:⽤于⼀个变量、函数或⽂件名中的连字符。续⾏号:⽤于把后⾯的⾏与该⾏连接以构成⼀个较长的命令。
“At”号 :⽤于放在函数名前形成函数句柄;⽤于放在⽬录名前形成⽤户对象类⽬录。+,-,*,/,Λ:算术运算符。
2,数值计算结果的显⽰格式:命令含 义范 例
format short短格式(默认)3.1416(⼩数点后4位有效)
format short e短格式科学格式3.1416e+000(5位科学计数)
format long长格式3.141592653589793(15位)
format long e长格式科学格式3.141592653589793e+000
format rat有理格式355/113
format hex⼗六进制格式400921fb54442d18
format bank 银⾏格式3.14(元⾓分格式)
3,命令窗⼝的常⽤控制命令: clc: 清屏。清除命令窗⼝中的所有已显⽰的内容。clear: 删除内存中的变量。
what:列出当前⽬录下的M、MAT、MEX⽂件清单。dir:显⽰当前⽬录或指定当前⽬录下的⽂件。
cd 路径:改变或显⽰当前⼯作⽬录;路径可省略,省略时为显⽰当前⼯作⽬录;cd ..表⽰回到上⼀级⽬录。type:显⽰制定M⽂件的内容。delete:删除⽂件。
which ⽂件名:指出M⽂件、MEX⽂件、⼯作空间变量、内置函数或Simulink模型所在的⽬录。path命令
仅当前⼯作进程有效,重启还原
path(‘新⽬录’ , path )
Add the new path folder to the top of the search path.addpath命令
addpath (’⽬录1’, ‘⽬录2’,… ,参数)
Add the path folder to the top of the search path (默认,控制参数缺省时,添加⾄⾸端)。help命令
help命令可以获得MATLAB命令和M⽂件的帮助信息,如果知道准确的命令名称,使⽤help命令来查找最快捷。help 命令名称lookfor命令
lookfor命令是在所有的帮助条⽬中搜索关键字,常⽤来查找具有某种功能⽽不知道准确名字的命令。
lookfor 关键字 -all打开帮助窗⼝命令:
helpwin、help desk、demo。模糊查询
MATLAB 6.0以上的版本提供了⼀种类似模糊查询的命令查询⽅法,⽤户只需要输⼊命令的前⼏个字母,然后按Tab键,系统就会列出所有以这⼏个字母开头的命令
4,常⽤符号含义特殊变量 ans pi inf或Inf epsrealmaxrealminNaN或nan
i或j
意 义
如果⽤户未定义变量名,系统存储计算结果的默认变量名圆周率π(= 3.1415926...)⽆穷⼤∞值,如1/0
浮点运算的相对精度2^(-52),计算机的最⼩数最⼤的正浮点数,2^(1024)-1最⼩的正浮点数,2^(-1022)不定量,如0/0或inf/inf虚数单位
narginnargoutlasterrlastwarn
5,基础知识:函数输⼊参数个数函数输出参数个数存放最新的错误信息存放最新的警告信息
①MATLAB的基本搜索过程:以>>sin(x)为例,按照以下的顺序进⾏搜索:
⾸先在MATLAB内存中进⾏检查,检查“sin”和“x”是否为⼯作空间的变量或特殊变量; 其次检查“sin”和“x”是否为MATLAB的内部函数(Built-in Function); 然后在当前⽬录上,检查是否有相应的“.m”或“.mex”⽂件存在;
最后在MATLAB搜索路径的所有其他⽬录中,依次检查是否有相应的“.m”或 “.mex”的⽂件存在; 如果都不是,则MATLAB发出错误信息。
②MATLAB⽂件格式(常⽤⽂件类型.m、.mat、 .fig 、.mdl、.mex、.p ) 1. 程序⽂件:程序⽂件即M⽂件(M-File),其⽂件的扩展名为.m。 2.数据⽂件:数据⽂件即MAT⽂件,其⽂件的扩展名为.mat。。 3.图形⽂件:图形⽂件(Figure)的扩展名为.fig
4.模型⽂件:模型⽂件(Model)扩展名为.mdl,可以在“File”菜单中创建Model时⽣成.mdl⽂件。 5. 可执⾏⽂件:可执⾏⽂件即MEX⽂件,其⽂件的扩展名为.mex。 6. 项⽬⽂件:项⽬⽂件的扩展名为.prj。
7. P码⽂件:是对应M⽂件的⼀种预解析版本;当第⼀次执⾏M⽂件时,Matlab需要将其解析⼀次(第⼀次执⾏后的已解析内容会放⼊内存作第⼆次执⾏时使⽤,即第⼆次执⾏时⽆需再解析)
③启动变量编辑器窗⼝的⽅法有: 在⼯作空间窗⼝中双击该变量;
在⼯作空间窗⼝中选择变量,按⿏标右键在快捷菜单中选择“Open…”菜单; 单击⼯具栏中的打开变量(Open Selection)按钮。
④打开M⽂件编辑/调试器窗⼝的⽅法有: 单击MATLAB⼯作界⾯⼯具栏上最左边图标; 单击菜单“File”→“New”→“M-file”创建新M⽂件; 单击MATLAB⼯作界⾯⼯具栏上打开⽂件图标 ;
单击菜单“File”→“Open…”,在出现的“Open”对话框中选择⽂件名后单击“打开”按钮,打开相应⽂件; ⽤⿏标双击当前⽬录窗⼝中的M⽂件,可直接打开相应的⽂件。
⑤程序性能剖析窗⼝⽤来对M⽂件各命令的耗时进⾏分析,打开程序性能剖析窗⼝的⽅法有:单击MATLAB⼯作界⾯⼯具栏上的图标;选择菜单“Desktop”→“Profiler”;在命令窗⼝中输⼊“profile viewer”命令。
6,资源库 国外站点: 国内中⽂站点 国内⼤学BBS
⼆,数值运算⼊门1,变量与数据数据的表达⽅式:采⽤⼗进制表⽰矩阵和数组的概念 :
标量:1×1的矩阵,即只含1个数的矩阵。向量:1×n或n×1的矩阵,即只含1⾏或1列的矩阵
矩阵:1个矩形的数组,即⼆维数组,其中向量和标量都是矩阵的特例数组:是指n维数组,为矩阵的延伸,其中矩阵和向量都是数组的特例。复数:由实部和虚部组成,⽤特殊变量“i”和“j”表⽰虚数的单位。变量的命名应遵循如下规则:
变量名必须以字母打头,之后可以是字母、数字或下划线。 变量名区分字母⼤⼩写。
变量名最多可包含63个字符。从前向后取,超出部分忽略。 变量名不允许使⽤空格、标点符号。 关键字不能作为变量名。函数的调⽤格式为:函数名(变量)
函数的变量即是 MATLAB 的矩阵变量,函数的运算就是将函数运算分别作⽤于函数变量(矩阵)的每⼀个元素。 注意:
1.MATLAB对弧度操作,若为⾓度,则换成弧度。 2.MATLAB系统提供的所有函数名都是⼩写字母。
abs(x):纯量的绝对值或向量的长度angle(z):复数z的相⾓(Phase angle)sqrt(x):开平⽅
real(z):复数z的实部imag(z):复数z的虚部conj(z):复数z的共轭复数
round(x):四舍五⼊⾄最近整数
fix(x):⽆论正负,舍去⼩数⾄最近整数
floor(x):地板函数,即舍去正⼩数⾄最近整数ceil(x):天花板函数,即加⼊正⼩数⾄最近整数rat(x):将实数x化为分数表⽰
rats(x):将实数x化为多项分数展开sign(x):符号函数 (Signum function)。rem(x,y):求x除以y的馀数
gcd(x,y):整数x和y的最⼤公因数lcm(x,y):整数x和y的最⼩公倍数exp(x):⾃然指数pow2(x):2的指数
log(x):以e为底的对数,即⾃然对数或log2(x):以2为底的对数log10(x):以10为底的对数MATLAB常⽤的三⾓函数sin(x):正弦函数cos(x):馀弦函数tan(x):正切函数asin(x):反正弦函数acos(x):反馀弦函数atan(x):反正切函数
atan2(x,y):四象限的反正切函数sinh(x):超越正弦函数cosh(x):超越馀弦函数tanh(x):超越正切函数asinh(x):反超越正弦函数acosh(x):反超越馀弦函数atanh(x):反超越正切函数min(x): 向量x的元素的最⼩值max(x): 向量x的元素的最⼤值mean(x): 向量x的元素的平均值
median(x): 向量x的元素的中位数std(x): 向量x的元素的标准差diff(x): 向量x的相邻元素的差
sort(x): 对向量x的元素进⾏排序(Sorting)length(x): 向量x的元素个数
norm(x): 向量x的欧⽒(Euclidean)长度sum(x): 向量x的元素总和prod(x): 向量x的元素总乘积
cumsum(x): 向量x的累计元素总和cumprod(x): 向量x的累计元素总乘积dot(x, y): 向量x和y的内积cross(x, y): 向量x和y的外积
常⽤数学函数
2,矩阵(1) 直接输⼊法创建矩阵
矩阵的所有元素必须放在⽅括号“[]”内; 矩阵元素之间必须⽤逗号“,”或空格隔开; 矩阵⾏与⾏之间⽤分号“;”或回车符隔开; 矩阵元素可以是任何不含未定义变量的表达式; 标点符号⼀定要在英⽂状态下输⼊。(2) 利⽤MATLAB函数创建特殊矩阵
命 令A=[]
说 明
空矩阵,即没有元素的矩阵
A=eye(n)n维单位阵
A=ones(n,m)A=ones(n)
全部元素都为1的n⾏m列的矩阵全部元素都为1的n阶⽅阵
A=zeros(n,m)全部元素都为0的n⾏m列的矩阵
A=zeros(n)全部元素都为0的n阶⽅阵
A=rand(n,m)元素服从[0,1]区间均匀分布的n⾏m列的随机矩阵
A=rand(n)元素服从[0,1]区间均匀分布的n阶随机⽅阵
A=randn(n,m)元素服从标准正态分布的n⾏m列的随机矩阵
A=randn(n)向量的⽣成
(1). 利⽤冒号“:”运算⽣成向量
元素服从标准正态分布的n阶随机⽅阵
a=m:n ⽣成步长值为1的均匀等分⾏向量,m和n分别代表向量的起始值和终⽌值。
a=m:p:n ⽣成步长值为p的均匀等分⾏向量,m和n分别代表向量的起始值和终⽌值,p 代表向量元素之间步长值。 (2). 利⽤函数linspace()和logspace()⽣成向量
linspace(m,n) ⽣成从m到n之间的100个线性等分点的⾏向量。 linspace(m,n,s) ⽣成从m到n之间的s个线性等分点的⾏向量。 logspace(m,n) ⽣成从10m到10n之间50个按对数等分点的⾏向量。 logspace(m,n,s) ⽣成从10m到10n之间s个按对数等分点的⾏向量。 矩阵的元素(1)矩阵的下标
在 MATLAB 中,矩阵下标的⾏、列号都是从 1 开始的
在MATLAB的内部数据储存结构中,每⼀个矩阵都是⼀个以列为主的向量,因此对于矩阵内各元素的存取是按列来进⾏总排。 冒号“:”表⽰“全部”。 (2)矩阵的赋值
j全下标⽅式:A(i,j)=B给A矩阵的部分元素赋值,则B矩阵的⾏列数必须等于A矩阵的⾏列数。 k单下标⽅式:A(s)=b, b为向量,元素个数必须等于A矩阵的元素个数。
l全元素⽅式:A(:)=B,给A矩阵的所有元素赋值则B矩阵的元素总数必须等于A矩阵的元素总数,但⾏列数不⼀定相等 (3)矩阵元素的删除
在MATLAB中可以对矩阵的单个元素、⼦矩阵块和所有元素进⾏删除操作,就是简单地将其复制为空矩阵(⽤[]表⽰) A=[1 2 3;4 5 6;7 8 9] :⽣成⼀个矩阵⽤于例⼦。 A(1)=[] 删除1个元素 A(:,3)=[] 删除⼀列元素
A=[] 删除所有元素为空矩阵 (4)⽣成⼤矩阵
在MATLAB中,可以通过⽅括号“[ ]”实现将⼩矩阵联接起来⽣成1个较⼤的矩阵 a=[1 2 3;4 5 6;7 8 9] ⽣成⼀个矩阵⽤于例⼦。 [a;a] 连结成6*3的矩阵 [a a] 连结成3*6的矩阵(5)矩阵维数的扩⼤与缩⼩
MATLAB 已定义的矩阵的维数可以扩⼤,也可以缩⼩。如果输⼊的同名矩阵的维数⼩于或⼤于原矩阵维数,MATLAB 认为是原矩阵修改了部分元素或⼦块。增加矩阵的维数时,可以只给出⾮零元素,MATLAB ⾃动将未定义元素设为 0。减⼩矩阵维数时,必须使⽤“[]”命令来对⾏或列进⾏操作,则相应的⾏或列即被删除。
“空矩阵”是指没有元素的矩阵,对任何⼀个矩阵赋值[],就是使它的元素都必须消失掉。(6) 矩阵的翻转
命 令flipud(A)fliplr(A)rot90(A)diag(A)diag(V)tril(A)triu(A)
说 明矩阵作上下翻转矩阵作左右翻转矩阵逆时针翻转90°
提取矩阵A的对⾓元素,返回列向量以列向量V作对⾓元素创建对⾓矩阵
提取矩阵A的下三⾓矩阵提取矩阵A的上三⾓矩阵
triu(A)
(7) 矩阵的⼤⼩
提取矩阵A的上三⾓矩阵
命 令说 明
whos显⽰⼯作空间中存在的变量及⼤⼩
[n,m]=size(A)返回A矩阵的⾏数和列数
n=length(A)返回A矩阵⾏、列数中较⼤值
[n,m]=find(A)或 n=find(A)
给出矩阵⾮零元素的⾏、列标记
复数
MATLAB的每⼀个元素都可以是复数,实数是复数的特例。复数的虚数部分⽤i或j表⽰,这是在MATLAB启动时就在内部设定的。 只有数字和 i的乘积可省略乘号“*” 复数矩阵的⽣成⽅法:
(1)将其元素逐个赋予复数
(2)将其实部和虚部矩阵分别赋值,“*”不能省略
3,MATLAB的基本算术运算符 数学表达式矩阵运算符数组运算符
加减乘除幂
a + ba - ba * ba÷bab( )
a + ba - ba * ba / b 或 b \\ a
a ^ b
a + ba - ba .* ba ./ b 或 b .\\ a
a .^ b
圆括号( )( )
矩阵A和B的维数完全相同时,可以进⾏矩阵加减法运算,MATLAB会⾃动地使得A和B的相应元素相加减。两矩阵维数不等时,不能进⾏该运算。
矩阵与标量的运算完成矩阵的每⼀个元素对该标量的运算。
两矩阵A和B的维数相容时(A的列数等于B的⾏数),可以进⾏乘法运算。矩阵的除法运算实际上是求AX=B的解的过程 MATLAB⽤“^”表⽰乘⽅,求矩阵乘⽅时要求矩阵为⽅阵。
矩阵的转置⽤A’表⽰,若矩阵为复数矩阵,求转置时⾸先对矩阵元素进⾏转置,然后再逐项求取其共轭数值。 矩阵的转置还可⽤A.’表⽰
对于实矩阵⽤(A')或(A.’)求转置结果是⼀样的;然⽽对于含复数的矩阵,则(A')将同时对复数进⾏共轭处理,⽽ (A.’)则只是
将其排列形式进⾏转置。
两个矩阵之间的点运算是两矩阵对应元素的直接运算,因此要求参与运算的两个矩阵的维数⼀致。 矩阵求幂的运算包括矩阵与常数和矩阵与矩阵的幂运算,⽤点运算的形式表⽰。 MATLAB的基本关系运算符及其功能:
运 算 符
==~=><>=
名 称等于不等于⼤于⼩于⼤于等于
<=⼩于等于
关系运算的规则(通常,为了改善程序的可读性,可⽤括号将关系运算表达式括起来。): 参与关系运算的矩阵必须是同维矩阵或其中之⼀为标量。
当参与运算的矩阵之⼀为标量时,关系运算的结果是将矩阵的每⼀个元素与该标量逐⼀进⾏关系⽐较,若关系成⽴则⽐较结果值为“1”,若关系不成⽴则⽐较结果值为“0”。
当参与运算的矩阵是两同维矩阵A和B时,关系运算的结果是将矩阵A 和B 下标相同的对应元素逐⼀进⾏关系⽐较,若关系成⽴则⽐较结果值为“1”,若关系不成⽴则⽐较结果值为“0”。也即关系运算的结果是⽣成⼀个与A 和B 维数相同的矩阵,其元素值为“0”或“1”。 算术运算⽐关系运算具有更⾼的优先权。MATLAB的基本逻辑运算符及其对应功能:
运 算 符
&|~xor
名 称逻辑与逻辑或逻辑⾮与⾮
在逻辑运算中,所有⾮零元素的逻辑值为“真”,⽤代码“1”表⽰,值为零的元素的逻辑值为“假”,⽤代码“0”表⽰。
aba&ba|b~axor(a,b)
1010
1100
1000
1110
0101
0110
逻辑运算的规则
参与逻辑运算的矩阵必须是同维矩阵或其中之⼀为标量。 逻辑运算的结果按照逻辑运算真值表⽣成。
当参与运算的矩阵之⼀为标量时,逻辑运算的结果是将矩阵的每⼀个元素与该标量逐⼀进⾏逻辑运算。
当参与运算的矩阵是两同维矩阵 A 和 B 时,逻辑运算的结果是将矩阵 A 和 B 下标相同的对应元素逐⼀进⾏逻辑运算。逻辑运算的结果是⽣成⼀个与 A 和 B 维数相同的矩阵,其元素值为“0”或“1”。 逻辑字符检查命令及其说明
命 令说 明命 令find找到⾮零元素的序号isinfiniteisempty矩阵为空时得1isnanisinf元素为Inf时得1isrealisstr矩阵为⽂本字符串时得1issparse常⽤的矩阵函数的简短描述
命 令说 明
eig(A)求矩阵的特征值,返回列向量
det(A)⾏列式计算expm(A)矩阵求幂,不是点运算inv(A)求 A 矩阵的逆阵logm(A)矩阵的对数,不是点运算poly(A)求矩阵 A 的特征多项式,返回⾏向量
sqrtm(A)矩阵平⽅根,不是点运算trace(A)
求矩阵 A 对⾓元素之和
⼀些数据处理命令
命 令说 明max
求最⼤元素值
min求最⼩元素值
mean求元素的平均值
说 明
元素为有限值时得1
元素为NaN时得1
矩阵为实数阵时得1
矩阵为稀疏阵时得1
meanstd
求元素的平均值求元素的标准差
median求中间元素值
sum求各元素之和
4,多项式运算多项式的表达与创建:
MATLAB 采⽤将多项式的系数按降幂次序排列⽽形成的⾏向量来表征⼀多项式。 表⽰多项式的⾏向量元素的个数应该为多项式的最⾼幂次加⼀。
函数roots()⽤于对多项式求根,求出的根按列向量存储;函数poly()⽤于由给定的根的列向量求多项式的系数,求出的系数按⾏向量存储。
多项式的根按列向量存储,多项式的系数按⾏向量存储 多项式的四则运算:(1)加法与减法
多项式的加减法为多项式对应元素的加减法。多项式的阶数可以不同,但在多项式定义时,应当补充0元素使其⾏向量元素数⽬相等,否则不能相加减。 (2)乘法
两个多项式相乘由函数conv()来完成,其调⽤格式为:R=conv(A,B) (3)除法
[d,r]=deconv(c,a)命令完成多项式除运算,d:商的系数向量;r:余⼦式的系数向量。 多项式的微分与赋值运算 (1)微分运算
多项式的微分由命令polyder完成 (2)赋值运算
给出x的范围,命令polyval可计算多项式的值。 有理多项式:
MATLAB中的有理多项式是由分⼦多项式和分母多项式表⽰的,可以⽤residue命令进⾏部分分式展开。该命令的形式为: [r,p,k]=residue(num,den)
根据给出的r,p,k的值,同样可以⽤residue命令求出有理多项式形式,命令格式为:[num,den]=residue(r,p,k)
5,字符运算 在MATLAB中,字符串就是⼀个字符数组。在MATLAB系统内部,每⼀个字符都由相应的ASCII码数值进⾏存储,但在屏幕上显⽰的是字符串,除了特殊的⽤途,⼀般情况下我们不访问这些数值。
在MATLAB中所有字符串都⽤单引号界定后输⼊或赋值,单引号必须在英⽂状态下输⼊。字符串的每个字符(空格也是字符)都是相应矩阵的⼀个元素,每个字符占⽤2个字节存储。字符串是以⾏向量的形式存储的 字符串也可以⽤⽅括号合并成更⼤的“串”
建⽴⼆维字符数组与建⽴数据数组⼀样可以直接输⼊,需要加⽅括号,并且每⾏之间⽤分号隔开,但每⾏的字符数⽬必须⼀致。 建⽴⼆维字符数组的另⼀个⽅法是⽤ str2mat 函数把字符串转换为字符数组,这种⽅法允许⽤不⼀样长度的字符串。字符串转换函数:
函数名称
功 能
absblanksdeblankevalfindstrfprintint2strischarlower
字符串到ASCII码转换
空格字符串去除尾部的空格
运⾏字符串(把字符串作为表达式)
在字符串中找另⼀字符串
按照给定格式把⽂本写到⽂件中或显⽰屏上
把整数转换成字符串是字符串为真将字符串变成⼩写
函数名称num2strsetstrsprintfsscanfstr2matstr2numstrcmpstrncmpstrjuststrmatchstrrepupper
功 能将数字转换成字符串将ASCII码转换成字符串按照给定格式将数字转换成字符串按照给定格式将字符串转换成数字将字符串转换成⼀个字符矩阵
将字符串转换成数字
字符串⽐较⽐较前N个字符串调整字符串找到可能的匹配字符串⽤⼀个字符串替代另⼀个将字符串变成⼤写
“[]”建⽴的“空矩阵”是没有元素的矩阵,也不占据内存空间。如果对任何⼀个矩阵赋值为[],就是使它的元素都必须消除掉;⽽“zeros()”建⽴的“零矩阵”为有元素存在的,只是所有元素都为零,占据正常的内存空间。
三,MATLAB 程序设计M⽂件MATLAB命令有两种执⾏⽅式:
交互式命令操作⽅式(interactive mode) 通过命令窗⼝进⾏交互式操作;
M⽂件(M-file) 的编程⼯作⽅式(programming mode)。
将有关命令编成程序存储在⼀个M⽂件中,当运⾏该程序后, MATLAB⾃动依次执⾏该⽂件中的命令,直⾄全部命令执⾏完毕。 M⽂件的编程⼯作⽅式是实际应⽤中的重要执⾏⽅式M⽂件:
⽤MATLAB语⾔编写的程序,称为M⽂件(⽂件名后加.m扩展名)
由若⼲MATLAB命令组合在⼀起,可以完成某些操作,也可以实现某种算法
事实上,Matlab 提供的内部函数以及各种⼯具箱,都是利⽤ Matlab 语⾔开发的 M ⽂件。⽤户也可以结合⾃⼰的⼯作需要,开发⾃⼰的程序或⼯具箱。
M⽂件可以根据调⽤⽅式的不同分为: 命令⽂件(Script File)——脚本⽂件 函数⽂件(Function File) 建⽴M⽂件的⼀般步骤:
打开⽂件编辑器:最简单的⽅法是在操作桌⾯的⼯具栏上选择新建⽂件键(New M- File)或打开已有⽂件键(Open File),也可以在命令窗⼝输⼊命令edit建⽴新⽂件或输⼊edit filename, 打开名为filename 的M⽂件; 编写程序内容:编写新的⽂件或修改已有⽂件;
保存⽂件:⽂件运⾏前必须完成保存操作,与⼀般的⽂件编辑保存操作相同;
运⾏⽂件:在命令窗⼝输⼊⽂件名即可运⾏。如要在编辑器中直接完成运⾏,可在编辑器的Debug菜单下save and run选项,或按Run快捷键,最快捷的⽅法是直接按F5键执⾏运⾏。 命令⽂件(Script File): 是M⽂件中最简单的⼀种
是可⽤于⾃动重复执⾏的⼀组MATLAB命令和函数组合,不需输出输⼊参数;
⽤M⽂件可以调⽤⼯作空间已有的变量或创建新的变量。运⾏过程中产⽣的变量都是全局变量。
建⽴⼀个命令⽂件等价于从命令窗⼝中顺序输⼊⽂件⾥的命令,程序不需要预先定义,只要依次将命令编辑在命令⽂件中,再将程序保存成为扩展名为.m的M⽂件即可。
运⾏命令⽂件时,只需在命令窗⼝键⼊⽂件名即可。
2,程序控制结构 程序控制结构有三种:顺序结构、选择结构和循环结构。任何复杂的程序都由这三种基本结构组成。
顺序结构: 按排列顺序依次执⾏各条语句,直到程序的最后。
这是最简单的⼀种程序结构,⼀般涉及数据的输⼊输出、数据的计算或处理等。 数据的输⼊:input A=input(提⽰信息)
其中 提⽰信息 为字符串,该命令要求⽤户输⼊ A 的值 (可以是数或字符串), 如果是输⼊字符串,也可以使⽤下⾯的⽅法 A=input(提⽰信息, 's')
注:此时输⼊的字符串不要加单引号! 数据的输出:disp disp(X)
输出变量 X 的值,可以是数值矩阵或字符串 程序的暂停:pause
pause 或 pause(n)
其中 n 是延迟时间,以秒为单位;若缺省,则将暂停程序,直到⽤户按任意键后继续 pause off 屏蔽程序中所有 pause 的作⽤ pause on 打开 pause 的作⽤
若想强⾏终⽌程序的运⾏,可以使⽤ Ctrl+c
选择结构: 选择结构 是根据给定的条件成⽴或不成⽴,分别执⾏不同的语句。Matlab ⽤于实现选择结构的语句有 if 语句
if expression (条件)
statements (语句组) end
单分⽀结构
if expression (条件) statements1(语句组1)else
statements2(语句组2)end
双分⽀结构
if expression1 (条件1) statements1(语句组1)elseif expression2 (条件2) statements2(语句组2) ... ...
elseif expressionm (条件m) statementsm(语句组m)else
statements(语句组)end
多分⽀结构 switch 语句
switch expression (表达式) case value1 (表达式1) statement1(语句组1) case value2 (表达式2) statement2(语句组2) ... ...
case valuem (表达式m) statementm(语句组m) otherwise
statement (语句组)end
例⼦
Matlab ⾸先计算 expression的值,然后将它依次与各个 case指令后的检测值进⾏⽐较,当⽐较结果为真时,就执⾏相应的语句组,然后跳出 switch结构。
如果所有的⽐较结果都为假,则执⾏ otherwise后⾯的语句组,然后跳出 switch结构。 otherwise指令可以不出现。
switch后⾯的表达式 expression的值可以是⼀个标量或字符串。 try语句
try
语句组1catch
语句组2end
try语句先试探性执⾏语句组1,如果语句组1在执⾏过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执⾏语句组2。
例⼦
循环结构: 循环结构 是按照给定的条件,重复执⾏指定的语句。Matlab ⽤于实现循环结构的语句有 for 语句和 while 语句 for 循环
for variable=expression statement(循环体)end
表达式 expression 可以是⾏向量,也可以是矩阵
例⼦注意:
不能在 for循环体内改变循环变量的值
为了提⾼代码的运⾏效率,应尽可能提⾼代码的向量化程度,避免 for 循环的使⽤
while expression (条件) statement(循环体)end
例⼦
如果预先就知道循环的次数,则可以采⽤ for 循环;否则,如果预先⽆法确定循环的次数,则可以使⽤ while 循环。
其它流控制语句: break 和 continue
break 语句⽤于终⽌循环的执⾏,即跳出循环 continue 语句⽤于结束本次循环,进⾏下⼀次循环 break 和 continue ⼀般与 if 语句配合使⽤
嵌套:如果⼀个循环结构的循环体⼜包括⼀个循环结构,就称为循环的嵌套,或称为多重循环结构。
3,函数⽂件 如果M⽂件的第⼀个可执⾏⾏以function开始,便是函数⽂件,每⼀个函数⽂件定义⼀个函数。函数⽂件区别于命令⽂件之处在于命令⽂件的变量在⽂件执⾏完成后保留在⼯作空间中函数⽂件内定义的变量只在函数⽂件内起作⽤,⽂件执⾏完后即被清除。 函数⽂件由 function 语句引导:
function 输出形参列表=函数名(输⼊形参列表) % 注释说明部分(可选) 函数体语句(必须)
第⼀⾏为引导⾏,表⽰该 M⽂件是函数⽂件 函数名的命名规则与变量名相同 ( 必须以字母开头 ) 当输出形参多于⼀个时,⽤⽅括号括起来 函数必须是⼀个单独的 M⽂件
函数⽂件名必须与函数名⼀致,通常为函数名.m 以百分号开始的语句为注释语句
第⼀注释⾏为⼤写的函数⽂件名和函数功能简要描述,供lookfor和help使⽤
第⼀注释⾏之后为函数输⼊/输出参数的含义及调⽤格式说明等信息,构成全部在线帮助⽂本 在线帮助⽂本再空⼀⾏之后的注释⾏,包括⽂件编写和修改的信息,⽤于软件档案管理
函数调⽤:
函数调⽤的⼀般格式:[输出实参列表]=函数名(输⼊实参列表) 函数调⽤时,实参的顺序应与函数定义时的形参的顺序⼀致。 递归函数 :
函数可以嵌套调⽤,即⼀个函数可以被其它函数调⽤,甚⾄可以被它⾃⾝调⽤,此时称为递归调⽤。 参数的可调性:
函数所传递的参数具有可调性,这点是与⼀般⾼级语⾔的不同之处。
Matlab ⽤两个永久变量 nargin 和 nargout 分别记录调⽤该函数时的输⼊实参和输出实参的个数。 全局变量与局部变量: 局部变量
函数⽂件中的变量都是局部的,即⼀个函数⽂件中定义的变量不能被另⼀个函数⽂件或其它 M ⽂件使⽤ 全局变量
如果在若⼲个 M⽂件中,都把某个变量定义为全局变量,则这些函数将公共使⽤这⼀变量 全局变量的作⽤域是整个MATLAB⼯作空间,所有的函数都可以对它进⾏存取和修改 定义全局变量是 M⽂件间传递信息的⼀种⼿段。 全局变量的定义:global 变量名列表
变量名列表中的各个变量⽤空格隔开,不能⽤逗号!
全局变量给函数间的数据传递带来了⽅便,但却破坏了函数对变量的封装,降低了程序的可读性,因⽽在结构化程序设计中,全局变量是不受欢迎的。特别是当程序较⼤,⼦程序较多时,全局变量将个程序调试和维护带来不便,故不提倡使⽤全局变量。
4,程序调试 应⽤程序的错误有两类语法错误
包括词法或⽂法的错误,例如函数名的拼写错误、表达式书写错误等。 MATLAB能检测出⼤多数该类错误,给出错误信息,并指出出错的位置。运⾏时的错误
程序的运⾏结果有错误,这类错误也称为程序逻辑错误。 MATLAB系统对程序逻辑错误⽆能为⼒ 直接调试法、⼯具调试法
直接调试法是指利⽤Matlab的相关指令对程序进⾏调试: 将程序执⾏的中间结果输出到命令窗⼝,以⽅便检查 去掉分号
利⽤disp函数显⽰中间变量的值
在适当位置使⽤keyboard函数中断程序,进⼊调试状态,实现交互式调试; 在函数定义⾏前加“%”,使之变成脚本语⾔ 利⽤echo指令,在屏幕上逐⾏显⽰运⾏程序内容 CTL+C强⾏停⽌程序 直接调试法常⽤辅助函数:
常⽤指令:return、echo、input、pause、break
echo可使⽂件命令在执⾏时可见,这对程序的调试和演⽰很有⽤
Keboard请求键盘输⼊命令 Pause等待⽤户反应指令 警告指令:error,warning,lasterr,lastwarn 提⽰指令:warndlg,errordlg⼯具调试法:
(1)在程序可疑处设置断点; (2)执⾏程序;
(3)检查程序运⾏⾄断点处变量当前值 (4)在程序中⼀步步执⾏ (5)结束调试状态。 (6)取消断点。
⼯具调试法——调试菜单项:
1.Debug菜单项 该菜单项⽤于程序调试,需要与Breakpoints菜单项配合使⽤。 Step:单步运⾏
Step In:单步运⾏,调⽤函数时进⼊函数程序
Step Out:在函数中的话跳出函数,否则直接跳⼊下个断点处 Run:运⾏
Go Until Cursor:运⾏到光标处 Breakpoints菜单项
set/clear breakpoint:设置清除断点
set/modify conditional breakpoint:设置或修改条件断点,条件断点可以使程序满⾜⼀定条件时停⽌ enable/diable breakpoints:使断点有效或⽆效 clear breakpoints in all files:清除所有断点
stop if errors/warnings:程序出现错误或警告时停⽌运⾏,进⼊调试但不包括try...catch中的错误 常见错误:
中英⽂输⼊法未注意 习惯⽤i,j作为变量
变量名同函数名⽂件名相同 搜索路径设置不当 调试命令:
除了采⽤调试菜单调试程序外,MATLAB还提供了⼀些命令⽤于程序调试。调试命令的功能和调试菜单命令类似
dbstop in dbstack显⽰当前堆栈的状态dbstatus显⽰所有已设置的断点dbstep执⾏⼀⾏或多⾏代码 dbtype显⽰M⽂件代码和相应的⾏号 MATLAB程序设计原则和技巧: 1、%后⾯的内容是程序的注解,要善于运⽤注解使程序更具可读性。 2、养成在主程序开头⽤clear指令清除变量的习惯,以消除⼯作空间中其他变量对程序运⾏的影响。但注意在⼦程序中不要⽤clear。3、参数值要集中放在程序的开始部分,以便维护。要充分利⽤MATLAB⼯具箱提供的指令来执⾏所要进⾏的运算,在语句⾏之后输⼊分号使其及中间结果不在屏幕上显⽰,以提⾼执⾏速度。 4、程序尽量模块化,也就是采⽤主程序调⽤⼦程序的⽅法,将所有⼦程序合并在⼀起来执⾏全部的操作。5、充分利⽤Debugger来进⾏程序的调试(设置断点、单步执⾏、连续执⾏)6、设置好MATLAB的⼯作路径,以便程序运⾏。 四,MATLAB 符号运算 Matlab 的符号数学⼯具箱可以完成⼏乎所有得符号运算功能。主要包括:符号表达式的运算,符号表达式的复合、化简,符号矩阵的运算,符号微积分、符号作图,符号代数⽅程求解,符号微分⽅程求解等。此外,该⼯具箱还⽀持可变精度运算,即⽀持以指定的精度返回结果。 数值计算特点: 以数值数组作为运算对象,给出数值解; 计算过程中产⽣误差累积问题,影响计算结果的精确性; 计算速度快,占⽤资源少。 符号计算特点: 以符号对象和符号表达式作为运算对象,给出解析解; 运算不受计算误差累积问题的影响; 计算指令简单; 占⽤资源多,计算耗时长。 符号运算与数值运算的区别: 数值运算中必须先对变量赋值,然后才能参与运算 符号运算⽆须事先对独⽴变量赋值,运算结果为标准的符号形式表达。 创建符号对象: MATLAB提供了两个专门创建符号型对象的函数:sym和syms。(1)sym函数 ——创建单个符号变量 格式: A =sym(‘A’) %创建⼀个符号变量A(2) syms函数 ——创建多个符号变量 sym函数⼀次只能定义⼀个变量,使⽤不⽅便。syms函数可以⼀次定义多个符号变量。 格式: syms arg1 arg2 ... ⼀次性地创建多个变量。变量名argN上不需加单引号“'”,变量名之间⽤空格(不能⽤逗号)隔开。 syms函数是sym的简约形式,相当于: arg1 = sym('arg1'); arg2 = sym('arg2'); 符号常量和变量:(1) 符号常量 MATLAB中函数sym( )可以将⼀个数值常量A 定义成⼀个符号常量,调⽤格式为:sym(A) 或 sym(A,flag) 其中flag 为可选参数,分别是‘r’、‘d’、‘e’或‘f ’,它们将数值量转换成符号量并以各⾃不同的格式表达其结果。 选项 意 义 r 默认值,⽤有理数格式表达符号量,如分式p/q、指数式10^n 或2^n开⽅式 sqrt(p)等 d⽤⼗进制数格式表达符号量(默认显⽰精度32 位) e⽤带有机器浮点误差的有理数格式表达符号量 f(2)符号变量 ⽤浮点数格式表达符号量 符号变量也称⾃由变量,是内容可变的符号对象 符号变量通常是指⼀个或⼏个特定的字符,不是指符号表达式。⽤户可以将⼀个符号表达式赋值给⼀个符号变量。 符号变量命名规则和数值变量的命名规则相同 定义符号变量有两种⽅法: 使⽤sym函数 使⽤syms函数创建符号表达式: 符号表达式是由符号常量、符号变量、符号函数运算符以及专⽤函数连接起来的符号对象。符号表达式包括符号函数或符号⽅程。符号函数没有等号,⽽符号⽅程必须有等号。 MATLAB在内部把符号表达式表⽰成字符串,以与数字变量或运算相区别,否则,这些符号表达式⼏乎完全像基本的MATLAB命令。创建符号表达式有2种⽅式: ⽤sym函数直接建⽴符号表达式; 使⽤已定义的符号变量组成符号表达式。 (1)⽤函数sym⽣成符号表达式 格式: 符号变量名=sym('符号字符串') 创建⼀个符号标量,并⽣成表达式。其中符号字符串可以是常量、变量、函数或表达式。 (2) ⽤已经定义过的变量⽣成符号表达式 符号表达式包括符号函数和符号⽅程。符号函数是由数字和变量组成的代数式,⽽符号⽅程则是由表达式和等号组成的等式。 MATLAB中只能⽤sym函数创建符号⽅程,格式为: equ=sym(‘equation’)创建符号矩阵: (1)⽤sym函数创建符号矩阵 命令格式: A=sym('[ ]') 符号矩阵内容同数值矩阵。矩阵元素可以是任何不带等号的表达式(元素长度可以不同),矩阵⾏之间⽤“;”隔开,各元素之间⽤“,”或空格隔开。 (2) 字符串直接输⼊法 这种⽅法类似于数值矩阵的创建⽅法,不需要使⽤sym函数,但需保证同⼀列中各元素字符串长度相同(在较短的字符串前后可⽤空格补齐) 将数值矩阵转换为符号矩阵: 在MATLAB中,数值矩阵不能直接参与符号运算,必须先转换为符号矩阵,转换过程由系统内部⾃动完成,也可通过命令形式进⾏转换。 转换命令: S=sym(M) %M为待转换的数值矩阵,S为符号矩阵 不论原来数值矩阵元素是分数还是浮点数,转换后符号矩阵都以最接近原数的精确有理式形式给出。 符号矩阵的索引和修改: 符号矩阵的检索⽅法与数值矩阵完全相同。修改⽅法有两种: 检索后直接修改; 使⽤替换函数 A1=subs(A, ‘new’, ‘old’) %A为待修改的矩阵,new、old分别为替换后和替换前矩阵元素中变量名、字符串等。 测量符号矩阵的⼤⼩: ⽤函数size( )可以得到符号矩阵的⼤⼩(即⾏、列数)。 符号矩阵的基本运算: 1) 基本运算符:+、-、*、\\、/、.*、.\\、./、.^、’ 、.’ 2) 三⾓函数与反三⾓函数:sin、cos、tan、… … 3) 指数、对数函数:sqrt、exp、log、… … 4) 复数函数:real、imag、conj、 abs 5) 矩阵函数:det、inv、rank、 … … 6) 矩阵元素的抽取:diag、tril、triu 相关函数: findsym: 查找符号表达式中的符号变量 findsym(f) 按字母顺序列出符号表达式 f 中的所有⾃由变量findsym(f,N) 列出 f 中距离 x 最近的 N 个⾃由变量(i,j 除外) subs:符号替换 subs(f): ⽤当前⼯作空间中存在的变量值,替换 f中所有出现的相同的变量,并进⾏简化计算。 subs(f,x,a):⽤ a替换 f 中的 x;a 是可以是 数/数值变量/表达式 或 符号变量/表达式。 若x与a为相同⼤⼩的向量或矩阵,则⽤a中相应的元素替换x中的元素; 若f,x为标量,⽽a是向量或矩阵,则f与x将扩展为与a相同形状的向量或矩阵。六种常⽤符号运算:因式分解:factor展开函数: expand合并同类项: collect collect(f,v): 按指定变量 v 的次数合并系数; collect(f): 合并 f 中的默认⾃变量的各项系数简化函数: simple 和 simplify simple(f) 对 f 尝试多种不同的算法简化,返回其中最短的简化形式 [R,HOW]=simple(f) R为f的最短简化形式,HOW中记录的为简化过程中使⽤的主要⽅法。 分式通分: numden [N,D]=numden(f): N为通分后的分⼦,D为通分后的分母 嵌套形式的多项式 求极限: limit(f,x,a): limit(f,a): 计算默认⾃变量趋向于a时f的极限 limit(f): 计算 a=0时的极限 limit(f,x,a,’right’):右极限 limit(f,x,a,’left’):左极限计算导数: diff(f,’v’): 计算 f 关于变量 v 的导数 diff(f): 计算 f 关于默认⾃变量的导数 diff(f,n),diff(f,’v’,n),diff(f,n,’v’): n次求导 计算积分: int(f,v,a,b):计算定积分 int(f,a,b): 计算 f 关于默认⾃变量 的定积分 int(f,v):计算不定积分 int(f):计算 f 关于默认⾃变量 的不定积分 符号求和: symsum(f,v,a,b): 求和 symsum(f,a,b): 关于默认⾃变量 求和。 代数⽅程的符号求解: 求解线性代数⽅程组的函数linsolve,调⽤格式为:linsolve(A,b) 求解⾮线性⽅程组的函数是solve,调⽤格式为:solve('eqn1','eqn2',…,'eqnN','var1,var2,…,varN')常微分⽅程的符号求解: 求解常微分⽅程的函数dsolve。调⽤格式为:dsolve('eqn1','condition','var') 该函数求解微分⽅程eqn1在初值条件下的特解。 参数var描述⽅程中的⾃变量符号,省略时按缺省原则处理,若没有给出初值条件condition,则求⽅程的通解。dsolve在求微分⽅程组时的调⽤格式为:dsolve('eqn1','eqn2',…,'eqnN','condition1',…,'conditionN','var1',…,'varN') 函数求解微分⽅程组eqn1、…、eqnN在初值条件 conditoion1、…、conditionN下的解,若不给出初值条件,则求⽅程组的通解,var1、…、varN给出求解变量。复合函数计算:compose: compose(f,g): 返回f(g(y)),其中f=f(x),g=g(y),x,y 分别是 f 和 g 的默认⾃变量。 compose(f,g,z):返回f(g(z)),其中x,y 分别是 f,g的默认⾃变量,最后⽤符号变量z代替y。 compose(f,g,v,z):返回f(g(z)),v为f中指定的⾃变量,令v=g(z),代⼊ f=f(v)。 compose(f,g,v,w,z):返回f(g(z)),其中v,w分别为f,g的指定⾃变量,即将v=g(w)代⼊f(v),最后⽤z代替w计算反函数:finverse: finverse(f): 返回f关于默认⾃变量的反函数,若f的反函数g存在,则有g(f(x))=x。 finverse(f,v): 返回f关于⾃变量v的反函数g,即 g(f(v))=v。积分变换: 1. 傅⽴叶(Fourier)变换 fourier(fx,x,t) 求函数f(x)的傅⽴叶像函数F(t)。 ifourier(Fw,t,x) 求傅⽴叶像函数F(t)的原函数f(x)。 2. 拉普拉斯(Laplace)变换 laplace(F,x,t) 求函数f(x)的拉普拉斯像函数F(t) ilaplace(L,t,x) 求拉普拉斯像函数F(t)的原函数f(x)。 积分变换的应⽤: 级数的符号求和:求和函数symsum,调⽤格式为:symsum(expr, v, a, b ) 函数的泰勒级数:将函数展开为幂级数的函数taylor,其调⽤格式为:taylor(f, n, v,a)。将函数f在a处展开到变量v的(n-1)次幂 五,数据和函数的可视化离散数据和离散函数的可视化: 任何⼆元实数标量对(x,y)可⽤平⾯上的⼀个点表式;任何⼆元实数向量对(x,y)可⽤平⾯上的⼀组点表⽰。对于离散实函数 yn=f(xn),当 xn以递增(或递减)次序取值x=[x1,x2,…,xN]T时,根据函数关系可求得同样数⽬的yn,y=[y1,y2,…,yN]T。当把这向量对⽤直⾓坐标中的点序列图⽰时,就实现了离散函数的可视化。 连续函数的可视化: 与离散函数可视化⼀样,进⾏连续函数可视化也必须先在⼀组离散⾃变量上计算相应的函数值,并把这⼀组“数据对”⽤点图⽰。但这些离散的点不能表现函数的连续性。 为了进⼀步表⽰离散点之间的函数情况,在MATLAB中,有两种常⽤处理⽅法: 对区间进⾏更细的分割,计算更多的点,去近似表现函数的连续变化; 把两点⽤直线连接,近似表现两点间的(⼀般是⾮线性的)函数性状。 注意:倘若⾃变量的采样点数不⾜够多,则⽆论哪种⽅法都不能真实地反映原函数。 ⼆维曲线绘制的基本指令plot: plot —— 最基本的⼆维图形指令 plot的功能: plot命令⾃动打开⼀个图形窗⼝Figure ⽤直线连接相邻两数据点来绘制图形 根据图形坐标⼤⼩⾃动缩扩坐标轴,⾃动标注数据标尺及单位标注 1. 基本调⽤格式plot (x,y,‘s') 输⼊量 (x,y,‘s’) 称为平⾯绘线三元组 (1) ⼀维数组(x,y)指定采样点的横坐标和纵坐标。 (2) ’ s ’是字符串,⽤来设定“离散点形” 或/和“连续线型”,也指定“点线⾊彩”。颜⾊字符串⽤英⽂单词的前1~3个字母,如yellow—yel(或y或ye)表⽰等。 (3) 若没有第三个输⼊量,将采⽤默认设置:蓝⾊细实线。 离散数据点形允许设置值:符号 . + * 含 义 实⼼点 ⼗字符 ⽶字符 符号 d h o 含 义 菱形符 diamond 六⾓星 hexagram 空⼼圆圈 * ^ ⽶字符 朝上三⾓符 o p 空⼼圆圈 五⾓星 pentagram < > v 朝坐三⾓符 朝右三⾓符 朝下三⾓符 s x ⽅块符 square 叉字符 连续线型允许设置值:符号含义 - 实线 : 虚线 -. 点划线 -- 双划线 点线⾊彩允许设置值: 符号 b g r c m y k w 含义 蓝 绿 红 青 品红 黄 ⿊ ⽩ 2. plot的衍⽣调⽤格式 (1) 单⾊或多⾊绘制多条曲线plot(X,Y,’s’) X、Y是均为(m×n)矩阵时,则以X、Y对应列元素为横、纵坐标分别绘制n条曲线。 X、Y之⼀是⼀维数组,且数组长度与另⼀个矩阵输⼊量的“⾏数”(或“列数”)相等时,将绘制出“列数”(或“⾏数”)条曲线。 ’s’ ⽤来指定多条曲线⽤同⼀⾊彩绘制。 X、Y均是⼀维数组时,就是基本调⽤格式。 plot(X,Y) 指令采⽤细实线绘制多条彩⾊曲线 (2)多三元组绘制多条曲线:plot(x1,y1,’s1’,x2,y2,’s2’) 在此格式中,每个绘线“三元组”(X, Y, ’s’)的结构和作⽤,与plot(X,Y,’s’) 相同。不同的“三元组”之间没有约束关系。 (3)单输⼊量绘线:plot(Y) Y是实向量时,以该向量元素的下标为横坐标、元素值为纵坐标画出⼀条连续曲线。 Y是实矩阵时,则按列绘制每列元素值相对其下标的曲线。图中曲线数等于Y阵列数。 Y是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线 3. plot的属性可控调⽤格式:plot(x,y, 'PropertyName', PropertyValue,…) 含义点、线颜⾊线 型线 宽点 形 状点 ⼤ ⼩ 常⽤的坐标控制指令: 属性名ColorLineStyleLineWidthMarkerMarkerSize 属性值[Vr,Vg,Vb], 取 [0,1] '-', ':', '-.', '-'正实数'd', '+', …正实数 说明默认为'b'默认为实线默认为0.5可通过s设置默认为6.0 坐标轴控制⽅式、取向和范围坐标轴的⾼宽⽐ 指 令含 义指 令含 义 axis auto 使⽤缺省设置 axis equal 纵、横轴采⽤等长刻度axis manual使当前坐标范围不变axis fill 在manual⽅式下起作⽤,使坐标充满整个绘图区 axis off取消轴背景axis image 纵、横轴采⽤等长刻度,且坐标框紧贴数据范围axis on使⽤轴背景axis normal 缺省矩形坐标系axis ij 矩阵式坐标,原点在左上 ⽅ axis square 产⽣正⽅形坐标系 axis xy普通直⾓坐标,原点在左 下⽅ axis tight 把数据范围直接设为坐标范围 Axis(V)⼈⼯设定坐标范围。设定V=[x1,x2,y1,y2];植:⼆维,4个;三axis vis3d保持⾼宽⽐不变,⽤于三维旋V=[x1,x2,y1,y2,z1,z2]; 维,6个 转时避免图形⼤⼩变化 说明:坐标范围设定向量V中的元素必须服从:x1 grid 是否画分格线的双向切换指令(使当前分格线状态翻转) grid on 画出分格线 grid off 不画分格线 box 坐标形式在封闭式和开启式之间切换指令 box on 使当前坐标呈封闭形式 box off 使当前坐标呈开启形式 默认设置:不画出分格线,所画坐标呈封闭形式。 图形标识 图形标识包括:图名(Title)、坐标轴名(Label)、图形注释(Text)和图例(Legend)。 标识指令的最简捷使⽤格式如下: xlabel(S) 横坐标轴名 title(S) 书写图名 ylabel(S) 纵坐标轴名 legend(S1,S2,…) 绘制曲线所⽤线型、⾊彩或数据点形图例 text(xt,yt,S) 在图⾯(xt,yt)坐标处书写字符注释 图形标识⽤的希腊字母: 指令字符指令字符指令字符指令字符 指令\\alpha\\beta\\gamma\\Gamma\\delta\\Delta 字符αβγГδΔ 指令\heta\\Theta\\iota\\kappa\\lambda\\Lambda 字符θΘικλΛ 指令\\Xi\\pi\\Pi\\rho\\sigma\\Sigma 字符ЕπΠρσΣ 指令\\phi\\Phi\\chi\\psi\\Psi\\omega 字符φΦχψΨω \\epsilonε\\muµ\auτ\\OmegaΩ \\zetaζ\\Nuν\onυ \\eta 指令'sin\\bezt' η\\xiξ\\UpsilonY 效果sinβ 指令'\\zeta\\omega' 效果ξω 指令 '\\itA{\\in}R^{m\imesn}' 效果A Rm×n 标识指令中字符的精细控制: 上下标的控制指令 : 举例 分类 指令 arg取值 ⽰例指令 效果 上标^{arg}任何合法字符'\\ite^{-t}sint' x e-tsint 下标_{arg}任何合法字符'\\x~{\\chi}_{alpha}^{2}(3)' 字体式样设置规则 : ⽰例指令 '\\fontname{courier}Example 1' '\\fontname{⾪书}范例2' 效果Example1范例2 字样指令arg取值 arial; courier; roman;宋 体; ⾪书;⿊体 bf (⿊体) 名称\\fontname{arg} 风格\\arg it (斜体1) bf (斜体2) '\\bf Example 3''\\itExample 4' Example 3Example 4 bf (正体) x ⼤⼩ \\fontsize{arg} 任何合法字符 '\\x~{\\chi}_{alpha}^{2}(3)' 多次叠绘、双纵坐标和多⼦图: 1. 多次叠绘 实际应⽤中,还会遇到在已经存在的图上再绘制⼀条或多条曲线的情况。MATLAB提供了以下指令: hold on 使当前轴及图形保持⽽不被刷新,准备接受此后将绘制的新曲线 hold off 使当前轴及图形不再具备不刷新的性质 hold 当前图形是否具备刷新性质的双向切换开关 2. 双纵坐标图 在实际应⽤中常常提出这样⼀种需求:把同⼀⾃变量的两个不同量纲、不同数量级的函数量的变化绘制在同⼀张图上。 plotyy(X1,Y1,X2,Y2) %以左、右不同纵轴绘制X1-Y1,X2-Y2两条曲线 plotyy(X1,Y1,X2,Y2,FUN) %以左、右不同纵轴把X1-Y1,X2-Y2绘制成绘图函数名FUN指定形式的两条曲线。 plotyy(X1,Y1,X2,Y2,FUN1,FUN2) %以左,右不同纵轴 把X1-Y1,X2-Y2绘制成绘图函数名FUN1,FUN2指定的不同形式的两条曲线。 3. 多⼦图 MATLAB允许⽤户在同⼀图形窗中布置⼏幅独⽴的⼦图,具体指令是: subplot(m,n,k) 使(m×n)幅⼦图中的第k幅成为当前图。 subplot(‘position’,[left bottom width height]) 在指定位置上开辟⼦图,并成为当前图。 获取⼆维图形数据的指令: ginput:[x,y]=ginput(n) ⽤⿏标从⼆维图形上获取n个点的数据坐标(x,y)。 该指令仅适⽤于⼆维图形。 具体操作⽅法:指令运⾏后,会把当前图形从后台调到前台,同时⿏标光标变为⼗字叉;⽤户可移动⿏标,使⼗字叉移到待取坐标点;点动⿏标左键,便获得该点数据;此后,⽤同样的⽅法,获取其余点的数据;当n个点的数据全部取到后,图形窗便退回后台,返回到ginput执⾏前的环境 gtext:gtext(arg), ⽤⿏标把字符串或字符串异质(元胞)数组arg放置到图形上。 该指令对⼆维、三维图形都适⽤。 具体操作⽅法:指令运⾏后,当前图形窗⾃动由后台转为前台,⿏标光标变为⼗字叉;移动⿏标,使⼗字叉移到希望的位置;点动⿏标右键,arg所承载的字符将被放在紧靠⼗字叉点的“第⼀象限”位置。 legend:legend(arg,pos) 在指定位置建⽴图例;legend off 擦除当前图上的图例 说明: 输⼊变量arg是图例中的说明⽂字注释。 输⼊变量pos是图例在图上位置的指定符,它可取下表中的值。 Legend在图形窗中产⽣后,可⽤⿏标对其进⾏拖拉,即把⿏标光标移到图例上,按住⿏标左键;图例将随⿏标移动,直到满 意位置;放开按键便完成操作。pos取值图例位置 0⾃动取最佳位 1 右上⾓(缺省值) 2左上⾓ 3左下⾓ 4右下⾓ -1图右侧 三维曲线和曲⾯图:1 三维线图指令plot3: plot3(X,Y,Z ’s’) plot3(X1,Y1,Z1,'s1', X2,Y2,Z2,'s2', …) X,Y,Z是同维向量时,则绘制以X,Y,Z元素为x,y,z坐标的三维曲线. X,Y,Z是同维矩阵时,则以X,Y,Z对应列元素为x,y,z坐标分别绘制曲线.曲线条数等于矩阵列数 s,s1,s2的意义与⼆维情况相同,是主要⽤于指定线型,⾊彩,数据点形的选项字符串。 ⼆维图形的所有基本特性对三维图形全都适⽤ 定义三维坐标轴⼤⼩: axis([xmin xmax ymin ymax zmin zmax ] ) grid on(off) 绘制三维⽹格 text(x,y,z,‘string’) 三维图形标注 ⼦图和多窗⼝也可以⽤到三维图形中 2 三维曲⾯/⽹线图: (1)三维图形的数据准备 1)确定⾃变量x,y的取值范围和取值间距.如x=x1:dx:x2; y=y1:dy:y2 2)构成xy平⾯上的⾃变量格点矩阵: [X,Y]=meshgrid(x,y); 3)计算在⾃变量采样格点上的函数值,即Z=f(X,Y) x —— 1×m数组, y —— 1×n数组 ⽣成X,Y格点坐标 —— [X,Y]=meshgrid(x,y) X由x(1×m)按⾏放置,再纵向扩展n⾏ Y由y(1×n)按列放置,再横向扩展m⾏ 结果:X和Y均成为n×m矩阵 表达式点运算 —— Z=X.^2+Y.^2 X, Y, Z是n×m的数组,维数可任定 默认⽅位⾓:-37.5º,俯⾓30º。 (2) 绘制曲⾯/⽹线图基本指令格式 mesh(Z)--->以Z矩阵列、⾏下标为x,y轴⾃变量,画⽹线图. mesh(X,Y,Z)--->最常⽤的⽹线图调⽤格式 mesh(X,Y,Z,C)--->最完整的格式,画由C指定⽤⾊的⽹线图 surf(Z)--->以Z矩阵列,⾏下标为x,y轴⾃变量,画曲⾯图. surf(X,Y,Z)--->最常⽤的曲⾯图调⽤格式 surf(X,Y,Z,C)--->最完整调⽤格式,画由C指定⽤⾊曲⾯图. 在最完整的调⽤格式中,四个输⼊变量都是维数相同的矩阵。X,Y是⾃变量,格点矩阵,Z是格点上的函数矩阵。C指定点的⽤⾊,可以缺省,此时取C=Z单输⼊变量格式绘图时,把Z矩阵的列下标当作x坐标轴的⾃变量,把Z的⾏下标当作y坐标轴的⾃变量。 3 曲⾯/⽹线图的精细修饰 (1)视⾓控制view 改变观察点是获得较好三维视觉效果的重要途径. ⼀般⽽⾔,三维图形的观测⾓度是由⽅位⾓(Azimuth)及仰⾓(Elevation)来决定 view([az,el])--->通过⽅位⾓,俯视⾓设置视点. view([vx,vy,vz])--->通过直⾓坐标设置视点. 对⼆维图形⽽⾔,默认值为 az = 0°,el = 90°; 对三维图形⽽⾔,默认值为 az = -37.5°,el = 30°. (2) ⾊彩控制:Colormap(CM) %设置当前图形窗的着⾊⾊图为CM。 ⾊图为(m×3)矩阵,它的每⼀⾏是RGB三元组。 预定义⾊图矩阵是由[0,1]区间数据组成的(64×3)矩阵. Jet是默认⾊图。 (3)浓淡处理 shading options % options可取以下⽅式: 指令 shading facetedshading flat 功能 瓷砖”的颜⾊是均匀⼀致的,⽽且同时显⽰“瓷砖”交接的“边”。(此为缺省值) “瓷砖”的颜⾊是均匀⼀致的。 shading interp 使⽤双线性插值来使“瓷砖”根据四顶点的颜⾊产⽣连续的变化 (4)透明控制 alpha(v):0 线性数据:使曲⾯的数据点的透明度按照某个指定的维数的⽅向线性变化 矩阵:使每个数据点选取不同的透明度 alpha(v):0 style属性表⽰光源形式;选项有'infinite'和'local'两个取值,分别表⽰⽆限远的平⾏光源和近光源。 position属性表⽰光源位置。position属性的选项取三维坐标点组成的向量形式[x,y,z]。 Option3,对于远光,表⽰光线穿过改点射向原点;对于近光,表⽰源的位置 默认设置:⽩光,⽆穷远,穿过[1,0,1]射向坐标原点。 (6)照明模式lighting lighting options 该指令只有在light指令执⾏后才起作⽤。 指令 功能 flat⼊射光均匀洒在图形对象的每个⾯上(缺省模式) gouraud 先对顶点颜⾊进⾏插补,再对顶点勾画的⾯⾊进⾏插 补,⽤于曲⾯表现。 phong 对顶点处法线进⾏插值,再计算各像素的反光,表现效 果最好,但费时。 none关闭所有的光源。 (7) 控制光反射的材质指令material 指令 功能 shiny 使对象⽐较明亮,镜⾯反射额较⼤,反射光的颜⾊取 决于光源的颜⾊。 dull 使对象⽐较暗淡,漫反射额较⼤,反射光的颜⾊取决 于光源的颜⾊。 metal 使对象有⾦属光泽,反射光的颜⾊取决于光源的颜⾊ 和⼟星表⾯的颜⾊(此为缺省值) default返回到Matlab缺省值 4 透视,镂空和裁切 (1) 图形的透视 matlab在采⽤缺省设置画mesh图形时,对叠压在后⾯的图形采取了消隐措施,若需要透视效果,可以通过相关的指令来实现. hidden off--->透视被叠压的图形 hidden on--->消隐被叠压的图形 (2) 图形的镂空 (3) 裁切 由NaN处理的图形不会产⽣切⾯,为了看清图形⽽需要表现切⾯,那么应该把被切部分强制为零. ⾼维可视化: 1 ⼆维半图指令pcolor, contour, contourf动态图形: 彗星状轨迹图 comet(x,y,p) ⼆维彗星轨线 comet(x,y,z,p) 三维彗星轨线 p 指定彗星体的长度p*length(y),缺省的p值为0.1。三维图形中彗星体的长度p*length(z) ⾊图的变幻 matlab为颜⾊的动态变化提供了⼀个指令spinmap。它的功能是使当前图形的⾊图做循环变化,以产⽣动画效果.该指令不涉及图形对象特性的操作,只限于对⾊图的操作。该指令只对256⾊设置有效。 spinmap--->使⾊图周期旋转3s spinmap(t)--->使⾊图周期旋转ts spinmap(inf)--->使⾊图⽆限制旋转下去,⽤Ctrl+C键终⽌旋转 spinmap(t,inc)--->分别⽤t,inc(缺省为2)控制⾊图旋转的时间和快慢 spinmap(t,inc)--->分别⽤t,inc(缺省为2)控制⾊图旋转的时间和快慢 3,影⽚动画: matlab⽀持影⽚动画(movie):先把⼀组⼆维或三维图形存储起来,然后再把这组图形回放。由于“视觉残留”,于是产⽣动画效果。 M(i)=getframe--->对当前图形拍照后产⽣的数据向量依次存放于画⾯结构数组中。 movie(M,k)--->以不超过每秒12帧的速度把M中的画⾯播放k次。 由M(i)=getframe所产⽣的M(i)是⼀个结构数组,它有两个域: M(i).cdata和M(i).colormap 动画的⼏个典型的产⽣⽅法: (1)改变某参数,获得⼀组画⾯,如驻波,⾏波的产⽣. (2)对产⽣的某三维图形,改变观察⾓,获得⼀组画⾯.(3)对产⽣的某三维图形,运⽤rotate旋转指令,获得⼀组画⾯. 4,制作实时动画的基本⽅法: 先画出初始图形, 再计算活动对象的新位置,并在新位置上把它显⽰出来, 最后擦除原位置上原有的对象,刷新屏幕 重复操作即可产⽣动画效果。 5,图形窗功能: (1)运⾏指令汇出简图 (2)利⽤图形窗进⾏编辑 (3)改变坐标轴范围 (4)改变包络线线型及颜⾊ (5)调制曲线线型、点型、⾊彩的设置 (6)调制曲线过零点的点型、⾊彩的设置 六,GUI界⾯设计 Matlab中设计图形⽤户界⾯的⽅法有两种:使⽤可视化的界⾯环境和通过编写程序。 图形⽤户界⾯设计⼯具的启动⽅式: 1. 命令⽅式 图形⽤户界⾯GUI设计⼯具的启动命令为guide,格式为: 1)guide 功能:启动GUI设计⼯具,并建⽴名字为untitled.fig的图形⽤户界⾯。 2)guide filename 功能:启动GUI设计⼯具,并打开已建⽴的图形⽤户界⾯filename。 2. 菜单⽅式 Matlab为GUI设计提供4种模板,分别是: Blank GUI(Default)(空⽩模板,默认); GUI with Uicontrols(带控件对象的GUI模板); GUI with Axes and Menu(带坐标轴与菜单的GUI模板); Modal Question Dialog(带模式问题对话框的GUI模板)。 当⽤户选择不同的模板时,在GUI设计模板界⾯的右边就会显⽰出与该模板对应的GUI图形。图形⽤户界⾯GUI设计窗⼝由菜单栏、⼯具栏、控件⼯具栏以及图形对象设计区等4个功能区组成。 图形⽤户界⾯开发环境(GUIDE): Matlab提供了⼀套可视化的创建图形窗⼝的⼯具,使⽤图形⽤户界⾯开发环境可⽅便地创建GUI应⽤程序,它可以根据⽤户设计的GUI布局,⾃动⽣成M⽂件的框架,⽤户使⽤这⼀框架编制⾃⼰的应⽤程序。主要包括: 布局编辑器(Layout Edtor)——在图形窗⼝中创建及布置图形对象 ⼏何排列⼯具(Alignment Tool)——调整各对象相互之间的⼏何关系和位置; 属性查看器(Property Inspector)——查询并设置属性值; 对象浏览器(Object Browser)——⽤于获得当前Matlab图形⽤户界⾯程序中的全部对象信息,对象的类型,同时显⽰控件的名称和标识,在控件上双击⿏标可以打开该控件的属性编辑器; 菜单编辑器(Menu Editor)——创建、设计、修改下拉式菜单和快捷菜单; Tab顺序编辑器(Tab Order Editor)——⽤于设置当⽤户按下键盘上的Tab键时,对象被选中的先后顺序。 控件对象及属性: 1. GUI控件对象类型 Matlab中的控件⼤致可分为两种,⼀种为动作控件,⿏标点击这些控件时会产⽣相应的响应。⼀种为静态控件,是⼀种不产⽣响应的控件,如静态⽂本框等。 控件对象是事件响应的图形界⾯对象。当某⼀事件发⽣时,应⽤程序会做出响应并执⾏某些预定的功能⼦程序(Callback). 1) 按钮(Push Buttons):执⾏某种预定的功能或操作; 2) 开关按钮(Toggle Button):产⽣⼀个动作并指⽰⼀个⼆进制状态(开或关),当点击它时按钮将下陷,并执⾏callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执⾏callback 中的内容; 3) 单选框(Radio Button):单个的单选框⽤来在两种状态之间切换,多个单选框组成⼀个单选框组时,⽤户只能在⼀组状态中选择单⼀的状态,或称为单选项; 4) 复选框(Check Boxes):单个的复选框⽤来在两种状态之间切换,多个复选框组成⼀个复选框组时,可使⽤户在⼀组状态中作组合式的选择,或称为多选项; 5) ⽂本编辑器(Editable Texts):⽤来使⽤键盘输⼊字符串 的值,可以对编辑框中的内容进⾏编辑、删除和替换等操作; 6) 静态⽂本框(Static Texts):仅⽤于显⽰单⾏的说明⽂字; 7) 滚动条(Slider): 可输⼊指定范围的数量值; 8) 组合板(Panel):在图形窗⼝中对控件分组组合; 9) 列表框(List Boxes):在其中定义⼀系列可供选择的字符串 10) 弹出式菜单(Popup Menus): 让⽤户从⼀列菜单项中选择⼀项作为参数输⼊; 2.控件对象的属性: 每种控件都有⼀些可以设置的参数,⽤于表现控件的外形、功能及效果,即属性。属性由两部分组成:属性名和属性值,它们必须是成对出现的。 ⽤户可以在创建控件对象时,设定其属性值,未指定时将使⽤系统缺省值。 两⼤类控件对象属性:第⼀类是所有控件对象都具有的公共属性,第⼆类是控件对象作为图形对象所具有的属性。 1)控件对象的公共属性 Children 取值为空矩阵,因为控件对象没有⾃⼰的⼦对象 Parent取值为某个图形窗⼝对象的句柄,该句柄表明了控件对象所在的图形窗⼝; Tag取值为字符串,定义了控件的标识值,在任何程序中都可以通过这个标识值控制该控件对象; Type 取值为uicontrol,表明图形对象的类型; UserDate取值为空矩阵,⽤于保存与该控件对象相关的重要数据和信息; Visible取值为on 或off。 2)控件对象的基本控制属性 BackgroundColor取值为颜⾊的预定义字符或RGB数值;缺省值为浅灰⾊; Callback取值为字符串,可以是某个M⽂件名或⼀⼩段Matlab语句,当⽤户激活某个控件对象时,应⽤程序就运⾏该属性定义的⼦程序; Enable取值为on(缺省值),inactive和off; Extend取值为四元素⽮量[0, 0, width, height],记录控件对象标题字符的位置和尺⼨; ForegroundColor取值为颜⾊的预定义字符或RGB数值,该属性定义控件对象标题字符的颜⾊;缺省值为⿊⾊; Max,Min取值都为数值,缺省值分别为1和0; String取值为字符串矩阵或块数组,定义控件对象标题或选项内容; Style取值可以是pushbutton(缺省值), radiobutton, checkbox, edit, text, slider, frame, popupmenu 或listbox; Units取值可以是pixels (缺省值), normalized(相对单位), inches, centimeters(厘⽶)或points(磅); Value取值可以是⽮量,也可以是数值,其含义及解释依赖于控件对象的类型。 3) 控件对象的修饰控制属性 FontAngle取值为normal(正体,缺省值), italic(斜体), oblique(⽅头); FontName取值为控件标题等字体的字库名; FontSize取值为数值; FontUnits取值为points(缺省值), normalized, inches, centimeters或pixels; FontWeight取值为normal(缺省值), light,demi和bold,定义字符的粗细; HorizontalAligment取值为left,center (缺省值) 或 right,定义控件对象标题等的对齐⽅式。 4)控件对象的辅助属性 ListboxTop取值为数量值,⽤于listbox控件对象; SliderStep取值为两元素⽮量[minstep,maxstep],⽤于slider控件对象; Selected取值为on 或off(缺省值); SlectionHighlight取值为on 或off(缺省值)。 5)Callback管理属性 BusyAction取值为cancel或queue(缺省值); ButtDownFun取值为字符串,⼀般为某个M⽂件名或⼀⼩段Matlab程序; Creatfun 取值为字符串,⼀般为某个M⽂件名或⼀⼩段Matlab程序; DeletFun取值为字符串,⼀般为某个M⽂件名或⼀⼩段Matlab程序; HandleVisibility取值为on(缺省值), callback或off; Interruptible取值为on 或off(缺省值)。 3. 控件对象的建⽴ 在图形窗⼝界⾯有各种各样的控件,利⽤这些控件可以实现有关控制 Matlab提供了⽤于建⽴控件对象的函数uicontrol,其调⽤格式为: 对象句柄=uicontrol(图形窗⼝句柄,属性名1,属性值1,属性名2,属性值2,…) 菜单设计: 1. 建⽴⽤户菜单 建⽴⾃定义的⽤户菜单的函数为uimenu,格式为: Hm=uimenu(Hp,属性名1,属性值1,属性名2,属性值2,…) 功能:创建句柄值为Hm的⾃定义的⽤户菜单。其中Hp为其⽗对象的句柄,属性名和属性值构成属性⼆元对,定义⽤户菜单的属性。 因其调⽤⽅法不同,该函数可以⽤于建⽴⼀级菜单项和⼦菜单项。 建⽴⼀级菜单项的函数调⽤格式为: ⼀级菜单项句柄=uimenu(图形窗⼝句柄,属性名1,属性值1,属性名2,属性值2,…) 建⽴⼦菜单项的函数调⽤格式为: ⼦菜单项句柄=uimenu(⼀级菜单项句柄,属性名1,属性值1,属性名2,属性值2,…) 2 . 菜单对象常⽤属性 菜单对象除具有Children(⼦对象),Parent(⽗对象),Tag(标签),Type(类型),UserData(⽤户数据),Enable(使能)和 Visible(可见性)等公共属性,还有⼀些常⽤的特殊属性,如回调(callback)属性和菜单名(label)。 另外,⽤户菜单的外观有四个属性:Position(位置),Separator(分隔线),checked(检录符)和ForeGroundColor(前景颜⾊)。 1)Tag属性 Tag属性的取值是字符串,它定义了该菜单对象的⼀个标识值。定义了Tag属性后,在任何程序中都可以通过这个标识值找出该菜单对象。 2)Type属性 Type属性的取值总是uimenu,这个属性值标明图形对象的类型。对菜单对象,其类型就是uimenu,⽤户不能改写这个属性。 3)UserData属性 UserData属性的取值是⼀个矩阵,缺省值为空矩阵,⽤户可以在这个属性中保存与该菜单对象相关的重要数据或信息,借此可以达到传递数据或信息的⽬的。可以⽤set和get函数访问该属性。 3. 快捷菜单 快捷菜单是⽤⿏标右键单击某对象时在屏幕上弹出的菜单。这种菜单出现的位置是不固定的,⽽且总是和某个图形对象相联系。 在Matlab中,可以使⽤uicontextmenu函数和图形对象的UIContextMenu属性来建⽴快捷菜单,具体步骤为: 1) 利⽤uicontextmenu函数建⽴快捷菜单,格式为:hc=uicontextmenu %建⽴快捷菜单,并将句柄值赋给变量hc 2)利⽤uimenu函数为快捷菜单建⽴菜单项,格式为:uimenu(‘快捷菜单名’,属性名,属性值,...) 功能:为创建的快捷菜单赋值,其中属性名和属性值构成属性⼆元对。 3) 利⽤set函数将该快捷菜单和某图形对象联系起来。 七,Simulink建模仿真利⽤Simulink进⾏系统仿真的步骤: 启动Simulink,打开Simulink模块库 打开空⽩模型窗⼝; 建⽴Smulink仿真模型; 设置仿真参数,进⾏仿真; 输出仿真结果。模块库和系统仿真:1 Simulink模块库 1) Sources库 也可称为信号源库,该库包含了可向仿真模型提供信号的模块。它没有输⼊⼝,但⾄少有⼀个输出⼝。 2) Sinks 库 该库包含了显⽰和写模块输出的模块 3)Continuous 库 该库包含描述线性函数的模块。 4) Math 库 该库包含描述⼀般数学函数的模块。 5) Signals Routing 库 ⼦系统创建与封装:1 ⼦系统的创建 1) 通过⼦系统模块来建⽴⼦系统 在Simulink库浏览器,有⼀个⼦系统(Subsystems)的库模块,点击该图标即可看到不同类型的⼦系统模块。 下⾯以PID控制器⼦系统创建,说明⼦系统的创建过程: ① 将⼦系统库模块中的Subsystem模块复制到模型窗。 ② 双击该图标即打开该⼦系统的编辑窗⼝; ③ 将组成⼦系统的模块填加到⼦系统编辑窗⼝: ④ 将模块按设计要求连接: ⑤ 设置⼦系统各模块参数(可以是变量);修改 in1 和 out1 模块下⾯的标签; ⑥ 关闭⼦系统的编辑窗⼝,返回模型窗⼝,修改⼦系统的标签(PID),该PID⼦系统即可作为模块在构造系统模型时使⽤。 2)组合已存在的模块来建⽴⼦系统 如果现有的模型已经包含了需要转化成⼦系统的模块,就可以通过组合这些模块的⽅式建⽴⼦系统。步骤如下: ① 确定需建⽴Subsystem的模型(被选中的均标记有⿊块) ② 点击模型窗Edit菜单下的Create Subsystem 命令,则所选定的模型组合⾃动转化成⼦系统: ③ 双击该图标,可打开该⼦系统窗⼝,改写输⼊输出符号: ④ 关闭⼦系统编辑窗⼝,设置⼦系统标签,则系统模型如右图所⽰: 2 ⼦系统的封装 ⼦系统可以建⽴⾃⼰的参数设置对话框,以避免对⼦系统内的每个模块分别进⾏参数设置,因此在⼦系统建⽴好以后,需对其进⾏封装。⼦系统封装的基本步骤如下: ① 设置好⼦系统中各模块的参数变量; ② 定义提⽰对话框及其特性; ③ 定义被封装⼦系统的描述和帮助⽂档; ④ 定义产⽣模块图标的命令。3 条件⼦系统 1)使能⼦系统 该⼦系统当使能端控制信号为正时,系统处于“允许”状态,否则为“禁⽌”状态。“使能”控制信号可以为标量,也可以为向量。当为标量信号时,只要该信号⼤于零,⼦系统就开始执⾏;当为向量信号时,只要其中⼀个信号⼤于零,也“使能”⼦系统。 2) 触发⼦系统 触发⼦系统只在触发事件发⽣的时刻执⾏。所谓触发事件也就是触发⼦系统的控制信号,⼀个触发⼦系统只能有⼀个控制信号,在Simulink中称之为触发输⼊。 触发事件有4种类型,即上升沿触发、下降沿触发、跳变触发和回调函数触发。双击触发⼦系统中的触发器模块(Trigger),在弹出的 对话框中可选择触发类型。 因篇幅问题不能全部显示,请点此查看更多更全内容