已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB 基础一、简介MATLAB是一门计算机程序语言,取名源于Matrix Laboratory,意在以矩阵方式处理数据。一般认为MATLAB的典型应用包括:数值计算与分析、符号运算、建模与仿真、数据可视化、图形处理及可视化、基于图形用户界面的应用程序开发。MATLAB7.3.0启动后界面如图?所示。命令窗口(Command Window):(1) 用于执行MATLAB命令,正常情况下提示符为“”,表示MATLAB进入工作状态。(2) 在提示符后输入运算指令和函数调用等命令(不带“;”),MATLAB将迅速显示出结果并再次进入准备工作状态。(3) 若命令后带有“;”,MATLAB执行命令后不显示结果。(4) 在准备工作状态下,如果按上下键,MATLAB会按顺序依次显示以前输入的命令,若要执行它,则直接回车即可。工作空间(Workspace):(1) 显示计算机内存中现有变量的名称、类型、结构及其占用子节数等。(2) 如果直接双击某变量,则弹出Array Editor窗口供用户查看及修改变量内容。(3) 该窗口上有工具条支持用户将某变量存储到文件中或者从文件中载入某变量。命令历史记录(Command History):(1) 保存并显示用户在命令窗口中输入过的命令,以及每次启动MATLAB的时间等信息。(2) 若双击某条命令记录,则MATLAB会再次执行该命令。当前路径窗口(Current Directory):(1) 先是当前路径内的所有文件。(2) 用户可以在这里新建或删除一个文件,也可以双击一个文件,在编辑/调试窗口中打开。设置当前路径(Current Directory):(1) 用于选择当前工作路径。(2) 可以在命令窗口中输入文件名来直接调用工作路径下的文件。使用MATLAB时获取帮助的两种方法:一是直接在命令窗口中输入help 函数名或命令;二是在帮助窗口中浏览或搜索相应信息。还可以参考MATLAB的Demo程序来学习MATLAB编程。二、基本语法(一)变量及其赋值1、标识符与数(1)标识符是标识变量名、常量名、函数名和文件名的字符串的总称。在MATLAB中,变量和常量的标志符最长允许19个字符;函数和文件名通常不超过8个字符(受操作系统文件管理器的限制)。这些字符包括全部的英文字母(区分大小写)、阿拉伯数字和下划线等符号。标识符的第一个字符必须是英文字母。(2)MATLAB中只有双精度一种数据格式,它把简化编程作为主要目标,以运算速度和内存消耗为代价,省去了多种数据格式,唯一采用双精度格式进行数据的存储和运算。虽然它的数据格式只有一种,但是为了人机交互方便,输出显示格式有8种。下表显示了在各格式控制命令下圆周率的显示结果。MATLAB命令显示形式说明format long3.1415926535897916位十进制数format long e3.141592653589793e+00016位十进制数加指数format short(默认)3.1416二位整数,四位小数format short e3.1416e+0005位十进制数加指数format hex400921fb54442d1816位十六进制数format bank3.14两位小数format +正、负或零format rat355/113分数近似MATLAB默认的显示格式是format loose(稀疏格式),屏幕的显示会有很多空行,而如果用显示格式命令format compact(紧凑格式),则会用紧凑格式显示。2、矩阵及其元素的赋值(1)MATLAB中的变量或常量都代表矩阵,标量应看作11阶的矩阵。(2)矩阵的赋值:矩阵的值放在方括号中;一行中各元素之间以逗号或者空格分开,不同的行则以分号隔开;句的结尾可用回车符或逗号,此时会立即显示运算结果。如果不希望显示结果,就以分号结尾。此时运算仍然执行,只是不显示。变量的元素用圆括号“()”中的数字(也称为下标)来注明,一维矩阵(也称为数组或向量)中的元素用一个下标表示,二维的矩阵可有两个下标数,以逗号分开。赋值语句一般形式为:变量=表达式(或数)例如:输入语句a=1 2 3;4 5 6;7 8 9则显示结果为a = 1 2 3 4 5 6 7 8 9 元素可以用表达式代替。如输入x=-1.3 sqrt(3) (1+2+3/5*4)则显示结果为x = -1.3000 1.7321 4.8000 可以单独给矩阵的元素赋值。如x(2)=1.7321,a(2,3)=6等。如果赋值元素的下标超出了原来矩阵的大小,矩阵的行列会自动扩展。跳空的元素会被自动赋值为0。如x(5)=abs(x(1)则得x=-1.3000 1.7321 4.800001.3000又如键入a(4,3)=6.5,则得a = 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 0 0 6.5000 给全行赋值,可用冒号。如给a的第5行赋值。键入a(5,:)=5,4,3得a =1.0000 2.0000 3.00004.0000 5.0000 6.00007.0000 8.0000 9.00000 0 6.50005.0000 4.0000 3.0000 要取出a的第2、4 行及第1、3列交点上的元素取出,构成一个新矩阵b。可键入b=a(2,4,1,3)得b = 4.0000 6.00000 6.5000 要抽除a中的第2、4、5行,可利用空矩阵(指没有元素的矩阵,对任何一个矩阵赋值,就是使它的元素都消失,注意它与“零矩阵”不同)。键入 a(2,4,5,:)=得a =1 2 37 8 9对于“变量=表达式(或数)”的赋值形式,如果不要等式左端而只剩下右端,则MATLAB会自动给出一个临时变量ans,把右端的结果暂存于ans中。例如键入a/7得ans = 0.1429 0.2857 0.42861.0000 1.1429 1.28573、复数矩阵、运算及其赋值(1)MATLAB的每一个元素都可以是复数,复数的虚数部分用i或j表示,这是在MATLAB启动时就在内部设定的。MATLAB中所有的运算符和函数都对复数有效。例如:键入c=3+5.2i或c=3+5.2j得c = 3.0000 + 5.2000i(2)复数矩阵有两种赋值方法。 对复数矩阵的元素逐个赋值。如键入z=1+2i,3+4i;5+6i,7+8i得z = 1.0000 + 2.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000i 对其实部矩阵和虚部矩阵分别赋值。如键入z=1,3;5,7+2,4;6,8*i得z = 1.0000 + 2.0000i 3.0000 + 4.0000i 5.0000 + 6.0000i 7.0000 + 8.0000i注意:只有数字与i的乘积可以省略乘号,在上述矩阵式中若省略乘号*,就会出错。如果在前面程序中曾给i或j赋过其他值,则i或j已不是虚数符号,那么这些虚数赋值语句就不对了。此时应键入clear i, j,即把原赋的i,j清掉,然后再执行复数赋值语句。(3)复数矩阵的转置、共轭运算 函数conj对矩阵的每个元素求共轭,即把各元素的虚部反号。 运算符 对矩阵作共轭和转置,即把其行列互换,同时把各元素的虚部反号。 因此,如果只求转置而不要共轭,就把conj和 结合起来使用。例如键入w=z,u=conj(z),v=conj(z)得w = 1.0000 - 2.0000i 5.0000 - 6.0000i 3.0000 - 4.0000i 7.0000 - 8.0000iu = 1.0000 - 2.0000i 3.0000 - 4.0000i 5.0000 - 6.0000i 7.0000 - 8.0000iv = 1.0000 + 2.0000i 5.0000 + 6.0000i 3.0000 + 4.0000i 7.0000 + 8.0000i4、基本矩阵 单位矩阵eye(n)是nn阶的方阵,其对角线上的元素为1,其余元素均等于0。 全0矩阵zeros(m,n)是mn的所有元素均为0的矩阵。 全1矩阵ones(m,n)是mn的所有元素均为1的矩阵。 均分向量linspace(a,b,n)是在a与b之间均匀地产生n个点值,形成n维向量。如:键入f1=ones(3,2),f2=zeros(2,3),f3=eye(2)得f1 = 1 1 1 1 1 1f2 = 0 0 0 0 0 0f3 = 1 0 0 1键入f4=linspace(0,1,5)得f4 = 0 0.2500 0.5000 0.7500 1.0000 大矩阵可由小矩阵组成,但必须其行列数正确,恰好填满全部元素。如键入f5=1 1 1;2 2 2;3 3 3得f5 = 1 1 1 2 2 2 3 3 3则键入fb=f1,f5;f3,f2可得fb = 1 1 1 1 1 1 1 2 2 2 1 1 3 3 3 1 0 0 0 0 0 1 0 0 0(二)矩阵的初等运算1、矩阵的加减乘法(1)矩阵加减法两矩阵相加(减)就是其对应元素的相加(减),通过+、-运算符实现,要求相加(减)的两个矩阵的结构必须相同。用MATLAB的size语句来检查结构是否相同。例如:键入m,n=size(fb)得m = 5n = 5当两个矩阵相加(减)时,如果有一个是标量,则MATLAB承认算式有效,并自动将该标量扩展成同结构的等元素矩阵,再进行加(减)运算。例如:键入x=-1 0 1;y=x-1得y =-2 -1 0对于一维矩阵(数组),可以用length语句来求其长度,它不区分列或行,只有一个输出量,而size有两个输出量,所以,作加减法的结构检验时只能用size。(2)矩阵乘法np的矩阵A与pm的矩阵B的乘积C是一个nm的矩阵,通过运算符*实现。p是A矩阵的列数,也是B矩阵的行数,称为这两个相乘矩阵的内阶数,这里要注意,两矩阵相乘的必要条件是它们的内阶数相等。如果两个相乘的矩阵有一个是标量,则MATLAB不检查其内阶数,而用该标量乘以矩阵的每个元素。若把y转置,即y为31的矩阵,而x是13的矩阵,则x*y的内阶数相等为3键入x*y得ans=2该式子称为x左乘y。如果使x右乘y,则y*x内阶数为1,键入y*x得ans = 2 0 -2 1 0 -1 0 0 0所以要注意左乘与右乘结果一般不同,只有单位矩阵例外,单位矩阵乘以任何矩阵,无论左乘还是右乘,其乘积仍等于该矩阵,但要保证单位矩阵的阶数与相乘矩阵的阶数相等。即eye(n)*A=AA*eye(n)=A2、矩阵除法及线性方程组的解(1)线性代数中没有除法,只有逆矩阵,矩阵的除法是MATLAB从逆矩阵的概念引伸来的。有左除和右除两种情况。B左除矩阵D相当于矩阵B左乘矩阵D的逆矩阵,记作DB。左除条件是:两矩阵的行数必须相等。(D*X=B,X=D-1*B=DB,可见需要D与B的行数相等)B右除矩阵D相当于矩阵B右乘矩阵D的逆矩阵,记作B/D。右除条件是:两矩阵的列数必须相等。(X*D=B,X=B*D-1=B/D,可见需要D与B的列数相等)(2)矩阵除法可以用来方便地解线性方程组。例如要求下列方程组的解x=x1;x2;x3。6 x1+3x2+4 x3=3-2x1+5x2+7x3=-48x1-4x2-3 x3=-7此方程组可以写成矩阵形式Ax=B,求解的MATLAB程序为A=6 3 4;-2 5 7;8 -4 -3; B=3;-4;-7; x=AB得x = 0.6000 7.0000 -5.4000下面来看矩阵左右乘除的一些示例。设A=1 2 3;4 5 6,B=2 4 0;1 3 5,D=1 4 7;8 5 2;3 6 0,即A = 1 2 3 4 5 6B = 2 4 0 1 3 5D = 1 4 7 8 5 2 3 6 0则其乘除的结果见下表。算 式结 果A*B? Error using = *Inner matrix dimensions must agree.(内阶数必须相等) A*B 6 16 20 9 23 25 12 30 30A*B 10 22 28 49DA? Error using = Matrix dimensions must agree.(行数必须相等)DA -0.0370 0 0.5185 1.0000 -0.1481 0A/D 0.4074 0.0741 0.0000 0.7407 0.4074 0.00003、矩阵的乘方和幂次函数MATLAB中只有运算符*、/、和指数函数expm、对数函数logm、开方函数sqitm是把矩阵作为一个整体来运算的,其他所有的MATLAB函数都是对矩阵中的元素分别进行运算的,称为“元素群运算”,将在后面讨论。(1)幂次运算时,指数和底数不能同时为矩阵,或者说指数和底数至少一个必须为标量;(2)指数或底数为矩阵时,必须是方阵,以保证矩阵相乘的内阶数相等;(3)注意:sqrtm、expm、logm都是针对矩阵的运算,而sqrt、exp、log是针对矩阵元素的群运算,不要混淆。下面来看一些矩阵运算的示例,其中D=1 4 7;8 5 2;3 6 0,s=1 2;3 4即D = 1 4 7 8 5 2 3 6 0s = 1 2 3 4键入语句输出结果说明D2 54 66 15 54 69 66 51 42 33按矩阵运算2.D 2 16 128 256 32 4 8 64 1按元素群运算Ds? Error using = At least one operand must be scalar.底数和指数不能同时为矩阵u1=sqrtm(s) 0.5537 + 0.4644i 0.8070 - 0.2124i 1.2104 - 0.3186i 1.7641 + 0.1458i按矩阵运算u1*u1=s检验u2=sqrt(s) 1.0000 1.4142 1.7321 2.0000按元素群运算u2*u2s, u2.*u2=sv1=expm(s) 51.9690 74.7366 112.1048 164.0738按矩阵运算logm(v1)=sv2=exp(s) 2.7183 7.3891 20.0855 54.5982按元素群运算log(v1)=slogm(D) 1.2447 -0.9170 2.8255 1.6044 2.5760 -1.9132 -0.7539 1.1372 1.6724按矩阵运算log(D) 0 1.3863 1.9459 2.0794 1.6094 0.6931 1.0986 1.7918 -Inf按元素群运算4、矩阵结构形式的提取与变换设矩阵A=8 1 6 0;3 5 7 1;4 9 2 2即A = 8 1 6 0 3 5 7 1 4 9 2 2函数名功能语句结果fliplr矩阵左右翻转B=fliplr(A) 0 6 1 8 1 7 5 3 2 2 9 4flipud矩阵上下翻转B=flipud(A) 4 9 2 2 3 5 7 1 8 1 6 0reshape阶数重组(元素总数不变)B=reshape(A,2,6) 8 4 5 6 2 1 3 1 9 7 0 2tril取矩阵的左下三角部分B=tril(A) 8 0 0 0 3 5 0 0 4 9 2 0triu取矩阵的右上三角部分B=triu(A) 8 1 6 0 0 5 7 1 0 0 2 2:将元素按列取出排成一排B=A(:)B =8 3 4 1 5 9 6 7 2 0 1 2(三)元素群运算1、数组及其赋值数组通常是指单行或单列的矩阵。MATLAB提供两种为等间隔数组赋值的简易方法。(1)用两个冒号组成等增量语句,其格式为:t=初值:增量:终值或者t=初值:增量:终值。如:键入t=0:0.02:1或t=0:0.02:1得t = 0 0.2000 0.4000 0.6000 0.8000 1.0000键入t=10:-3:-5或t=10:-3:-5得t = 10 7 4 1 -2 -5当增量为1时,该增量可以略去不写,变成t=初值:终值或t=初值:终值。如键入t=1:6或者t=1:6t = 1 2 3 4 5 6(2)用linspace函数。调用格式为:linspace(初值,终值,点数)。如:键入linspace(1 10 10)得ans = 1 2 3 4 5 6 7 8 9 10即将1到10之间等分为10个点,或者说等分为9份。2、元素群的四则运算和幂次运算元素群运算也就是矩阵中所有元素按照单个元素进行运算。在运算符*、/、前加上一个点符号“.”,就表示做元素群运算。参与元素群运算的两个矩阵必须是同阶的(只有标量除外,它会自动扩展为同阶矩阵参与运算)。设X=1,2,3;Y=4,5,6运 算 式输 出 结 果Z=X.*YZ = 4 10 18Z=X.YZ = 4.0000 2.5000 2.0000Z=X.YZ = 1 32 729Z=X.2Z = 1 4 9Z=2.X YZ = 2 4 8 16 32 64(四)运算符MATLAB中的数学运算符名 称说 明名 称说 明+ -矩阵加,矩阵减*矩阵乘/ 矩阵右除,矩阵左除矩阵求幂.* .群乘,群求幂./ .数组右除,数组左除 . 共轭转置,转置=赋值MATLAB中的比较和逻辑运算符名 称说 明名 称说 明=等于=不等于 =大于,大于等于 =小于,小于等于&与|或非xor(a,b)a和b异或any(a)a中有元素非零则为真all(a)a中所有元素都非零则为真M文件及程序调试主程序文件(script file)(主程序):用户为解决特定问题而编制函数文件(function file)(子程序):必须由其他M文件调用;往往具有一定的通用性M文件由MATLAB语句构成的文本文件,以m作为文件扩展名;是ASCII码文本文件,可以直接阅读并用任何编辑器来建立。行命令模式:键入一行命令后,让系统立即执行该命令。缺点:程序可读性差,难以存储。运行模式程序文件模式:可存储,尤其适于复杂问题一、主程序文件1、格式及要求(1)程序开头 最开始一般是注释行,说明程序用途、对输入数据的要求等。注释行必须以%开始,表明是注释行而不是命令行,计算机不会处理以%开头的任何内容。当然,在命令行后也可以%引导注释语句;注释可以用汉字。MATLAB规定,在键入“help 文件名”时,屏幕上会将该文件中以%起头的最前面几行的内容显示出来,使用户知道如何使用。 程序命令部分以clear、close all等语句开始,用来清除掉工作空间中原有的变量和图形,避免其他已执行的程序残留数据对本程序的影响。CLEAR removes all variables from the workspace.CLOSE ALL closes all the open figure windows.(2)程序主体 如果文件中有在子程序中与主程序共用的全局变量,应在程序的起始部分注明。其语句是:global变量名1变量名2 为改善可读性,应注意流程控制语句的缩进及与end的对应关系。 程序中必须都用半角英文字母和符号(只有引号括住的部分和%号后的内容可用汉字),否则程序执行不通甚至会死机,因此一般在键入程序时,最好从头到尾用英文,在程序调试完毕后再插入汉字。(3)文件名及文件存储 按照MATLAB标志符要求起文件名,并加上后缀m。 文件名即为MATLAB的调用命令。 文件名中不允许用汉字。 存储目录应位于MATLAB的搜索路径下。 MATLAB的搜索路径不应出现汉字路径名。(4)程序执行完成主程序文件编制后,在MATLAB的命令窗中键入此程序的文件名后,系统就会执行文件中的程序,主程序文件中的语句将对工作空间中的所有数据进行运算操作。2、示例列出求素数的程序。素数即为只能被它自身和1除净的数。程序如下:%求素数(prime number)的程序clear,close all%清除工作空间中原有的变量和图形N=input(N=),x=2:N;%列出从2到N的全部自然数for u=2:sqrt(N)%依次列出除数(最大到N的平方根)n=find(rem(x,u)=0 & x=u);%找到能被u除净而u不等于x的数的序号x(n)=;%剔除该数end,x%循环结束,显示结果以prime.m为名存入系统即可执行。给出N=40,结果为x=2 3 5 7 11 13 17 19 23 29 31 373、常用的人机交互命令在执行主程序文件时,往往希望在适当的地方对程序的运行进行观察或者干预(尤其在调试程序的时候),这时就需要人机交互命令。介绍常用的下面几条:(1)input(提示符)程序执行到此处暂停,在屏幕上显示引号中的字符串。要求用户输入数据。如程序为X=input(X=),则会在屏幕上显示X=,输入的数据将赋给X。数据输入后,程序继续运行。Input命令也可以接受字符,其格式为Y=input(提示符,s),此时Y将等于输入的字符串。(2)pause(n)程序执行到此处,暂停n秒,再继续执行。如果没有括号参数,则等待用户键入任意键后才继续执行。(3)echo on(off)一般情况下,M文件中的命令不会显示在屏幕上。而在命令echo on之后,会在执行每行程序前先显示其内容。(4)keyboard程序执行到此处暂停,在屏幕上显示字符K,并把程序的输入和执行权交给用户(键盘)。用户可以像在普通MATLAB命令窗口中那样进行任何操作(例如,检查中间结果等)。如果需要系统恢复运行原来的程序,只需要键入return。在M文件中设置该命令,有利于进行程序调试以及临时修改变量内容。(5)Ctrl+C强行终止程序的运行。当程序有错运行时间太长时,可用此方法终止。二、函数文件1、格式特征(1)由function起头;(2)function后跟函数名,且必须与文件名相同;(3)可以有输入输出变量进行变量传递;(4)除非用global声明,程序中的变量均为局部变量,不保存在工作空间中。(5)在键入“help 文件名”时,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 仓库顶棚增高施工方案(3篇)
- 灯会美食营销方案(3篇)
- 草坪隔离板施工方案(3篇)
- 诊所营销调研方案(3篇)
- 煤矿-雨季防汛-应急预案(3篇)
- 铝格栅护栏施工方案(3篇)
- 深层搅拌桩复合地基承载特性的多维度解析与工程应用探究
- 深圳市生育保险政策实施:问题剖析与成因探究
- 深入剖析220C协议MAC层算法:原理、性能与创新
- 淮南市保障性住房建设:现状、困境与突破路径研究
- DZ∕T 0279.34-2016 区域地球化学样品分析方法 第34部分:pH值的测定 离子选择电极法(正式版)
- 依靠学习走向未来-陈武东(修改)
- 头晕与眩晕基层诊疗指南
- 大桥结构健康监测系统项目监理规划
- 读书分享读书交流会 《球状闪电》刘慈欣科幻小说读书分享
- 全国高中青年数学教师优质课大赛一等奖《导数在研究函数中的应用》课件
- 浅谈高中化学原创试题的命制
- 医学微生物学习题集
- 北师大版数学七年级下册知识点归纳总结
- 电梯井整体提升搭设安全专项施工方案(完整版)
- 项目RAMS系统保证计划SAP
评论
0/150
提交评论