配色: 字号:
第2章 MATLAB的基本语法
2022-11-05 | 阅:  转:  |  分享 
  
第2章 MATLAB的基本语法 2.1 变量及其赋值 2.2 运算符与数学表达式 2.3 控制流 2.4 数据的输入输出及
文件的读写2.5 基本数学函数2.6 基本绘图方法2.7 M文件及程序调试 2.1 变量及其赋值 2.1.1 标识
符与数 标识符是标志变量名、常量名、函数名和文件名的字符串的总称。在MTLAB中,变量和常量的标识符最长允许19个字
符。字符包括全部的英文字母(大小写52个)、阿拉伯数字和下划线等符号,标识符中第一个字符必须是英文字母。2.1.2 矩阵及其元素
的赋值 赋值就是把数赋予代表常量或变量的标识符。在MATLAB中,变量都代表矩阵。列矢量可被当作只有一列的矩阵;行矢
量也可被当作只有一个行的矩阵;标量应看作1?1阶的矩阵。赋值语句的一般形式为:
变量=表达式(或数)1.赋值要求在输入矩阵时,应遵循以下规则:·整个矩
阵的值应放在方括号中;·同一行中各元素之间以逗号“,”或空格分开;·不同行的元素以分号“;”隔开。2.变量的元素的标注
在MATLAB中,变量的元素(即矩阵元)用圆括号“( )”中的数字(也称为下标)来注明,一维矩阵(也称数组)中的元素用一个下标表
示,二维矩阵由两个下标数构成,以逗号分开,对三维矩阵则由三个下标数构成。 3.赋值技巧(1) 利用冒号“:”给全行的元素赋值(2)
利用行、列标注构成新的矩阵4.特殊矩阵和数组(1)单位矩阵函数eye()函数功能:产生对主角线元素为1,其它元素为0的单位矩阵。
eye()的调用格式如下:A=eye(n) 返回一个n?n阶单位矩阵;A=eye(m , n) 返回一个m?
n阶单位矩阵,或用A=eye([m , n]);(2) zeros函数、ones函数、rand以及randn函数A=zeros(n
) 返回一个n?n阶零矩阵;A=zeros(m , n) 返回一个m?n阶零矩阵;(3)linspa
ce函数和logspace函数linspace函数的调用格式如下:y=linspace(a,b) 产生一个行矢量y,该矢量把a
和b间的数等分100份而得到。y=linspace(a,b,n) 产生一个行矢量y,该矢量把a和b间的数等分n份而得到。5.M
ATLAB内部特殊变量和常数⑴变量ans:临时变量,通常指示当前的答案。⑵常数eps:表示浮点相对精度;其值是从1.0到下一个最大
浮点数之间的差值。变量值作为一些MATLAB函数计算的相对浮点精度,按IEEE标准,esp= 2-52近似为2.2204e-016
。⑶常数realmax:表示最大正浮点数;任何大于该值的运算都溢出。在具有IEEE标准浮点格式的机器上,realmax略小于210
24 ,近似为1.7977e+308。⑷常数realmin:表示最小正浮点数;任何小于该值的运算都溢出。在具有IEEE标准浮点格式
的机器上,realmin略小于2-1024 ,近似为2.2251e-308。 ⑸常数pi:表示圆周率π =3.1415926535
897.....。表达式4atan(1)和imag(log(-1))产生相同的值π。⑹常数Inf:代表正无穷大,一般被0除或溢出
则产生无穷大结果。如2/0,2^10000均产生结果:Inf;而log(0)产生结果:-Inf。⑺虚数单位i,j:表示复数虚部单位
,相当于 。⑻NaN:表示非数值。如当Inf-Inf,Inf/Inf, 0Inf,0/0均产生该结果。6.复数的赋值
方式 MATLAB的每一个元素都可以是复数,实数是复数的特例。复数的虚数部分用i或j表示。对复数矩阵有两种赋值方法
: (1)可将矩阵元逐个赋予复数 (2)将矩阵的实部和虚部分别
赋值:7.变量检查在程序调试或变量的赋值过程,往往需要检查工作空间中的变量、变量的阶数以及变量赋值内容。在检查变量及其阶数等内容时
,既可用工作空间窗口,也可在命令窗口使用who或whos命令来完成检查。当查看某变量的赋值情况,可在命令窗口直接键入该变量名回车即
可。 2.2 运算符与复数运算 算术运算符:进行数值计算。 关系运算符:比较两个操作数的大小。 逻辑运算符:进行逻辑运算。
2.2.1 算术运算符 (1)矩阵加减法“±”:A±B 功能:两矩阵对应元素相加减。因此,A和B两矩阵必须有相同的大小,或其中之一
为标量,标量可以与任意大小的矩阵相加。(2)矩阵相乘“”:AB 功能:C =AB为两矩阵线性代数的乘积,即(3
) 矩阵元素相乘“.”:A.B功能:矩阵A和B的对应元素相乘;因此,A和B必须大小相同,或其中之一为标量。(4)矩阵右除“B/
A”与左除“A\B”如果A为一非奇异矩阵,则B/A与A\B可通过A的逆矩阵与B矩阵得到:B/A=Binv(A); A\B=i
nv(A)B。(5)矩阵元素右除“A./B”与左除“A.\B” 矩阵元素右除“A./B”表示矩阵元素A(i,j)/B(i,j
);矩阵元素左除“A./B” 表示矩阵B(i,j)/A(i,j),因此,A和B必须大小相同,或者其中之一为标量。(6)矩阵幂“^”
:X^p 如果p为标量,表示X的p次幂;如果X为标量,而p为矩阵,X^p用特征值和特征特征 向量表示X的矩阵p次幂。注
意X和p不能同时为矩阵,但必须是方阵。(7)矩阵元素幂“.^”:A.^B A.^B表示矩阵元素A(i,j)的B(i,j)次幂
,A与B必须大小相同,或者其中之一为标量。(8) 矩阵转置“ ’ ”A’表示矩阵A的线性代数转置。对于复矩阵,表示复共轭转置。(
9) 非共轭转置“ .’ ”A.’表示非共轭转置;对于复矩阵,不包括共轭。(10)冒号操作符“:” 冒号是一个非常有
用的操作符;可以产生向量、数组下标以及for循环。关系比较结果只有两种可能,即1或0。1表示关系式这“真”,即关系式正确;0表示该
关系为“假”,即它不成立。 2.2.3 逻辑操作符 通常逻辑变量只能取0(假)和1(真)两个值。逻辑量的基本运算
除“与(&)”、“或(|)”和“非(~)”外,有时也包括“异或(xor)”,不过“异或”可以用3种基本运算组合而成。两个逻辑量经过
这4种逻辑运算后的输出仍然是逻辑量。2.2.2 关系操作符 关系运算是指两个元素之间数值的比较。MATLAB所提供的关系操作符如表
所示。2.2.4 关系与逻辑函数其他关系与逻辑函数 测试函数 2.2.5复数运算 1.MATLAB中所有的运算符和函数都对复数有效
。 2.复数的共轭可利用函数“conj”来完成 2.3 控制流 2.3.1 If语句 if语句称为条件执行语句。其关
键字包括if、else、elseif和end。?格式之一:  if 表达式     语句组A  
end其工作流程如图所示。注意:语句中的end是决不可少的,没有它,在逻辑表达式为0时,就找不到继续执行程序的入口。?格式之二:
if 表达式  语句组A  else 
语句组B  end其工作流程如图所示。?格式之三: if 表
达式1  语句组A  elseif 表达式2  语句组B  else
语句组C end工作流程原理如图2.3所示。switch 选择表达式  case 情况表达式1 
   语句组1  case 情况表达式2    语句组2   ………  otherwise 语句组nend2.3
