MATLAB入门基础知识ByXiaominZhang2018.10第一部分:MATLAB显示桌面的基本布局1.启动MATLAB后,桌面会显示默认布局,主要有以下三个部分:当前文件夹命令行窗口工作空间2.在MATLAB中一般需要创建变量和调用函数。直接在命令行中输入变量名以及其值即可(比如:a=1),多个变量的创建同理,不再赘述。需要注意的是,如果没有定义输出变量,MATLAB会使用一个名为ans的变量来储存计算结果。3.如果语句以分号结束,表示MATLAB内部会执行这一运算,但是命令行不对计算结果进行输出。第二部分:矩阵和数组大多数的编程语言一次性只能对一个数进行操作,而MATLAB主要被用来对整个矩阵或者数组进行操作。不管是什么类型的数据,所有的MATLAB变量都是数组。矩阵是常用于线性代数的二维数组。1.数组的创建在一个单行中创建一个拥有四个元素的数组,其各个元素之间用逗号或者空格隔开。例如:a=[1234]这种数组叫做单行矩阵(行向量)。创建一个多行矩阵,其各个行之间用分号隔开。例如:b=[1,2;3,4;5,6]还可以用函数来创建矩阵。例如:创建一个5行1列每一个元素都是0的列向量。z=zero(5,1)2.矩阵和数组的操作在MATLAB中,允许用一个单一的运算或者函数对矩阵中所有的数据进行处理(操作)。如果要对矩阵进行转置,则使用单引号(‘),也可以通过执行标准矩阵乘法,通过*运算符来计算内积。inv(a)代表矩阵a的逆矩阵,一个矩阵与它的逆矩阵相乘的结果等于单位矩阵。要注意的是,下图中c不是一个整数值矩阵,显示的是较短格式,MATLAB存储数字是以浮点型存储的,真实值和它的浮点数在运算时有小小的不同,可以使用格式化命令formatlong显示更多的小数位数,也可以使用formatshort来重置到较短格式的使用。x=a.*a用来表示对矩阵的每一个元素做平方操作。若需要对每一个元素做立方运算,则用x=a.^3矩阵的扩充行方向上:A=[a,a]列方向上:A=[a;a]复数x被定义为二元有序实数对(a,b),记为z=a+bi,由实部和虚部组成,a和b是实数,i是虚数单位,虚部i的平方是-1,即sqrt(-1)=0.0000+1.0000i。复数的四则运算规定为:加法法则:(a+bi)+(c+di)=(a+c)+(b+d)i;减法法则:(a+bi)-(c+di)=(a-c)+(b-d)i;乘法法则:(a+bi)·(c+di)=(ac-bd)+(bc+ad)i除法法则:(a+bi)÷(c+di)=[(ac+bd)/(c²+d²)]+[(bc-ad)/(c²+d²)]i注意,工作区里的ans变量值不断被新的计算出的值覆盖。第三部分:数组的索引MATLAB中的每一个变量都是可以存储多个值的数组。如果想要使用数组中的某一个值,则需要用到索引。1.单个元素的索引先用magic(n)随机生成一个n*n的数组,从一个数组中索引某个元素一般有两种方法:第一种比较常见:数组名加要索引的元素所在的行和列,例如a(1,3)=6,代表第一行第三列的数据。第二种不太常用:Matlab中数组元素是按列存储,数组名加一个下标,该下标按列遍历。下例中存储顺序为16,5,9,4,2,11,7,14,3....,因此A(2)=5。2.多个元素的索引引用数组的多个元素,使用冒号操作符m:n(m,n分别表示索引开始和结束的范围),索引行则将行数放在逗号前,索引列要将列数放在逗号后。B=a([1359]),表示依次引用a的第1,3,5,9个元素,返回与引用元素个数相同的数组。a([259;111;856]),返回的时侯是一个3*3的矩阵。a(:),可以将数组a转换为列向量。a(1:3,2)索引第二列第1个元素到第3个元素。a(3,:)索引第三行全部元素。另外,冒号运算符也可以帮助创建一组等距的矢量值,例如:b=0:2:10,输出一个从0到10步长为2的数组。第四部分:工作空间变量工作区包含你创建的变量或者从数据文件或其他程序导入到MATLAB中的变量。rand函数产生由在(0,1)之间均匀分布的随机数组成的数组。Y=rand(n)返回一个nxn的随机矩阵。如果n不是数量,则返回错误信息。Y=rand(m,n)或Y=rand([mn])返回一个mxn的随机矩阵。Y=rand(m,n,p)产生m×n×p的三维随机数组。Y=rand(size(A))返回一个和A有相同尺寸的随机矩阵。例如,现在创建两个变量:a=magic(4)b=rand(2,3,4)我们可以通过whos来看工作空间的内容。·工作区的变量在退出MATLAB后就不存在了。所以一般使用savemyfile.mat命令来保存工作区变量以便以后使用。保存操作将当前工作文件夹中的工作区保存在一个压缩文件中,该文件的扩展名为.MAT,称为MAT文件。·如果想要清空工作空间里的所有变量,则需使用clear命令·使用loadmyfile.mat命令将MAT文件中的数据恢复到工作区第五部分:文本和字符在处理文本时,将其中的字符序列用单引号括起来,可以将文本分配给变量。例如:myText=‘Enjoyyourself’如果文本本身包括一个单引号,则在定义时使用两个单引号。例如:otherText=‘You”reright’myText和otherText为数组,他们的数据类型是字符型char(character的缩略形式)。注意:字符数组也可以像数字数组那样用方括号括起来表示。要将数字转换成字符,就要用到函数。例如num2str()或者int2str()。第六部分:函数调用MATLAB提供了大量执行计算任务的函数。在其他编程语言中,函数等同于子例程或方法。要调用函数,例如max,请将其输入参数括在圆括号中,如max(A);如果存在多个输入参数,请使用逗号加以分隔,如max(A,B);通过将函数赋值给变量,返回该函数的输出;如果存在多个输出参数,请将其括在方括号中;将任何字符输入括在单引号中:disp('helloworld')===输出helloworlddisp()用来显示变量的内容,括号里可以是字符,结构体,矩阵等等,类似于c语言的printf()。clc函数清除命令行窗口。第七部分:二、三维图1.折线图(1)画图plot函数是最基本的绘图函数,其基本的调用格式为:绘制单矢量曲线图:plot(y)------绘制向量y对应于其元素序数的二维曲线图,如果y为复数向量,则绘制虚部对于实部的二维曲线图.y=[00.62.358.311.71517.719.420];plot(y)plot(x,y)------绘制由x,y所确定的曲线x表示0到2*pi之间步长为pi/100的值,步长决定了横轴取值的密集程度。(2)坐标可以对横轴和纵轴分别命名,并对图像加上标题。xlabel、ylabel、title。(3)多组变量绘图:plot(x1,y1,选项1,x2,y2,选项2,……)选项是指为了区分多条画出曲线的颜色,线型及标记点而设定的曲线的属性。MATLAB在多组变量绘图时,可将曲线以不同的颜色,不同的线型及标记点表示出来.这些选项如下表所示:颜色属性选项:'r'红色'm'粉红'g'绿色'c'青色'b'蓝色'w'白色'y'黄色'k'黑色线型属性选项:'-'实线'--'虚线':'点线'-.'点划线标记点属性选项:'.'用点号绘制各数据点'^'用上三角绘制各数据点'+'用'+'号绘制各数据点'v'用下三角绘制各数据点'*'用'*'号绘制各数据点''用右三角绘制各数据点'.'用'.'号绘制各数据点''用左三角绘制各数据点's'或squar用正方形绘制各数据点'p'用五角星绘制各数据点'd'或diamond用菱形绘制各数据点'h'用六角星绘制各数据点这些选项可以连在一起用,如:'-.g'表示绘制绿色的点划线,'g+'表示用绿色的'+'号绘制曲线.注意:1)表示属性的符号必须放在同一个字符串中;2)可同时指定2~3个属性;3)与先后顺序无关;4)指定的属性中,同一种属性不能有两个以上。在MATLAB中,如画图前已有打开的图形窗口,则再画图系统将自动擦掉坐标系中已有的图形对象,但设置了holdon后,可以保持坐标系中已绘出的图形。上图中的程序也可以这样写:可以进一步设置包括线的宽度(LineWidth)标记点的边缘颜色(MarkerEdgeColor)填充颜色(MarkerFaceColor)标记点的大小(MarkerSize)可以看出:plot(t,y,'-bs','LineWidth',2,...%设置线的宽度为2'MarkerEdgeColor','k',...%设置标记点边缘颜色为黑色'MarkerFaceColor','y',...%设置标记点填充颜色为黄色'MarkerSize',10)%设置标记点的尺寸为10与plot(t,y,'-bs','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor','y','MarkerSize',10)效果是一样的,只是书写方式有所区别,第一种是代码分行(用...做为分行符)并用(%)在代码之间添加注释。2.3D图像3D图像通常用有两个参数的函数来定义一个曲面,z=f(x,y)。对于z,首先使用meshgrid命令在函数定义域内创建若干(x,y)。meshgrid函数用来生成网格矩阵,可以是二维网格矩阵,也可以是三维。对于生成二维网格,用法为:[xy]=meshgrid(a,b);a和b是一维数组,如a=[123];b=[234];则生成的x和y都是二维的矩阵,x的每行都是123,共三行,y每列都是234,共三列。对于三维网格,生成方式与二维一样:[xyz]=meshgrid(a,b,c);算出的结果根据二维的类推。比如,对于-2x2,-2y2,生成(x,y)的公式为[X,Y]=meshgrid(-2:.2:2,-2:.2:2);.2代表0.2,(-2:.2:2)表示在-2到2的区间上以0.2的长度为间隔的向量。此时变量x,y是由向量、数组或隔开的点组成,则后面有x,y变量的方程要加点(.),例如:Z=X.*exp(-X.^2-Y.^2);但是如果x是连续的变量,如symsx,则方程写成y=x*exp(-x*2)。surf(X,Y,Z)创建一个三维曲面图。该函数将矩阵Z中的值绘制为由X和Y定义的x-y平面中的网格上方的高度。函数还对颜色数据使用Z,因此颜色与高度成比例。surf(X,Y,Z,C)还指定曲面的颜色。mesh()生成由X,Y和Z指定的网线面,由C指定的颜色的三维网格图。3.绘制多个子图:subplot()函数MATLAB允许在一个图形窗口上绘制多个子图(如对于多变量系统的输出),允许将窗口分成nxm个部分。subplot(m,n,p)将当前图窗划分为m×n网格,并在p指定的位置创建坐标区。MATLAB按行号对子图位置进行编号。第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,则此命令会将该坐标区设为当前坐标区。注:subplot函数没有画图功能,只是将窗口分割。4.MATLAB下图形对象的修改MATLAB图形对象是指图形系统中最基本,最底层的单元,这些对象包括:屏幕(Root),图形窗口(Figures),坐标轴(Axes),控件(Uicontrol),菜单(Uimenu),线(Lines),块(Patches),面(Surface),图像(Images),文本(Text)等等。对各种图形对象进行修改和控制,要使用MATLAB的图形对象句柄(Handle)。在MATLAB中,每个图形对象创立时,就被赋予了唯一的标识,这个标识就是该对象的句柄。句柄的值可以是一个数,也可以是一个矢量,如每个计算机的根对象只有一个,它的句柄总是0,图形窗口的句柄总是正整数,它标识了图形窗口的序号等。利用句柄可以操纵一个已经存在的图形对象的属性,特别是对指定图形对象句柄的操作不会影响