《第一章 MATLAB基础.doc》由会员分享,可在线阅读,更多相关《第一章 MATLAB基础.doc(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章 MATLAB基础1.1 MATLAB概述1.1.1 MALTAB简介Matlab是“Matrix Laboratory”的缩写,意为“矩阵实验室”,主要适用于矩阵运算及控制和信息处理领域的分析设计。它使用方便,输入简便,运算高效、内容丰富、容易由用户自行扩展。现已成为美国和其它发展中国家大学教学和科研中不可缺少的工具。Matlab是一个交互式的系统,它的基本运算单元是不需指定维数的矩阵,按照IEEE的数值计算标准(能正确处理无穷数Inf(Infinity)、无定义数NaN(not-a-number)及其运算)进行计算系统提供了大量的矩阵及其它运算函数,可以方便地进行一些很复杂的计算,而
2、且运算效率极高Matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握,还可利用它所提供的编程语言进行编程完成特定的工作。Matlab自1984年推出以来,版本不断升级,1992年4.x版,1997年5.0版,1999年5.3版,2000年6.0版,2004年7.0版,从2006年起, MathWorks公司每年发布两次以年份命名的MATLAB版本,如R2006a(MATLAB 7.2)、R2006b(MATLAB 7.3)、R2007a(MATLAB 7.4)、R2007b(MATLAB 7.5)、R2008a(MATLAB 7.6)、R2008b(MATLAB 7.7)、R2009
3、a(MATLAB 7.8)、R2009b(MATLAB 7.9)等。历经几十年的发展和竞争,现已成为国际最优秀的科技应用软件之一。1.1.2 MATLAB的特点1.功能强大MATLAB具有数值计算和符号计算功能,以及简单易用的绘图功能,MATLAB提供了各种工具箱,用于求各类(各学科)应用问题,另外,还提供了仿真工具。2.语言简单Matlab语言是一种解释执行的语言(在没被专门的工具编译之前),它灵活、方便,其调试程序手段丰富,调试速度快,需要学习时间少。Matlab语言与其它语言相比,较好地解决了编辑、编译、连接和执行问题,融为一体。它能在同一画面上进行灵活操作快速排除输入程序中的书写错误、
4、语法错误以至语意错误,从而加快了用户编写、修改和调试程序的速度,可以说在编程和调试过程中它是一种比VB还要简单的语言。3扩充能力强Matlab语言有丰富的库函数,在进行复杂的数学运算时可以直接调用,而且Matlab的库函数同用户文件在形成上一样,所以用户文件也可作为Matlab的库函数来调用。用户可以根据自己的需要方便地建立和扩充新的库函数,以便提高Matlab使用效率和扩充它的功能。另外,为了充分利用Fortran、C等语言的资源,包括用户已编好的Fortran,C语言程序,混合编程,方便地调用有关的Fortran,C语言的子程序。4语句简单,内涵丰富 Mat1ab语言中最基本最重要的成分是
5、函数,其一般形式为a,b,c,=fun(d,e,f,),即一个函数由函数名fun,输入变量d,e,f,和输出变量a,b,c组成,对同一函数名fun,不同数目的输入变量(包括无输入变量)及不同数目的输出变量,代表着不同的含义(有点像面向对象中的多态性)。这不仅使Matlab的库函数功能更丰富,而大大减少了需要的磁盘空间,使得Matlab编写的M文件简单、短小而高效。1.1.3 MATLAB的主要功能1数值计算和符号计算功能MATLAB以矩阵作为数据操作的基本单位,还提供了十分丰富的数值计算函数。MATLAB和著名的符号计算语言Maple与MuPAD(从MATLAB 2008b开始使用MuPAD)
6、相结合,使得MATLAB具有符号计算功能。2绘图功能MATLAB提供了两个层次的绘图操作:一种是对图形句柄进行的低层绘图操作,另一种是建立在低层绘图操作之上的高层绘图操作。3编程语言MATLAB具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,而且简单易学、编程效率高。4MATLAB工具箱MATLAB包含两部分内容:基本部分和各种可选的工具箱。MATLAB工具箱分为两大类:功能性工具箱和学科性工具箱。除基本部分外,Matlab还根据各专门领域中的特殊需要提供了许多可选的工具箱,如应用于自动控制领域的Control System工具箱和神经网络中Neural Network
7、工具箱等1.2 Matlab的集成环境1.2.1 启动与退出MATLAB集成环境安装MATLAB 7.X系统,需运行系统自带的安装程序setup.exe,可以按照安装提示依次操作。与一般的Windows程序一样,启动MATLAB系统有3种常见方法:(1)使用Windows“开始”菜单。(2)运行MATLAB系统启动程序matlab.exe。(3) 双击桌面的MATLAB图标。启动MATLAB后,将进入MATLAB 7.x集成环境。MATLAB 7.x集成环境包括MATLAB主窗口、命令窗口(Command Window)、工作空间窗口(Workspace)、命令历史窗口(Command His
8、tory)、当前目录窗口(Current Directory)和启动平台窗口(Launch Pad)。当MATLAB安装完毕并首次启动时,展现在屏幕上的界面为MATLAB的默认界面,如下图1.1所示。图11.1(7.5版)要退出MATLAB系统,也有3种常见方法:(1) 在MATLAB主窗口File菜单中选择Exit MATLAB命令。(2) 在MATLAB命令窗口输入Exit或Quit命令。(3) 单击MATLAB主窗口的“关闭”按钮。1.2.2 主窗口MATLAB主窗口是MATLAB的主要工作界面。主窗口除了嵌入一些子窗口外,还主要包括菜单栏和工具栏。1菜单栏MATLAB的菜单栏包括7个菜
9、单项,其中File菜单实现有关文件的操作,Edit菜单用于命令窗口的编辑操作,Debug菜单用于程序调试,Parallel菜单用于设置并行计算的运行环境,Desktop菜单用于设置MATLAB集成环境的显示方式,Window菜单用于关闭所有打开的编辑器窗口或选择活动窗口,Help菜单用于提供帮助信息。2工具栏MATLAB的工具栏提供了一些命令按钮(包括新建文件、打开文件、剪切、复制和粘贴等常用图标)和一个当前路径列表框。这些命令按钮有对应的菜单命令,但比菜单命令使用起来更快捷、方便。1.2.3 命令窗口(Command Window)命令窗口是MATLAB的主要交互窗口,用于输入命令并显示除图
10、形以外的所有执行结果。MATLAB命令窗口中的“”为命令提示符,表示MATLAB正在处于准备状态。在命令提示符后键入命令并按下回车键后,MATLAB就会解释执行所输入的命令,并在命令后面给出计算结果。一般来说,一个命令行输入一条命令,命令行以回车结束。但一个命令行也可以输入若干条命令,各命令之间以逗号分隔,若前一命令后带有分号,则逗号可以省略。例如p=15,m=35p=15;m=35如果一个命令行很长,一个物理行之内写不下,可以在第一个物理行之后加上3个小黑点并按下回车键,然后接着下一个物理行继续写命令的其他部分。3个小黑点称为续行符,即把下面的物理行看作该行的逻辑继续。在MATLAB里,有很
11、多的控制键和方向键可用于命令行的编辑。1.2.4 工作空间窗口工作空间是MATLAB用于存储各种变量和结果的内存空间。在该窗口中显示工作空间中所有变量的名称、大小、字节数和变量类型说明,可对变量进行观察、编辑、保存和删除。1.2.5 当前目录窗口和搜索路径1当前目录窗口当前目录是指MATLAB运行文件时的工作目录,只有在当前目录或搜索路径下的文件、函数可以被运行或调用。在当前目录窗口中可以显示或改变当前目录,还可以显示当前目录下的文件并提供搜索功能。将用户目录设置成当前目录也可使用cd命令。例如,将用户目录c:mydir设置为当前目录,可在命令窗口输入命令:cd c:mydir2MATLAB的
12、搜索路径当用户在MATLAB命令窗口输入一条命令后,MATLAB按照一定次序寻找相关的文件。基本的搜索过程是:(1) 检查该命令是不是一个变量。(2) 检查该命令是不是一个内部函数。(3) 检查该命令是否当前目录下的M文件。(4) 检查该命令是否MATLAB搜索路径中其他目录下的M文件。用户可以将自己的工作目录列入MATLAB搜索路径,从而将用户目录纳入MATLAB系统统一管理。设置搜索路径的方法有:(1) 用path命令设置搜索路径。例如,将用户目录c:mydir加到搜索路径下,可在命令窗口输入命令:path(path,c:mydir)(2) 用对话框设置搜索路径。在MATLAB的File菜
13、单中选Set Path命令或在命令窗口执行pathtool命令,将出现搜索路径设置对话框。通过Add Folder或Add with Subfolder命令按钮将指定路径添加到搜索路径列表中。在修改完搜索路径后,则需要保存搜索路径。1.2.6 命令历史记录窗口命令历史窗口可以内嵌在MATLAB主窗口的右下部,也可以浮动在主窗口上。在默认设置下,历史记录窗口中会自动保留自安装起所有用过的命令的历史记录,并且还标明了使用时间,从而方便用户查询。而且,通过双击命令可进行历史命令的再运行。如果要清除这些历史记录,可以选择Edit菜单中的Clear Command History命令。1.2.7 启动平
14、台窗口和Start按钮MATLAB 7.x的启动平台窗口可以帮助用户方便地打开和调用MATLAB的各种程序、函数和帮助文件。MATLAB 7.x主窗口左下角还有一个Start按钮,单击该按钮会弹出一个菜单,选择其中的命令可以执行MATLAB产品的各种工具,并且可以查阅MATLAB包含的各种资源。1.3 数据与变量1.3.1 表达式Matlab的表述语句、变量的类型说明由Matlab系统解释和判断,Matlab语句通常形式为:(1)变量=表达式或者使用其简单形式:(2)表达式其中表达式是用运算符将有关运算量连接起来的式子,其结果是一个矩阵。显示在屏幕上,同时保存在变量中以留用如果变量名和“=”省
15、略,则具有ans名(意思指回答)的变量将自动建立例1-1:设球的半经为r=2,求球的体积解: 在命令窗口输入以下代码:r=2r=2V=4/3*pi*r3 %pi为系统内置常量,乘方用表示V= 33.5103需注意的问题有以下几点:l 语句结束键入回车键,若语句的最后一个字符是分号,即“;”,则表明不输出当前命令的结果l 如果表达式很长,一行放不下,可以键入“”(三个点,但前面必须有个空格,目的是避免将形如“数2 ”理解为“数2.”与“.”的连接,从而导致错误),然后回车Matlab变量字母区分大小写,如A和a不是同一个变量,函数名一般使用小写字母,如inv(A)不能写成INV(A),否则系统认
16、为未定义函数例1-2(续):r=2;V=4/3*pi*r3V= 33.5103 %用分号时,r的结果不显示r=2,V=4/3*pi %用三个“”表示续行*r3 %因为是接上一行,前面没有提示符r=2V= 33.5103若需要修改已执行过的命令行,可以在命令历史窗口中找到该命令行复制,再粘贴至命令窗口修改,也可直接使用、键调出已执行的命令进行修改。例如,现将半经改为9,那么使用上述方法得:r=9; %更新r值V=4/3*pi*r3 %使用键直接调出.V= 3.0536e+0031.3.2 数据显示格式MATLAB用十进制数表示一个常数,具体可采用日常记数法和科学记数法两种表示方法。MATLAB默
17、认的数据显示格式为短格式(short),当结果为整数时,就作为整数显示,当结果是实数时,则以小数点后4位的长度显示;若结果的数据的有效数字超出一定范围,则使用科学记数法显示;在一般情况下,MATLAB内部每一个数据元素都是用双精度数来表示和存储的。数据输出时用户可以用format命令设置或改变数据输出格式。format命令的格式为:format 格式符其中格式符决定数据的输出格式表1-1 format命令的格式Format命令命令的含义Format缺省输出格式与short相同Format short5位定点格式(四位小数)Format long15位定点格式Format short e5位浮点
18、格式Format long e15位浮点格式Format short g最佳5位定点格式或浮点格式Format hex十六进制格式Format +用+、-符号和空格表示正、负数和零元素Format long g最佳15位定点格式或浮点格式Format bank用于美元和美分(金融)的固定格式,即小数点后两位Format rat用有理分式表示Format compact压缩额外的空行Format loose显示变量之间插入空行例如:x=4/3 1.2345e-6在不同的输出格式下的结果为:短格式1.33330.0000短格式e方式1.3333e+0001.234e-006长格式1.33330.0
19、000长格式e方式1.3333e-0001.000e-006有理数格式4/31/16进制格式3ff553eb4b6231abfd271+ 格式+注:Matlab系统的数字显示格式可以由Option菜单中的Numerical Format菜单改变,format命令只影响数据输出格式,而不影响数据的计算和存储。1.3.3 复数在Matlab中输入复数,可以同实数一样,直接输入和计算。Z=3+4i %注意: 在4与i之间不要留有任何空间! 输入复数矩阵有两个方便的方法,如:A=1 2; 3 4 + i*5 6; 7 8A=1+5i 2+6i; 3+7i 4+8i两式具有相等的结果但当复数作为矩阵的元
20、素输入时,不要留有任何空间,如1+5i,如在“+”号左右留有空格,就会被认为是两个分开的数a=1+2i;b=5-4i;c=a/3bc=-0.0732+0.3415i思考:a=1+2*i与a=1+2i结果会一样吗?1.3.4 系统预定义变量Matlab有一些预定义变量(如下表所示,大小写均可),MALTAB启动时就已赋值,可以直接使用。如前面使用过的圆周率,用pi表示圆周率(=3.1415)的近似值,用i,j表示虚数单位。表 1-2系统预定义变量变量名说明ans最近一次的答案pi3.579Inf值,无穷大 (Infinity)NaN无法定义一个数目 (Not a number)i 或 j 复数中
21、的虚数单位i=j=Nargin 函数输入参数个数nargout函数输出参数个数realmax最大浮点实数realmin最小浮点实数flops浮点运算次数epsMATLAB定义的正的极小值=2.2204e-16特殊变量ans是系统本身一个特殊变量名,若运算结果没有赋于任何变量,系统将其赋予ans。预定义变量有特定的含义,在使用时,应尽量避免对这些变量重新赋值。预定义变量在工作空间窗口中观察不到,如果预定义变量被用户重新赋值,则原来的功能暂不能使用,当这些用户变量被清除(clear)后或MATLAB被重新启动后,这些功能又得以恢复。例如:x=1+2i;y=3-sqrt(17);z=(cos(abs
22、(x+y)-sin(78*pi/180)/(x+abs(y)输出结果是:z = -0.3488 + 0.3286i1.3.5 用户变量Matlab变量名总以字母开头,由字母、数字或下划线组成,区分大小写,但最多不能超过63个字符,否则系统只承认前63个字符Matlab变量字母区分大小写,如A和a不是同一个变量,函数名一般使用小写字母,如inv(A)不能写成INV(A),否则系统认为未定义函数又如A,A1,A_b,sum1等都是合法的,而1a,a-b,a*b等都是不合法的变量名。在Command Window中使用的变量一旦被赋值,就会携带这个值存在于工作空间(Workspace),直到被清除(
23、Clear)或被赋予新的变量。clear命令用于删除MATLAB工作空间中的变量。who和whos这两个命令用于显示在MATLAB工作空间中已经驻留的变量名清单。who命令只显示出驻留变量的名称,whos在给出变量名的同时,还给出它们的大小、所占字节数及数据类型等信息。例如:A=5+4i;b=5-4i;B_1=2;A*b; whos Name Size Bytes Class A 1x1 16 double array (complex) B_1 1x1 8 double array V 1x1 8 double array ans 1x1 8 double array b 1x1 16 do
24、uble array (complex) r 1x1 8 double arrayGrand total is 6 elements using 64 bytesA %查询变量A的值5.0000+4.0000iclear AA? Undefined function or variable A.%再查询变量A的值,已经不存在了。clear %清除Workspace窗口中所有变量whos %Workspace窗口中已经没有任何变量清除Workspace 中所有变量也可以使用菜单Eidt: Clear Workspace 实现。注意菜单Eidt:Clear Workspace与菜单Eidt:Cle
25、ar Command Window的区别。后者虽然擦干净了指令窗口显示,但并不清除变量,变量连同它的值仍然存在,可继续使用。1.3.6 数据文件当清除变量或退出MATLAB时,这些变量不复存在,利用MAT文件可以把当前MATLAB工作空间中的一些有用变量长久地保留下来,扩展名是.mat。MAT文件的生成和装入由save和load命令来完成。常用格式为:save 文件名 变量名表 -append-asciiload 文件名 变量名表 -ascii其中,文件名可以带路径,但不需带扩展名.mat,命令隐含一定对.mat文件进行操作。变量名表中的变量个数不限,只要内存或文件中存在即可,变量名之间以空格
26、分隔。当变量名表省略时,保存或装入全部变量。-ascii选项使文件以ASCII格式处理,省略该选项时文件将以二进制格式处理。save命令中的-append选项控制将变量追加到MAT文件中。例如:clear ;a=1;b=2;c=a*b;d=a+c;在文件File菜单下的SaveWworkspace as 命令存入数据文件,取名为abc.mat;clear %现在可以看到Workspace窗口中已经清空现在再将数据装载一工作空间,方法是:选择File菜单下的Import data 命令,找到保存好的数据文件,打开。以看到Workspace窗口中又有了变量a,b,c,d,双击鼠标可以看到其数据值。
27、上述过程也可以通过工作空间(Workspace)窗口中的工具栏来实现。Mat是二进制数据文件,用普通软件是不能读取的。MATLAB命令save和load提供了写与读ASCII码数据文件的选项(详见save和load的帮助)。例如:clear ;a=1;b=2;c=a*b;d=a+c;save mydata.txt ascii double; %将数据用双精度存入ASCII码方式文本文件mydata.txt中clear %此时Workspace已经清空load mydata.txt这时发现工作空间(Workspace)有了一个变量mydata(它是一个4*1数组),打开,发现该变量里就是原来a,
28、b,c,d的值。与mat文件不同的是,文本文件只保存数据,而不保存变量。MATLAB还允许使用C语言读写指令fprintf, fsacnf,fopen, fread等来传递格式化数据文件,其使用格式与C语言基本一致。详细可参考有关的MATLAB教科书。1.4运算符MATLAB运算符分为算术运算符、关系运算符与逻辑运算符3类,下面分别进行介绍。1.4.1 算术运算符算术运算符是构成运算的最基本的操作命令,可以在MATLAB的命令窗口中直接运行,如表1-3所示。表1-3 算术运算符运算符功能+加法运算。两个数相加或两个同阶矩阵相加;如果一个矩阵和一个数字相加,这个数字自动扩展为与矩阵同维的一个矩阵
29、。-减法运算,两个数相减或两个同阶矩阵相减;*乘法运算。两个数相乘或两个同阶矩阵相乘;/除法运算(也称右除运算)。两个数相除或两个可除矩阵相除(a/b表示ab,A/B表示A乘以B的逆,即AB-1);,详见第四章。乘幂运算,数的方幂或一个方阵的多少次方左除运算。两个数相除,或两个可除矩阵相除(ab表示ba,AB表示A-1B),详见第四章。.*点乘运算。两个同阶矩阵对应元素相乘.点乘幂运算。一个矩阵中各个元素的多少次方./点除运算。两个同阶矩阵对应元素相除.点左除运算。两个同阶矩阵对应元素左除例1-3:clear;A=1 -1;0 2;B=0 1;1 -1;A+Bans = 1 0 1 1A+10
30、0ans = 101 99 100 102 100*Aans = 100 -100 0 200A.*B %注意不是A*Bans = 0 -1 0 -2A.B,A./B %设A=(aij),B=(bij),则A.B为bijaij, A./B为aijbijans = 0 -1.0000 Inf -0.5000ans = Inf -1 0 -2A.2ans = 1 1 0 42.Aans = 2.0000 0.50001.0000 4.00001.4.2 关系运算符MATLAB提供了6种关系运算符:(小于)、(大于)、=(大于或等于)、= =(等于)、=(不等于)。它们的含义不难理解,但要注意其书写
31、方法与数学中的不等式符号不尽相同。关系运算符的运算法则为:(1)当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。(2)当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。(3)当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。A=-2:4,B=4:-1:-2A = -2 -1 0 1 2 3
32、 4B = 4 3 2 1 0 -1 -2ABans = 0 0 0 0 1 1 1A=Bans = 0 0 0 1 0 0 0A2ans = 0 0 0 0 0 1 1例1-4 建立矩阵C,然后找出大于4的元素的位置。 A=4,-65,-54,0,6;56,0,67,-45,0C = 4 -65 -54 0 6 56 0 67 -45 0 find(C4) %找出大于4的元素的位置。ans = 2 6 9注:在MATLAB中,“真”用1表示,“假”用0,而逻辑运算中,所有非零元素作为1处理1.4.3 逻辑运算符MATLAB提供了3种逻辑运算符:&(与)、|(或)和(非)。逻辑运算的运算法则为
33、:(1)在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。(2)设参与逻辑运算的是两个标量a和b,那么:a&b a,b全为非零时,运算结果为1,否则为0。a|b a,b中只要有一个非零,运算结果为1。a 当a是零时,运算结果为1;当a非零时,运算结果为0。(3)若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成。(4)若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成。(5)逻辑非是单目运算
34、符,也服从矩阵运算规则。(6)在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。逻辑关系函数运算还有All,any 等,下面举例说明。A=-2:4,B=4:-1:-2A = -2 -1 0 1 2 3 4B = 4 3 2 1 0 -1 -2A&Bans = 1 1 0 1 0 1 1A|Bans = 1 1 1 1 1 1 1any(abs(A)2)ans = 1all(abs(A)2)ans = 01.5 数组及其运算MATLAB基本数据单元是无需指定维数的数组。数组运算是MATLAB最鲜明的特点,它一方面可以使得计算程序简明易读,另一方面可以提高计算速度。1.5.1 数组
35、的输入最常用的数组是双精度数值数组(double array)。一维数组称为向量,二维数组称为矩阵,一个数可以视为数组的特例。二维数组的第一维称为“行”,处二维称为“列”。MATLAB数组无需预定义数组维数。1. 输入简单的矩阵-直接输入法最简单的建立矩阵的方法是从键盘直接输入矩阵的元素。具体方法如下:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。例如输入:clear; A=1 2 3 ; 4 5 6 ; 7 8 9系统会回答A =1 2 34 5 67 8 9表示系统已经接收并处理了命令,在当前工作区内建立了矩阵A大的矩
36、阵可以分行输入,用回车键代替分号,如:A= 1 2 34 5 67 8 9 结果和上式一样。2. 利用冒号表达式建立一个向量冒号表达式可以产生一个行向量,一般格式是:e1:e2:e3其中e1为初始值,e2为步长,e3为终止值。当e2省略时,表示步长为1。注意:初始值,步长,终止值三者的关系,可能会产生空向量!x=0:pi/4:pi x =00.78541.57082.35623.1416即产生一个由0pi的行向量,单位增量是pi/4=3.1416/4=0.7854b=0:3:10 %初值0,步长3,终值10b= 0 3 6 9b=0:10 %步长1可省略b= 0 1 2 3 4 5 6 7 8
37、 9 10b=10:-3:0 %递减b= 10 7 4 1b=2:3:-1 %产生空矩阵b = Empty matrix: 1-by-03. 用函数linspace,logspace生成 在MATLAB中,还可以用linspace函数产生线性等分行向量。其调用格式为:linspace(a,b,n)其中a和b是生成向量的第一个和最后一个元素,n是元素总数。n省略,则为n=100,显然,linspace(a,b,n)与a:(b-a)/(n-1):b等价。b=linspace(0,10,6)b=linspace(0,10,6)b = 0 2 4 6 8 10而MATLAB的提供了对数等分向量函数lo
38、gsapce(a,b,n),其使用格式与linspace类似,其中向量的第一个元素是10a,最后一个元素是10b,n省略,则为n=50,例如h=logspace(0,5,6)h = 1 10 100 1000 10000 4. 利用M文件建立矩阵对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。下面通过一个简单例子来说明如何利用M文件创建矩阵。例1-5 利用M文件建立MYMAT矩阵。(a)启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵:(b)把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。(c)在MATLAB命令窗口中输入mymatrix,即运行该M文件,就会自
39、动建立一个名为MYMAT的矩阵,可供以后使用。5. 利用矩阵函数生成Matlab提供了一批产生矩阵的函数,如下表所示:表1-4zeros产生一个零矩阵diag产生一个对角矩阵ones生成全1矩阵tril取一个矩阵的下三角eye生成单位矩阵triu取一个矩阵的上三角magic 生成魔术方阵产pascal生成PASCAL矩阵rand生01间均匀分布的随机矩阵randn产生均值为0,方差为1的标准正态分布随机矩阵。以zeros(生成全部元素为0的零矩阵)为例,函数的格式为:A=zeros(n) 生成nn零矩阵A=zeros(m,n) 或 zeros(m,n) 生成mn零矩阵A=zeros(m,n,p
40、, ) 生成mnp的零矩阵B=zeros(size(A) 生成和矩阵A大小相等的全零矩阵。 例如: H=zeros(3)H = 0 0 0 0 0 0 0 0 0 H=zeros(3,4)H = 0 0 0 0 0 0 0 0 0 0 0 0ones(3)ans = 1 1 1 1 1 1 1 1 1eye(3)ans = 1 0 0 0 1 0 0 0 1除了以上产生标准矩阵的函数外,Matlab还提供了产生随机(向量)矩阵的函数rand和randn,及产生均匀级数的函数linspace、产生对数级数的函数logspace和产生网格的函数meshgrid等等详细使用请查阅随机文档例1-6 建
41、立随机矩阵:(1)在区间20,50内均匀分布的5阶随机矩阵。(2)均值为0.6、方差为0.1的5阶正态分布随机矩阵。命令如下:x=20+(50-20)*rand(5)y=0.6+sqrt(0.1)*randn(5)此外,常用的函数还有reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的二维矩阵。6. 建立大矩阵-矩阵的拼接大矩阵可由方括号中的小矩阵或向量建立起来。例如:A=1 2 3;4 5 6;7 8 9; C=A,eye(size(A); ones(size(A),A C = 1 2 3 1 0 0 4 5 6 0 1 0 7 8 9 0 0 1 1 1 1 1 2 3 1 1 1 4 5 6 1 1 1 7 8 97. 矩阵的拆分(1)矩阵元素: 通过下标引用矩阵的元素,例如A(3,2)=200采用矩阵元素的序号来引用矩阵元素。矩阵元素的序号就是相应元素在内存中的排列顺序。在MATLAB中,矩阵元素按列存储,先第一列,再第二列,依次类推。例如A=1,2,3;4,5,6;A(3)ans = 2显然,序号(Index)与下标(S
限制150内