.2 Switch语句 switch语句,也是条件选择结构。其关键字包括switch、case、otherwise和en
d。它主要用于有选择性的程序设计,实现程序的多分支选择。其调格式为:2.3.3 While语句while语句为条件循环语句,循
环执行一组语句,执行次数不确定,而是决定于一些逻辑条件。其关键字包括while、end、break等。基本调用格式:
while 表达式   语句A end2.3.4 for语句for
语句也是循环语句,但与while语句不同的是,它循环执行一组语句的执行次数是确定。其关键字包括for、end、break等。调用的
基本格式如下: for index=初值:增量:终值   语句组A e
nd功能:把语句组A(亦称为循环体)反复执行N次。循环次数N为: N=1+(终值-初值)/增量
在每次执行时程序中的index的值按“增量”增加。注意:(1)For循环不能用For循环内重新赋值循环变量n来终止。(2)在For
循环内接受任何有效的MATLAB数组。(3) for循环可按需要嵌套。与其它的编程语言类似,for语句可以嵌套使用。(4) 当有一
个等效的数组方法来解给定的问题时,应避免用For循环。(5) 为了提高处理的速度,在For循环(While循环)被执行之前,应预先
分配数组。2.4 数据的输入输出及文件的读写 2.4.1 交互输入与输出命令和函数1.键盘输入命令input格式一:u=inp
ut(‘提示内容’)格式二: u=input(‘提示内容’,‘s’)在屏幕上显示提示内容,等待从键盘输入,将输入的符号以字符串赋给
文本(字符串)变量u。2. 菜单输入命令menu功能:产生一个供用户输入的选择菜单。格式: k=menu(‘title’,‘选项1
’,‘选项2’,?,‘选项n’)显示以字符串变量‘title’为标题的菜单,选择为字符变量:‘选项1’,‘选项2’,?,‘选项n’
,并将所输入的值赋给变量k。3.暂停执行命令pausepause 常用在M文件中,用于停止执行,直接按任意键继续执行;pau
se(n)  暂停执行n秒后继续执行;pause on  允许一系列pause命令暂停程序执行;pause off 保证任何pa
use命令和pausea(n)语句不能暂停程序执行。4.显示命令 disp功能:显示指定的变量或变量的内容。调用格式: disp(
变量名)5.按格式要求输出变量命令sprintf功能:按格式要求输出变量调用格式: sprintf(显示格式,变量)。2.4.2
文件输入输出命令与函数 1.save功能:用以将工作空间中的变量保存到磁盘上。格式一: save 将工作空间中的所有变量保存
在一个名为:“matlab.mat”的二进制格式文件中,该文件可通过load命令来重新装入工作空间。格式二: save 文件名
变量名将工作空间中指定的“变量名”保存在指定“文件名.mat”的二进制格式文件中。格式三: save 文件名 选项使用“选
项”指定ASCII文件格式,将工作实间中所有变量保存到“文件名”所指定的文件中。2. load:功能:从磁盘文件中重新调入变量内容
到工作空间。格式一: load   将保存在“matlab.mat”文件中的所有变量调入到工作空间。格式二: load  文件名
从“文件名 . mat”中调入变量,可给出全部路径。3. fopen功能:打开文件或获得打开文件信息。格式一: f_id=fope
n(文件名,’允许模式’) 以’允许模式’指定的模式打开“文件名”所指定的文件,返回文件标识f_id;’允许模式’ 可以是下列几个
字符串之一:‘r’ : 打开文件进行读(缺省型式);‘w’ : 删除己存在文件中的内容或生成一个新文件,打开进行写操作; ‘
a’ :打开一个己存在的文件或生成并打开一个新文件,进行写操作,在文件末尾添加数据;格式二: [f_id , message]=
fopen (文件名,’允许模式’,格式) 功能:用指定的数据“格式”打开数据文件,返回文件标识和打开文件信息两个参数。“数据
格式”。如果fopen成功打开文件,则返回文件标识f_id,message内容为空,如果不能成功打开,则返回f_id值为-1,me
ssage中返回一个有助于判断错误类型的字符串。有三个值是预先定义的,不能打开或关闭: 0:表示标准输入,一直处于打开读入状态
。 1:表示标准输出,一直处于打开追加状态。 2:表示标准错误,一直处于打开追加状态。4.fclose功能:关闭一个或多个
已打开的文件。格式一: status=fclose(f_id) 关闭指定文件,返回0表示成功,返回-1表示失败。格式二  
status=fclose(‘all’)功能: 关闭所有文件,返回0表示成功,返回-1表示失败。 5.fread格式一: [A,
count]=fread(f_id, size, ’精度’) 功能:从指定文件中读入二进制数据,将数据写入到矩阵A中;可选输出c
ount返回成功读入元素个数;f_id为整数文件标识,其值由fopen函数得到;可选参数size确定读入多少数据,如果不指定参数s
ize,则一直读到文件结束为止,参数size合法选择有: n :读入n个元素到一个列向量; inf :读到文件结束,返回一
个与文件数据元素相同的列向量; [m, n]:读入足够元素填充一个m×n阶矩阵,填充按列顺序进行,如果文件不够大,则填充0。‘
精度’表示读入数据精度的字符串,控制读入每个值的数据位,这些位可以是整数型、浮点值或字符。格式二: [A, count]=frea
d(f_id, size,’精度’,skip)  可选参数skip,指定每次读操作跳过字节数,如果’精度’是某一种位格式,则每次读
操作将跳过相应位数。6.fwrite功能:向文件中写入二进制数据。格式一: count=fwrite (f_id, A,’精度’)
将矩阵A中元素写入指定文件,将其值转换为指定的精度。格式二: count=fwrite(f_id,A,’精度’,skip
)可用参数skip指定每次写操作跳过指定字节。7.fscanf格式一: A=fscanf (f_id, ’格式’)从由f_id所指
定的文件中读入所有数据,并根据’格式’字符串进行转换,并返回给矩阵A,’格式’字符串指定被读入数据的格式。格式二: [A, cou
nt]=fscanf(f_id,’格式’,size)读入由size指定数量的数据,并根据’格式’字符进行转换,并返回给矩阵A,同时
返回成功读入的数据数量count。8.fprintf格式一: count=fprintf(f_id,’格式’,A,…)  将矩阵
A或其它矩阵的实部数据以’格式’字符串指定的形式进行规格化,并将其写入指定的文件中,其返回值为写入数据的数量。格式二: fpri
ntf(’格式’,A,…) 将A或其它值以’格式’给定的形式输出到标准输出-显示屏幕上。 9.fgets功能:以字符串形
式返回文件中的下一行内容,包含行结束符。格式一: ctr=fgets(f_id) 返回文件标识为f_id的文件中的下一行内容
,如果遇到文件结尾(EOF),则返回-1,所返回的字符串中包括文本结束符,用fgetl( )则返回的字符串中不包括行结束符。格式二
: str=fgest((f_id,n) 返回下行中最多n个字符,在遇到行结束符或文件结束(EOF)时不追加字符。10.fg
etl功能:以字符串形式返回文件中的下一行内容,但不含行结束符。格式: str=fgetl(f_id)返回文件标识为文件中的下一行
内容,如果遇到文件结尾,则返回-1,所返回的字符串中不包括行结束符。11.ferror功能:查询MATLAB关于文件输入、输出操作
的错误。  messgeg=ferror(f_id)  将标识为f_id的已打开文件的错误信息返回给message变量。12.
feof功能:测试文件结尾(EOF)。格式: eoftest=feof(f_id)  测试指定文件是否设置了EOF;如果返回1则
表示设置了EOF指示器,返回0未设置。13.imread 功能: 从图像文件中读入图像格式一: A=imread(文件名,’图像
文件格式’)将文件名指定的图像文件读入A,A为无符号8位整数(uint8)。如果文件为灰度图像,则A为一个二维数组;如果文件是一个
真彩色RGB图像,则A是一个三维数组(mn3)。格式二:[A, map]=imread(文件名,’图像文件格式’)读入索引图像
到矩阵A,其调色板值返回给map,A为无符号8位整数(uint8),map为双精度浮点数,其值在[0,1]范围内。14.imwri
te :将图像写入图像文件中。格式一: imwrite(A, 文件名,’图像文件格式’)格式二: imwrite(A,map,文件
名,’图像文件格式’)将A中的索引图像及其相关的调色板map存放到指定文件。调色板map必须是MATLAB的有效调色板。注意大多数
图像文件格式不支持大于256条的调色板。15.imfinfo 功能:返回图像文件信息格式: info=imfinfo(文件名,’图
像文件格式’)返回一个图像信息结构,或结构数组。‘图像文件格式’与imread函数的一样。16.auread功能: 读入声音文件
(.au)格式一: Y=auread (aufile)   读入由文件名aufile指定的声音文件,返回采样数据给变量Y。如
果文件名中没有扩展名,则自动在其后加上.au作为扩展名。幅值在[-1,1]范围内。支持多通道数据格式:8-bit mu-law;或
8-, 16-, 32-bit linear。格式二: [Y, Fs,bits]=auread(aufile) 返回采样率Fs
(Hz)以及文件中每数据编码时所用的位数(bits)。17.Auwrite 功能:向文件(. au)中写入声音数据。格式一: au
write(A, ‘文件名. Au’ )向’文件名. au’指定的文件中写入声音数据,数据在A中以一个通道一列的方式安排,幅值超过
[-1, +1]范围时,在写入前先进行剪裁处理。格式二: auwrite(A, Fs, ‘文件名. au’ )用指定的数据采样Fs
(Hz) 写入声音数据。18.wavread功能: 读入声音文件(.wav)格式一: A=wavread (‘文件名.wav’)
读入由’文件名’指定的Microsoft声音文件(. wav),返回采样数据给变量A。如果文件名中没有扩展名,则自动在其后加
上.wav作为扩展名,幅值在[-1,1]范围内。格式二: [A, Fs, bits]=wavread(‘文件名.wav’) 返回
采样率Fs(Hz)以及文件中每数据编码时所用的位数(bits)。19.wavwrite功能:向Microsoft WAV声音文件(
.wav)中写入声音数据格式一: wavwrite (A, ‘文件名.wav’)向指定的文件中写入声音数据,数据在A中以一个通道一
列的方式安排,幅值超过[-1, +1]范围时,在写入前先进行剪裁处理。格式二: wavwrite(A, Fs, ‘文件名.wav’
)用指定的数据采样Fs(Hz) 写入声音数据。2.5 基本数学函数 2.5.1 三角函数1.正弦sin函数与反正弦函数asin函
数格式:A=sin(X)功能:对矩阵或数组X的每个元素求正弦值,所有角度用弧度表示。格式:X=asin(A)功能:对于A的元素求反
正弦值,结果为弧度。2.双曲正弦sinh函数与反双曲正弦函数asinh函数格式:A=sinh(X)功能:对矩阵或数组X的每个元素求
双曲正弦值。格式:X=asinh(A)功能:对于A的元素求反双曲正弦值。 3.余弦cos函数与反余弦函数acos函数格式:A=co
s(X)功能:对矩阵或数组X的每个元素求余弦值,所有角度用弧度表示。格式:X=acos(A)功能:对于A的元素求反余弦值,结果为弧
度。4.双曲余弦cosh函数与反双曲余弦函数acosh函数格式:A=cosh(X)功能:对矩阵或数组X的元素求双曲余弦值。格式:X
=acosh(A)功能:对于A的元素求反双曲余弦值。 5.正切tan函数与反正切函数atan函数格式:A=tan(X)功能:对矩阵
或数组X的每个元素求正切值,所有角度用弧度表示。格式:X=atan(A)功能:对于A的每个元素求反正切值,结果为弧度。6.四象限反
正切atan2函数格式:P=atan2(Y,X)功能:四象限反正切函数。返回大小与Y、X相同的矩阵或数组,由Y和X对应元素的实部求
反正切值得到,其中虚部忽略。7.双曲正切tanh函数与反双曲正切atanh函数格式:A=tanh(X)功能:对于X的每个元素求双曲
正切值。格式:X=atanh(A)功能:对于A的每个元素求反双曲正切值。8.正割sec函数与反正割asec函数格式:A=sec(X
)功能:对X的每个元素求正割。格式:X=asec(A)功能:返回A的每个元素的反正割值。9.双曲正割sec函数与反双曲正割asec
函数格式:A=sech(X)功能:对X的每个元素求双曲正割。格式:X=asech(A)功能:返回A的每个元素的反双曲正割值。10.
余割csc函数与反余割acsc函数格式:A=csc(X)功能:对X的每个元素求正割。格式:X=achc(A)功能:返回A的每个元素
的反正割值。11.双曲余割csch函数与反双曲余割asch函数格式:A=csch(X)功能:对X的每个元素求双曲余割。格式:X=a
csch(A)功能:返回A的每个元素的反双曲余割值。12.余切cot函数与反余切acot函数格式:A=cot(X)功能:对X的每个
元素求余切。格式:X=acot(A)功能:返回A的每个元素的反余切值。13.双曲余切coth函数与反双曲余切函数acoth函数格式
:A=coth(X)功能:对X的每个元素求双曲余切。格式:X=acoth(A)功能:返回A的每个元素的反双曲余切值2.5.2 指数
、对数、幂运算 1.指数exp函数与自然对数log函数格式:A=exp(X)功能:返回X每个元素的以e为底的指数值。格式:X=lo
g(A)功能:返回A的每个元素的自然对数。2.常用对数logl0函数格式:X=logl0(A)功能:对A的每个元素求常用对数。3.
log2函数和幂函数pow2格式:X=log2(A)功能:对A的每个元素计算其以2为底的对数。格式:A=pow2(X)功能:A的
元素为2对X每个元素求幂得到。4.平方根函数格式:A=sqrt(X)功能:返回对数组X每个元素求平方根的数组,如果元素为负或复数,
则结果为复数。2.5.3 复数的基本运算 1.求复数实部函数real格式:X=real(Z)功能:返回复数Z的每个元素的实部。2.
求复数的虚部函数imag格式:Y=imag(Z)功能:返回复数Z的每个元素的虚部。3.绝对值和复数模函数abs格式:A=abs(Z
)功能:返回Z每个元素的绝对值。如果Z的元素是复数,则返回其模。4.求相角函数angle格式:P=angle(Z)功能:对Z的每个
元素求相角。5.共轭函数conj格式:C=conj(Z)功能:对Z的每个元素求共轭复数。2.5.4 数据的取舍与保留1.向0方向取
整数函数fix格式:I=fix(X)返回X中每个元素的最靠近零的整数。若X为复数,则分别对X的实部和虚部取整。2.向-∞方向取整数
函数floor格式:I=floor(X)返回X中每个元素的最靠近该元素的最小整数。若X为复数,则分别对X的实部和虚部取最小整。3.
向-∞方向取整数函数ceil格式:I=ceil(X)返回X中每个元素的最靠近该元素的最大整数。若X为复数,则分别对X的实部和虚部取
最大整数。4.四舍五入取整数函数round格式:I=round(X)返回X中每个元素的最靠近该元素的整数。若X为复数,则分别对X的
实部和虚部取整数。5.模数余函数mod格式:M=mod(X,Y)返回X关于Y的余数。6.除后余数函数rem格式:M=rem(X,Y
)功能:返回X关于Y的余数。7.符号函数sign格式:s=sign(X)如果X大于零,则返回1;如果X等于零,则返回0;如果X小于
零,则返回-1。如果X为复数,则算法为:SIGN(X) = X ./ ABS(X)。2.6 基本绘图方法2.6.1 图形窗口的
控制 在MATLAB中,图形的绘制必须在图形窗中进行。通常,只要执行了任意一种绘图命令,图形窗口(Figure)就会自动产生。此时
,所生成的图形窗口称为当前图形窗,绘图命令所绘制的图形将在当前图形窗中完成。1.figure命令格式:figure 或 fig
ure(N) 功能:创建一个图形窗口。使编号为N的图形窗口成为当前图形窗口,即图形窗口处于可视状态。如果窗口N不存在,则将创建一个
句柄为N的图形窗口。2.clf命令:清除当前图形窗口中的所有的内容。格式:clf3.close命令:关闭图形窗口格式一:close
或 close (N) 关闭当前图形窗口或指定编号N的图形窗口。格式二:close all 关闭所有图形窗口。4.hold
命令格式:hold on (off)功能:保持当前图形窗的内容,或取消hold on的命令功能,恢复系统默认状态。通常,MATL
AB在执行某一绘图命令时,系统会自动将当前图形窗口中的内容清除,然后再绘制。hold命令的功能就是保持当前图形窗的内容,使后续绘制
函数仍可该图形窗口中完成绘图,实现一张图中绘制多个图形。若再键入hold命令就解除冻结。这种拉线开关式的控制有时会造成混乱,可以用
hold on和hold off命令来得到确定的状态。5.subplot命令功能:将一个图形窗口划分为多个子图形窗口格式:subp
lot(m,n,p) 或  subplot(nmp)将图形窗口分成n?m个子图形窗口,并选择第p个子图形窗口作为当前图形窗口,供
绘制函数作图使用。2.6 基本绘图方法1. 二维图形绘制命令plot MATALB为用户提供了一个基本的二维曲
线绘图函数plot。格式一: plot(y)--输入一个数组的情况功能:如果y是一个数组,函数plot(y)给出线性直角坐标的二维
图,该二维图以y中元素的下标作为X坐标,y中元素的值作为Y坐标,一一对应画在X—Y坐标平面图上,而且将各点以直线相连。若y的元素是
复数,则plot(y)等价于plot(real(y),imag(y)),其中real(y)是y的实部,imag(y)是y的虚部。若
y是矩阵,就按列绘制曲线,曲线的条数等于y矩阵的列数。格式二: plot(x,y)--输入两个数组的情况功能:绘出以x元素为横
坐标、y元素为纵坐标的曲线。数组x和y必须具有相同长度。2.6.2 二维图形的绘制 2.线型、标记符号及颜色的设置为了设定线型、
颜色以及标记符号,用户只需在plot的输入变量组后面,加一个引号,在引号内部放入线型、颜色以及标记符号的标志符即可完成。格式一:
plot(y,’字符串’) 格式二:plot(x, y,’字符串’)3.图形的标注、网格以及图例说明(1) 添加图形标题命令ti
tle 格式:title(‘string’) 功能:在当前坐标系的顶部加一个文本串string,作为该图形的标题。(2) 添加坐标
轴标志函数xlabe、 ylabel、zlabel格式:xlabel(‘text’) 或 ylabel(‘text’) 或zla
bel(‘text’)功能:给当前X轴或Y轴或Z轴标注文本标注。(3)设置网格线命令grid格式:grid on(off)功能:对
当前坐标图加上网格线或撤消网格线。若直接调用grid命令即可设置或撤消网格线。(4)图形标注函数legend格式:legend(
string1, string2, string3, ….)功能:在当前图中添加图例。格式:Legend off功能:撤消当前坐标
图上的图例。4.坐标轴的形式与刻度  (1)设置坐标轴函数axis格式一:axis([xmin,xmax,ymin,ymax])功
能:对当前二维图形对象的X轴和Y轴进行标定。格式二:axis([xmin xmax ymin ymax zmin zma
x])功能:对当前三维图形对象的X、Y和Z轴进行标定。格式三:axis off(on)功能:使坐标轴、刻度、标注和说明变为不显示(
显示)状态。格式四:axis(‘manual’)功能:将冻结当前的坐标比例,以后的图形均以此比例绘出。(2)对数坐标轴命令semi
logx、 semilogy、loglog格式:semilogx(…..) 功能:在X轴上采用常用对数来进行标定。该命令的调用格
式与plot函数的调用格式相同。格式:semilogy(…..) 功能:在Y轴上采用常用对数来进行标定。该命令的调用格式与plo
t函数的调用格式相同。(3)极坐标函数polar格式:polar(theta, rho) 功能:绘制极角为theta, 极径为rh
o的极坐标图形。格式:polar(theta,rho,s)功能:绘制由S指定样式、颜色的极坐标图形。(4)图形边框控制命令box格
式:box on(off)对所绘制的图形添加图形边框(默认状态),或关闭图形边框。5.二维图形其它的相关函数命令(1)获取函数gi
nput格式:[X,Y]=ginput(N)功能:从当前的坐标图上获得N个点的数据,并返回这N个点的相应X、Y坐标向量。指针可以由
鼠标或键盘上的除回车以外的任意键来进行输入,回车键是用来在N个数据点输完以前强行停止输入的。(2)图形填充函数fill格式:fil
l( X, Y, C)功能:填充二维多边形,多边形由向量X,Y来定义,填充的色由C来确定。多边形的顶点是由一组X,Y元素来确定,必
要时应组成一个闭合的曲线。C可以从’r’,’g’,’b’,’c’,’m’,’k’选出一种色填充也可以是一个GRB向量[r,g,b]
,用它来确定所填充的色。2.6.3 多条曲线的绘制 在MATALB中,通常,在一张图上绘制多条曲线有以下4种方法。1.使
用plot(t, [y1 ,y2, …])命令该语句中t是向量,y=[y1,y2…]是矩阵,若t是列向量,则y的列(行)长应与t长
度相同。Y的列(行)数就是曲线的条数。2. 使用hold命令在画完前一张图形后,用hold命令保持住该图形窗口中的内容,再画下一条
曲线。3. 利用plot(x1, y1, x2, y2, …., xn, yn)语句在该语句中,x1, y1, x2, y2, …
., xn, yn等分别为向量对。每一对X-Y向量可以绘出一条图线,这样就可以在一张图上画出多图线,每一组向量对的长度可以不同,在
其后面都可加线型标志符。4.使用plotyy命令: plotyy(x1, y1, x2, y2)它设有两个坐标,左纵坐标对应y1,
右纵坐标对应y2,以便绘制两个y尺度不同的变量,但x仍用同一个比例尺。 2.6.4 复数的绘图 当plot(z)中
的z为复数变量时(即含有非零的虚部),MATLAB把复数的实部作为横坐标、虚部作为纵坐标绘图,即相当于plot(real(z),i
mag(z))。 2.6.5 三维曲线和曲面 1.空间曲线绘制函数plot3( )格式一:plot3(x,y,z)功能:若x、y
、z为相同长度的向量,则根据向量x、y、z绘制空间三维曲线。如果x、y、z为同阶矩阵,则绘制对应列的多条曲线。格式二:plot3(
x, y, z, ’s’)功能:按字符串s设置的线型、颜色、标记符号绘制三维空间曲线。字符串s的设置与plot命令的设置相同。2.
三维网线图函数mesh、meshc和meshz MATALB提供的函数mesh用来绘制三维网线图。格式一:mesh(X,Y,Z)功
能:根据矩阵X、Y和Z绘制彩色的空间三维网线图。X、Y和Z中对应的元素为三维空间上的点,点与点之间用线连接。其中网线的颜色随着网点
高度的改变而改变。格式二:mesh(x,y,Z)功能:n维向量x、m维向量y和m×n矩阵Z绘制网线图,节点的坐标为(x(j),y(
i),Z(i,j)),网线的颜色随着网点高度的改变而改变。3.三维曲面图函数surf及surfc格式一:surf(X, Y, Z,
C) 功能:绘制由四个矩阵所指定的带色参数的网状表面图。视角是由view所指定。轴的刻度决定于X,Y及Z的范围,或当前对轴的设
定;颜色范围由C指定。格式二:surf(X,Y,Z)功能:将C设为与Z相等,则颜色与网的高度成正比。4.视图函数view格式一:v
iew(az, el) 或 view([az,el] )功能:设置观察者观察三维图形的视角。az是方位角或者是水平旋转角度,el是
仰角。格式二:view(2) 或 view(3)功能:设置观察三维图形视角的默认值(az=0,el=90; az=-37,el=3
0)格式三:[az, el]=view功能:返回当前的方位和视角2.7 M文件及程序调试与变量属性M文件:由MATLAB命令语句
构成的程序文件称作M文件,它将m作为文件的扩展名。可以直接阅读并用任何文本编辑器来建立这种文件。M文件可分为两种:主程序和子程序。
主程序 (也称主程序文件): 一般是由用户为解决特定的问题而编制的程序。 子程序 (称为函数文件):它必须由
其它M文件来调用。函数文件往往具有一定的通用性,并且可以进行递归调用。 (1)有关程序的功能、使用方法等内容的注释。主程序前面的若
干行通常是程序的注释,每行以“%”开始。(2)程序的主体。(3)整个程序应按MATLAB标识符的要求起文件名,并加上后缀m。对主程
序文件的运行方式通常有两种:在MATLAB的命令窗口中运行:在MATLAB的命令窗中键入此程序的文件名后,系统就开始执行文件中的程
序;在编辑窗口中运行:通过编辑窗口打开所要运行的文件,然后再运行。主程序文件中的语句可以对MATLAB工作空间中的所有数据进行运算
操作。2.7.1 M文件的结构主程序文件的格式特征如下:2.函数文件结构函数文件是用来定义子程序的。它与主程序文件的主要区别有三
点:(1)由function起头,后跟的函数名必须与文件名相同;(2)有输入输出变元(变量),可进行变量传递;(3)除非用glob
al声明,程序中的变量均为局部变量,不保存在工作空间中。通常,函数文件由五部分构成:·函数定义行;·H1行;·函数帮助文本;·函数体;·注释。函数定义命令function( )格式: function [output1,output2,…]=functionname(input1,input2,….) 功能:定义函数名为functionname的函数(或子程序),该函数的输出变量为[output1,output2,…],输出变量为 (input1,input2,….)。例如:function y=mean(x,dim)function为函数定义的关键字,mean为函数名,y为输出变量,x和dim为输入变量。注意:当函数具有多个输出变量时,则以方括号括起;当函数具有多个输入变量时,则直接用圆括号括起。例如:function[x,y,z]=sphere(theta,phi,rho)。当函数不含输出变量时,则直接略去输出部分或采用空方括号表示。2.7.2 局部变量与全局变量通常,在MATALB工作空间中,变量有三类:?由调用函数传递输入和输出数据的变量;?在函数内临时产生的变量—称为局部变量?由调用函数空间、基本工作空间或其它函数工作空间提供的变量—称为全局变量。在MATLAB中对变量以及全局变量管理提供了以下的命令:1.global格式:global X Y Z功能:将变量 X、Y、Z定义成全局变量。2.Persistent格式:persistent X Y Z功能:将变量X、Y、Z定义成永久变量。persistent 函数只用于函数文件中,使在每次调用时保持变量的值不变。2.7.3 程序的调试1.MATLAB的主程序的调试: MATLAB的查错能力很强,加上工作空间中变量的保存和显示功能不需要专门的调试命令,因此,主程序的调试很方便地进行。2.函数程序的调试: 因为在函数程序中出错而停机时,其变量不作保存。虽然它也会指出出错的语句,但因为子程序中的变量(局部变量)在程序执行完毕后会自动消失,其它现场数据又无记录,会给调试带来很大困难。可采用下列措施:(1)把某些分号改为逗号,使中间结果能显示在屏幕上,作为查错的依据。(2)在子程序中适当部位加keyboard命令,到了此处,系统会暂停而等待用户键入命令。这时子程序中的变量还存于工作空间中,可以对它进行检查。(3)将函数文件的第一行前加“%”号,使它成为程序文件来作初步调试。第一行中的输入变元,可改用input或赋值语句来输入,调试好后再改回为函数文件。(4)在程序中使用以下人机交互命令,也可大大提高程序的调试程度。
献花(0)
+1
(本文系籽油荃面原创)