Matlab实际上可以认为是一种解释性语言。用户可以在Matlab的命令窗口键入一个命令,也可以由它定义的语言在编辑器中编写应用程序,Matlab软件对此命令或程序进行解释,然后在Matlab环境下Matlab对它进行处理,最后返回结果。
(1)Matlab的基本语句结构
Matlab以复数矩阵作为最基本的运算单元,既可以对它进行Matlab整体处理,也可以对它的元素进行单独处理。
Matlab语言最基本的赋值语句结构为
其中等号左边的变量名列表为Matlab语句的返回值。赋值语句也可以没有等式左边的变量名列表,此时返回值赋值给系统的一个变量名ans。等式右边为表达式的定义,它可以是Matlab允许的矩阵运算,也可以包括Matlab的函数调用。
注:①等式右边表达式的结束:
a.由分号(;)结束,则等式左边的变量结果将不在屏幕上显示;
b.由逗号或回车、换行结束,结果在屏幕上显示。
②Matlab的函数调用与C语言不同,允许一次返回多个结果,此时等式左边的变量列表必须用中括号括起来。
(2)Matlab的变量操作
①向量。
向量是Matlab中的一个基本单位,向量为以方括号作为分界标识的一种变量,向量的每一个元素由空格分隔。向量的运算包括以下几种:向量的创建;向量的加减运算;向量的乘除运算。
a.向量的创建。
你可以在Matlab的命令窗口键入以下字符,创建一个向量。
a=[1 2 3 4 5 6 9 8 7]
Matlab将显示
如果你希望得到元素从0到20,步距为2的一个向量,只需简单地键入以下命令即可。
t=0∶2∶20
Matlab将显示
以上的冒号(:)为一运算符,其一般形式为S1∶S2∶S3,其中S1为起始值,S2为步长, S3为终止值。当不给出S2时,缺省值为1。
b.向量的加减运算。
向量的加减运算包括同维向量之间的加减,向量加减一个常数,要求参加运算的两个向量维数相同。
设a,b为同维向量,则c=a+b或c=a-b得到两个向量相加减的结果。向量与常数的相加减结果是得到一个新的向量,其每个元素加减这个常数。如向量a如上,则
b=a+2
得到
c=a+b结果为
c.向量的乘除运算。
向量的乘法运算 向量的乘法运算有普通积,点积和叉积等方式。进行普通积运算时两个向量必须满足矩阵乘法的相容条件。点积运算的运算符为. *,其意义为两个向量的对应元素进行乘法运算,例如
a=[12],b=[34]则c=a.*b=[38]
.为向量的乘方运算,例如
c=a.2=[14]
向量的除法运算向量的除法运算有运算符为./和.\,其意义为两个向量的对应元素进行除法运算,其中使用“./”运算符是被除数为运算符左边的向量,而使用“.\”运算符是被除数为运算符右边的向量。因此,x./y和y.\x结果是一样的。例如
c=[3 8],b=[3 4]则a=c./b=b.\c=[1.000 2.000]
②矩阵。
在Matlab中输入矩阵如同输入向量,此时,每一行元素有分号或者回车键分隔。例如
Matlab中矩阵可以进行多种运算。
a.矩阵转置运算矩阵的转置可以使用符号“’”。
如果C是复矩阵,则“’”给出共轭转置。如果仅仅希望得到转置,利用符号.′(如果矩阵不是复矩阵,’和.’结果相同)。
b.矩阵乘法两个相乘的矩阵必须满足相容条件。
c.矩阵点乘当参与运算的两个矩阵维数相同时,运算符.*的结果是两个矩阵的对应元素相乘。例如
d 矩阵的乘方当矩阵为方阵时,可以进行矩阵的乘方运算,运算符为
如果希望仅仅矩阵的元素进行乘方运算,可以使用运算符. ,例如
e.矩阵的逆矩阵逆利用函数inv计算,此时,要求矩阵为方阵且可逆。
f.矩阵元素的赋值与运算 Matlab允许用户对矩阵的单个元素进行赋值和操作, Matlab此时命令方式为
X(i,j)=变量名
其中,X为矩阵名,i,j分别为矩阵元素的行和列。如果给出的元素行或列超出原来矩阵的范围,Matlab会自动扩展原来的矩阵,并将扩展后未赋值的矩阵元素置为零。
Matlab还允许对子矩阵进行定义和处理,此时使用冒号(:)操作符。如A(∶,j)指A矩阵的第j列全部元素。又如A(1∶2,2∶4)表示Matlab对矩阵A取第一行和第二行,第二列到第四列中的所有元素构成子矩阵。
g.矩阵的特征值及特征多项式。
特征值利用函数eig可以计算矩阵特征值。
特征多项式利用函数poly可以计算出矩阵特征多项式的系数,此时,多项式系数以降幂形式排列。
记住矩阵的特征值与特征多项式的根是相同的。例如
③多项式。
a.多项式的创建。
在Matlab中,多项式用向量表示。在Matlab中创建一个多项式,只需要简单地按照降幂方式将多项式的系数输入到向量中。例如,假设有如下的多项式
s4+3s3-15s2-2s+9
如果想将其输入到Matlab中,只需按下列方式输入向量
Matlab能够将n+1长度的向量解释为n阶多项式。于是,如果多项式缺少某些系数,必须在向量的适当位置补充零。例如
s4+1
y=[10001]
b.计算多项式的值。
可以利用函数“polyval”计算多项式的值。例如,为了计算上述多项式在s=2的值,有
c.求多项式的根。
当有一个高阶多项式时,求出多项式的根这一功能十分有用。例如,如果希望计算以下多项式的根
s4+3s3-15s2-2s+9
利用以下的命令将很有用
d.多项式的乘法和除法。(www.xing528.com)
多项式的乘积 如果希望得到两个多项式的乘积,可以利用它们系数的卷积得到。Matlab的函数conv可以为你做到这一点。
多项式的除法利用函数deconv可以返回两个多项式除法的结果和余数。假设z被y除,得到x。
结果xx与多项式/向量x完全相同。如果y不能整除z,则余数向量会有一些系数不为零。
e.多项式的加法。
两个同阶多项式的相加,可以简单地利用z=x+y(此时x,y具有相同的维数)。对于一般x和y不同维数的情况,可以利用用户自定义的函数polyadd完成。
(3)Matlab的编程基础
Matlab的编程效率要比其他高级语言Basic、Fortran、Pascal、C高,且易于维护。
①M文件。
M文件是用Matlab语言编写的可在Matlab命令窗口中运行的程序,Matlab有两种常用的方式。
直接交互的命令行操作方式;
M文件的编程工作方式。
第一种方式,如上所述,为用户在命令窗口中直接键入命令,同时可看到运算结果, Matlab好像一种“高级计算器和图示器”。
第二种方式,指用户采用任何文字处理软件编写和修改一个ASCII码文件,其扩展名必须为.m。从语法上说,Matlab与C十分相似,因而熟悉C语言的用户可以轻松地掌握Matlab的编程技巧。
这两种文件的扩展名都是.m。
命令文件是将一组相关的命令编辑在同一个ASCII码文件中,运行时只要输入文件名, Matlab就会自动按顺序执行文件中的命令。
命令文件中的语句可以访问Matlab工作空间中的所有数据,运行过程中产生的所有变量都是全局变量。
②函数。
从理论上讲,只要有顺序、循环和分支这三种结构,就可以构成任何一个程序并完成相应的工作。Matlab同样具有这三种程序结构,其具体体现在Matlab的函数编程中。Matlab的函数功能与C及其他高级语言的函数相仿,不过功能更为强大。
Matlab由包括许多标准函数,每个函数都由完成某一特定功能的代码组成。Matlab包括几乎所有的数学标准函数,如sin,cos,log,exp,sqrt等等。一些常用的常数,如π用pi表示,1或者j表示﹣1的平方根等等。在Matlab的命令窗口中键入
如果需要了解函数的用途,可以在Matlab的命令窗口中键入help[函数名]。实际上,当Matlab命令窗口键入roots,plot或者step等命令时,Matlab实际上在运行某个具有特定输入和输出的M文件,以完成某个特定功能。这些M文件与程序设计语言中的函数类似。Matlab中称此为M文件函数。Matlab也允许用户编写自己所需要的函数,其扩展名为m,其中用户自定义函数必须以关键字function开头,包括函数文件的关键字,定义的函数名、输入参数和输出参数。第一行为
function[output1,output2]=filename(input1,input2,input3)
Matlab的函数能够根据要求输入或输出若干个变量。
下面给出一个完成加法功能的函数add.m
第二行以%开头为注释语句,用以说明函数的功能等。
将以上3行保存为add.m的文件与Matlab某个目录中,于是,可以键入以下命令行执行加法。
y=add(3,8)
实际上,Matlab中大多数函数比以上示例更复杂。需要时,可以随时键入help function以得到更多有关函数的信息。
③绘图。
在Matlab环境下很容易绘制图像。假如希望绘制一个作为时间函数的正弦波的图像。首先可以产生一个时间向量,然后计算每一时刻的正弦值。
图M-2 正弦波函数图
该图包含大约一个周期的正弦波,如图M-2所示。基本的绘图在Matlab中十分容易,“plot”命令还有一些很强的附加功能,下面简单介绍。
a.绘制多条曲线。
为了在一幅图上绘制多条曲线,可采用具有多个自变量的plot命令
plot(X1,Y1,X2,Y2,,Xn,Yn)
变量X1,Y1,X2,Y2,⋯,Xn,Yn是一些向量对。每一对x-y对都可以图解出来,从而在一幅图上形成多条曲线。多重变量的优点是它允许不同长度的向量在同一幅图上显示出来。每一向量对可以采用不同的线型。
在一幅图上绘制一条以上的曲线,也可以利用命令hold。hold命令保持当前的图形,并且防止删除和修改比例尺。因此,随后的一条曲线将会重叠地画在原曲线上。再次输入hold命令,会使当前的图形复原。
b.给图形加网格线、标题、坐标标记。
一旦在屏幕上显示图形,就可以画出网格线,定出图形标题,并且标定x,y轴或z轴标记。Matlab中相应命令如下
grid(网格线)
titel(图形标题)
xlabel(x轴标记)
ylabel(y轴标记)
zlable(z轴标记)
c.在图形屏幕上书写文字。
为了在图形屏幕的点(x,y)上书写文字,采用命令
text(x,y,’text’)
例如,利用语句
text(3,0.45,’sint’)
将从点(3,0.45)开始,水平地绘出sint。另外,语句
plot(x1,y1,x2,y2),text(x1,y1,’1’),text(x2,y2,’2’)
标记出两条曲线,使它们很容易地区别开来。
注:Matlab5.3以上的版本还允许利用图形编辑窗口,直接编辑图形的网格线、标题,坐标标记,在图形上添加文字以及对图形进行旋转等操作。
d.图形类型和颜色。
Matlab的图形允许用户定义点、线的类型及其颜色,其命令行格式为
plot(x,y,str)
其中str为字符串,具体意义见表M-1。通过将字符串str作为一个参数传递给plot,可以指定图形的颜色和线型。表M-1列出了允许的值和它们代表的意义。这些参数可以组合起来使用,例如,‘y+’表示一个黄色的加号,而‘b-’表示一个蓝色的虚线。如果将要画的是几组数据,但是没有指定线型,系统将会自动按照表M-1赋予它们从黄到黑各种不同的颜色线型。
表M-1 点、线类型及其颜色
e.坐标轴的设定。
在绘制图形时,Matlab允许手工设定坐标的范围。例如,如果需要在下列语句指定的范围内绘制曲线
v=[x-min x-max y-min y-max]
则应输入命令axis(v),式中v是一个四元向量。axis(v)把坐标轴建立在规定的范围内。对于对数坐标图,v的元素应为最小值和最大值的常用对数。
执行axis(v)会把当前的坐标轴保持到后面的图形中,再次键入axis恢复自动定标。
axis(‘square’)把图形设定在正方形范围内,即长宽比=1。axis(‘normal’)将使长宽比恢复到正常状态。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。