资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第二章 MATLA数值计算功能,*,上次课内容回顾:,1.MATLAB的简介,主要介绍了MATLAB的特点、发展历史、主要组成部分和网上资源.,2.简单介绍了安装要求.,3.MATLAB的工作平台,主要介绍了MATLAB的六个窗口的功能.,4.MATLAB的帮助系统,主要介绍了,命令窗口查询帮助,即help,Lookfor命令的使用以及其它的一些查询方式,和联机演示系统的查询.,5.,MATLAB的搜索路径与扩展,主要介绍了搜索路径的几种方式和建立,扩展MATLAB的搜索路径的方法.,1,第二章 MATLA数值计算功能,常用的命令和技巧 1.一些通用命令 (见下表),2,第二章 MATLA数值计算功能,2.一些常用操作技巧 (见下表),3.标点 (见下表),3,第二章 MATLA数值计算功能,MATLAB的搜索路径与扩展,一、MATLAB的搜索路径,默认时MATLAB的搜索路径是MATLAB的安装主目录及所有工具箱和路径,可通过以下几种方式查看此搜索路径。,1.搜索路径对话框,选择MATLAB,主窗口中的菜单 File,Set Path选项,进入,到设置搜索路径对话框,,如图,4,第二章 MATLA数值计算功能,path,命令,在命令窗口中输入命令,path,可得到,MATLAB,的所有搜索路径。,genpath,在命令窗口中输入命令,genpath,可以得到由,MATLAB,的所有搜索路径连接而成的一个长字符串。,editpath,或,pathtool,命令,在,MATLAB,命令窗口中输入,editpath,或,pathtool,命令则进入如上图所示的搜索路径设置对话框。,二、扩展,MATLAB,的搜索路径,首先在,D,:,路径下建立一个新的目录,myfiles,.,1.,利用路径设置菜单,选中,File Set Path,菜单选项,进入上图所示的设置搜索路径对话框 单击对话框中的,Add Folder,按钮或单击,Add with Subfolder,按钮,进入下图所示的浏览文件夹对话框,选中,5,第二章 MATLA数值计算功能,的目录D:myfiles,单击确定按钮,新的目录出现在搜索路径列表中,再单击Save保存新的搜索路径,单击Close关闭对话框,新的搜索路径设置完毕。,下面介绍图搜索路径对话框中其它按钮控件:,将选中的目录移到搜索路径的顶端;,将选中的目录在搜索路径中上移一位;,将选中的目录在搜索路径中下移一位;,将选中的目录移到搜索路径的底端;,将选中的目录在搜索路径中删除;,恢复上次改变搜索路径前的路径;,恢复到最原始的MATLAB默认路径;,6,第二章 MATLA数值计算功能,数值计算是MATLAB中最重要、最有特色的功能之一。MATLAB强大的数值计算功能使其在诸多的数学计算软件中傲视群雄,它是MATLAB软件的基础。,在本章里将介绍以下内容:MATLAB的数据类型、向量的建立及其运算、矩阵的创建及运算、数组运算和多项式的各类运算。,2,.1,MATLAB,的数据类型,MATLAB数据类型包括:,逻辑、数值、字符串、矩阵(数组)、单元型及结构型数据等类型,其中数值型又分单精度型、双精度型以及整数型。,在MATLAB中,所有的数据不管是属于什么类型,都以数组或矩阵的形式保存的。,1.变量,变量是任何程序设计语言的基本元素之一。MATLAB语言也不例外,与常规语言不同的是,MATLAB语言,并不要求对所使用的变量进行事先声明,也不需要指定它的变量类型,它会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型,。,9,第二章 MATLA数值计算功能,在MATLAB语言中变量的命名遵循如下规则:,变量名区分大小写;,变量名长度不超过31位,第31位字符之后的字符将被忽略;,变量名以字母开头,可包含字母、数字、下划线,但不能使用标点。,MATLAB语言中的变量也存在变量作用域的问题,在末加特殊说明的情况下,MATLAB语言将所识别的一切变量视为局部变量,即仅在其调用的M文件内有效。若要定义全局变量,应对变量进行说明,即在变量前加关键字 global。,常量,MATLAB,有,一些预定义的变量,这些特殊的变量称为常量。下表给出了,MATLAB,语言中经常使用的一些常量及其说明:,10,第二章 MATLA数值计算功能,举例:pi 1/0 0/0,注意:MATLAB语言中,在定义变量时应避免与常量名相同,以免,改变这些常量的值,如果已改变了某个常量的值,可以通过,“clear+常量名”,命令恢复该常量的初始设定值。,如:pi=1,pi=1,clear pi,11,第二章 MATLA数值计算功能,二、数字变量,1.数字变量的运算,直接在命令窗口输入:,如:356*76 或 x=356*76,当表达式比较复杂或重复出现次数太多时,可先定义变量,再由变量表达式计算得到结果。,例:要求计算水在温度为0,0,C、20,0,C、40,0,C、60,0,C、80,0,C时的粘度,已知水的粘度随温度的变化公式为:,其中,0,为0,0,C水的粘度,值为1.785*10,-3,在命令窗口输入:,muw0=1.785e-3;%定义摄氏零度时的粘度值;,a=0.03368;%定义两个常数,b=0.000221;,t=0:20:80;%定义摄氏温度变量,muw=muw0./(1+a*t+b*t.2)%计算摄氏温度对应粘度值,12,第二章 MATLA数值计算功能,说明:,%,之后的内容只起到注释的作用,对最终结果不起任何作用;,注意;的作用。,四则运算符直接用+、-、*、/即可,选乘方、开方运算由,和函数sqrt来实现。优先级为、sqrt最高,*、/次之,+、,-最低,如:1+2*3 4,数字的输入输出格式,MATLAB,语言中数值有多种,显示形式,。在缺省的情况下,若数据为整数,则就以整形表示;若为实数,则以保留小数点后,4,位的浮点数表示。,在,MATLAB,的语言中所有的数据均按由,IEEE,浮点标准规定的,长型格式存贮,,数字有效范围为,10,-308,10,308,。,MATLAB,的,输入格式,完全继承了,C,语言的风格和规则。,如:,9 -73 0.98743 1.4657e4,13,第二章 MATLA数值计算功能,MATLAB的输出格式可由format命令控制,但format命令只是,影响在屏幕上的显示结果,而不影响其在内部的存储和运算,,而,MATLAB,的数据存储和运算总是以双精度进行的。,三、字符串,1.字符串的约定,在MATLAB中,所有的字符串都是用单引号设定后输入或赋值,的;,如:s=matrix laboratory,s=matrix laboratory,字符串中的每个字符(包括空格)都是字符数组的一个元素;,如:size(s)%size命令用来查看字符数组 s 维数。,ans=1 17,在MATLAB中,字符串和字符数组(或矩阵)基本上是等价的。,如:s(3)ans=t,s2=matlab s2=matlab,14,第二章 MATLA数值计算功能,字符数组的生成,函数,char,可以用来生成字符数组(或矩阵)。,如:,s3=char(s,y,m,b,o,l,i,c);,s3%“”,的作用是将字符数组显示为行变量,ans,=symbolic,字符串和数组之间的转换,字符串转换为数值代码,由函数,double,来实现。,如:,double(s3),ans,=115 121 109 98 111 108 105 99,字符数组转换为字符串,可由函数,cellstr,实现。,如:,cellstr(s3),ans,=symbolic,数值数组和字符串之间的转换,由下表中的函数实现。,15,第二章 MATLA数值计算功能,数值数组转换为字符串示例:,a=1:5;%生成数值数组,b=num2str(a);%将a转换为字符串后赋给b,a*2 ans=2 4 6 8 10,b*2 ans=98 64 64 100 64 64 102 64 64 104 64 64 106,字符串操作,Matlab,对字符串的操作与,C,语言中几乎完全相同(见下表)。,16,第二章 MATLA数值计算功能,执行字符串,执行字符串的功能在,MATLAB,中由函数,eval,来实现。,例:用,eval,函数生成四阶的,Hilbert,矩阵,17,第二章 MATLA数值计算功能,%用eval函数生成四阶Hilbert(希尔伯特)矩阵,n=4;,t=1/(i+j-1);,a=zeros(n);,for i=1:n,for j=1:n,a(i,j)=eval(t),end,end,a=,1.0000 0.5000 0.3333 0.2500,0.5000 0.3333 0.2500 0.2000,0.3333 0.2500 0.2000 0.1667,0.2500 0.2000 0.1667 0.1429,18,第二章 MATLA数值计算功能,一些字符串操作命令,串检验函数,ischar,字符串检验,iscellstr,字符串的单元阵检验,isletter,字母检验,isspace,空格检验,基本数字转换函数,hex2num IEEE,十六进制转换为双精度数,hex2dec,转换十六进制串为十进制整数,dec2hex,转换十进制整数为十六进制串,bin2dec,转换二进制串为十进制整数,dec2bin,转换十进制整数为二进制串,base2dec,转换,B,底字符串为十进制整数,dec2base,转换十进制整数为,B,底串,19,第二章 MATLA数值计算功能,四、矩阵,矩阵(数组)是MATLAB数据存储的基本单元,下节将详细介绍。,五、元胞型变量(单元型变量),元胞,型变量是MATLAB语言中较为特殊的一种数据类型,是一种以任意形式的数组为单元的多维数组。,元胞型变量的定义,定义的两种方式:用赋值语句直接定义,由,cell,函数预先分配存储空间,然后对单个元,素逐个赋值,在直接赋值过程中,元胞型变量的定义使用大括号,元素之间由,逗号隔开。,如,:A=1 2;3 4;,B=1:4,A,abcd,B=1*4 double 2*2double ,abcd,20,第二章 MATLA数值计算功能,对单元的元素直接赋值,可将单元型变量的下标用大括号索引,如:,B1,1=1:4;,B1,2=A;,B1,3=abcd;,由cell函数赋值 如:命令B=cell(1,3)将在工作空间中建立一单元,型变量B,其元素为空矩阵,然后再对各元素赋值。,元胞型变量的元素不是以指针方式保存的。,元胞型变量与矩阵的区别是,单元型变量自身可以嵌套,即元胞,型变量的元素可以是元胞型变量,而一般情况下,矩阵的元素不,能是矩阵元素。,例如:C=1:4,A,B,C=1*4double 2*2double 1*3 cell,C33,ans=abcd,21,第二章 MATLA数值计算功能,2.元胞型变量的相关函数 (见下表),3、显示元胞数组的内容,可以通过函数celldisp显示元胞数组的内容,celldisp(B);,同时我们还可以通过函数cellplot用图形的方式直观显示出元胞数组的内容。,cellplot(B,legend)%,添加显示参数,legend使得元胞数组内容更加清晰、,直观,22,第二章 MATLA数值计算功能,23,第二章 MATLA数值计算功能,4、元胞数组和数值数组之间的转换,可以通过num2cell、cell2mat函数实现元胞数组和数值数组之间的转换。,如:,A=magic(3);,C=num2cell(A,2)%魔方矩阵转化成元胞数组,C=,1*3 double,1*3 double,1*3 double,celldisp(C),C1=,8 1 6,C2=,3 5 7,C3=,4 9 2,C=1 2,3,4;5;9 6,7,8;1011,12,24,第二章 MATLA数值计算功能,C=,1 1x3 double,2x1 double 2x3 double,C1,1,ans=,1,C2,1,ans=,5,9,M=cell2mat(C),M=,1 2 3 4,5 6 7 8,9 10 11 12,六、结构型变量,结构型变量是另一种可以将不同类型数据组合在一起的MATLAB语言数据类型。与单元型变量的不同在于结构型变量是以指针方式来传递数据的。,25,第二章 MATLA数值计算功能,A=,a1:abcd,a2:1,a3:2x2 double,结构型变量的定义,方式:直接赋值定义,由函数,struct,定义,直接赋值时,应当指出结构中的属性名,并以指针操作符“,.”,来,连接结构型变量名与属性名。,如:,A.a1=,abcd,;,A.a2=1;,A.a3=1,2;3,4,A,26,第二章 MATLA数值计算功能,结构型变量也可构成数组,即结构型数组。,如:B=1 2 3;4 5 6;,A(2).a1=skjh;,A(2).a2=265;,A(2).a3=B,A,A=,1x2 struct array with fields:,a1,a2,a3,说明:,1)在同一结构型数组里,不同的元素可以赋以不同类型的值;,2)结构型数组赋值时,也可以只对部分元素赋值,末赋值的元素将被赋以空矩阵,并可以随时对该数组加以修改或添加;,3)当结构型变量元素多于一个时,键入变量名将不能完全显示各元素相应的值,而只能反应该结构数组的属性结构。,27,第二章 MATLA数值计算功能,由函数struct来定义结构型变量,其调用格式如下:,结构型变量名=struct(元素名1,元素值1,元素名2,元素值2,),如:C=struct(c1,1,c2,B,c3,hgfd),C=,c1:1,c2:2x3 double,c3:hgfd,与单元型变量相似,结构型变量也可以嵌套定义。,如:C.c1=A%嵌套结构的定义,C=,c1:1x2 struct,c2:2x3 double,c3:hgfd,C.c1(1).a1%嵌套结构型变量的引用,ans=abcd,28,第二章 MATLA数值计算功能,结构型变量的相关函数 (见下表),29,第二章 MATLA数值计算功能,3、结构数组的数据获取和设置,clear,h(2)=struct(tag,openbutton,name,open,color,green);,h(3)=struct(tag,exitbutton,name,exit,color,red),h=,1x3 struct array with fields:,tag,name,color,x1=h(2).tag%利用.获取结构数组中的数据,x1=,openbutton,x2=h(3).color,x2=,red,30,第二章 MATLA数值计算功能,%通过函数getfield获取结构数组中的数据,x3=getfield(h,2,name),x3=,open,%通过函数setfield设置结构数组中的数据,h=setfield(h,2,color,black);,h(2).color,ans=,black,31,第二章 MATLA数值计算功能,4、结构数组的其他操作,%添加结构数组中的结构域,clear,h(2)=struct(tag,openbutton,name,open,color,green);,h(2).position=225 118 10 25;,h(2),ans=,tag:openbutton,name:open,color:green,position:225 118 10 25,32,第二章 MATLA数值计算功能,%删除结构数组中的结构域,clear,h(2)=struct(tag,openbutton,name,open,color,green);,h=rmfield(h,color),h=,1x2 struct array with fields:,tag,name,33,第二章 MATLA数值计算功能,%结构数组的运算,student(1)=struct(No,07332688,name,David,score,89,90,78;85,70,87),student=,No:7332688,name:David,score:2x3 double,aver=mean(student(1).score),aver=,87.0000 80.0000 82.5000,34,第二章 MATLA数值计算功能,2,.2 向量及其运算,一、向量的生成,1.直接输入向量:在命令窗口直接输入,向量元素用 括起来,元素之间可以用空格、逗号或分号分隔,用空格、逗号分隔生成行向量,用分号分隔生成列向量。,如:a=1 2 3 4 5 b=1,3;2,4 c=3;4;5,2.利用冒号表达式生成向量,冒号表达式的基本形式:x=x,0,:step:x,n,注意:1)x,n,为尾元素,而非尾元素值;,2)若x,0,0;若x,0,x,n,则需stepa=1:2:12,a=12:-2:1;,a=1:6 a=1:2:1,首元素数值,步长,尾元素数值限,35,第二章 MATLA数值计算功能,线性等分向量的生成,用线性等分功能函数,linspace,,,来生成线性等分向量,调用格式如下:,y=linspace(x1,x2),生成,100,维的行向量,使得,y(1)=x1,y(100)=x2;,y=linspace(x1,x2,n),生成,n,维的行向量,使得,y(1)=x1,y(n)=x2,。,如:,a1=linspace(0,100,6),注意:线性等分函数和冒号表达式都可生成等分向量。前者是设定了向量的维数去生成等分间隔向量,后者是通过设定间隔来生成维数随之确定的等间隔向量。,对数等分向量的生成,对数等分功能函数调用格式如下:,y=logspace(x1,x2),生成,50,维对数等分向量,,y(1)=10,x1,y(50)=10,x2,;,y=logspace(x1,x2,n),生成,n,维对数等分向量,,y(1)=10,x1,y(n)=10,x2,。,如:,a2=logspace(0,5,6),36,第二章 MATLA数值计算功能,二、向量的基本运算,1.加(减)与数加(减),如:a1=a1+1 a1=1 21 41 61 81 101,2.数乘,如:a2=a1*2 a2=2 42 82 122 162 202,二、点积、叉积及混合积的实现,1.点积计算,向量的点积是指两个向量在其中某一个向量方向上的投影的乘积。,向量点积函数 dot 调用dot 的格式如下:,dot(a,b)返回a 和b 的数量点积。a和b必须同维,当a和b都为列,向量时,等同于a*b。,dot(a,b,dim)返回a和b在维数为dim的点积。,如:a=2 3 21 b=3 5 7,dot(a,b)ans=168,或:sum(a.*b)ans=168,37,第二章 MATLA数值计算功能,2.叉积,向量的叉积表示过两相交向量的交点的垂直于两向量所在平面的向量。,向量叉积函数 cross 调用cross 的格式如下:,c=cross(a,b)返回向量a 和b 的叉积向量。即c=ab。a和b必须为三维向量。,c=cross(a,b)返回向量a 和b 的前3位的叉积。,c=cross(a,b,dim)当a和b为n维数组时,则返回a和b的dim维向量的叉积。a和b必须有相同的维数,且size(a,dim)和(b,dim)必须为3。,如:计算垂直于向量a=(1,2,3)和b=(3,4,5)的向量。,a=1 2 3 b=3 4 5,c=cross(a,b)c=-2 4-2,得到同时垂直于a、b的向量为,(-2,4,-2)。,38,第二章 MATLA数值计算功能,3.混合积,向量的混合积由以上两个函数实现。,如:计算上面向量a,b,c的混合积。,dot(a,cross(b,c),ans=,24,注意:函数的顺序不可颠倒,否则,将出错。,39,第二章 MATLA数值计算功能,2.3,矩阵及其运算,一、矩阵的生成,1.直接输入小矩阵 从键盘上直接输入矩阵。,用此法创建矩阵注意以下几点:,输入矩阵时要以“”为其标识,即矩阵的元素应在“”内部;,矩阵的同行元素之间可由空格或“,”分隔,行与行之间要用“;”或回车符分隔;,矩阵的大小可不预先定义;,矩阵的元素可为运算表达式;,若不想获得中间结果,可以“;”结束;,无任何元素的空矩阵亦合法。,如:a=1 2 3;3 3 3;4 3 5%创建一简单数值矩阵;,b=sin(pi/3),cos(pi/4);log(9),tanh(6)%创建一带运算表达式的矩阵;,40,第二章 MATLA数值计算功能,创建,M,文件输入大矩阵,M,文件是一种可以在,MATLAB,环境下运行的文本文件,它分为命令式文件和函数式文件两种。输入大矩阵主要是用命令式,M,文件,方法为将所要输入的矩阵按格式先写入一个文本文件中,并将此文件以,m,为其扩展名,即,M,文件。在,MATLAB,命令窗口中输入此,M,文件名,由所需要输入的矩阵就被输入到内存中。,如:编制一个名为,example.m,的,M,文件,内容如下:,%example.m,%,创建一,M,文件输入矩阵的示例文件,exm,=234 54 756 736 488;465 3877 876 4563 76;23 567 344 66,33;543 3845 338 086 4586;465 876 987 65 33,在,MATLAB,命令窗口输入:,example,41,第二章 MATLA数值计算功能,二、矩阵的基本数学运算,矩阵的基本数学运算包括矩阵的四则运算、与常数的运算、逆,运算、行列式运算、幂运算、指数运算、对数运算和开方运算,等。,1.矩阵的四则运算,矩阵的加和减 使用“+”、“-”运算符,格式与数学运算完全相同,但要求加减两个矩阵是同阶的。,如:a=1 2 4;4 5 7;3 8 0,b=49 87 907;43 876 98;234 985 834,c=a+b,矩阵的乘法 运算符“*”,要求相乘的双方要有相邻公共维,即若A为ij阶,则B必须为jk阶时,A和B才可以相乘。,例如:e=b,5 5 5,f=a*e,42,第二章 MATLA数值计算功能,矩阵的除法 运算符:“”左除,“/”右除,矩阵的除法通常用来求解方程组的解。,对于方程组Ax=b,其中A是一个(n*m)阶的矩阵,则:,1)当n=m且非奇异时,此方程称为恰定方程;,2)当nm时,此方程称为超定方程;,3)当n a=361 625 961 1444 1936;1 1 1 1 1,;,b=1;1;,x=ab,x=,1.2286,0,0,0,-0.2286,44,第二章 MATLA数值计算功能,2.矩阵与常数间的运算,常数与矩阵的运算即是同此矩阵各元素之间进行运算。如数加是指每个元素都加上此常数,数乘即是每个元素都与此数相乘,但进行除法时,常数只能做除数。,3.矩阵的逆运算,矩阵的逆运算是由函数inv完成,其调用格式为:,inv(x),例如:求矩阵A的逆,其中,解:a=2 1 3;3 1 0;-1 2 4,inv(a),4.矩阵的行列式运算,矩阵的行列式的值可由det函数计算得出。,例 求上例中A矩阵及其逆的行列式之积。,解:a1=det(a)a1=-25,a2=det(inv(a)a2=-0.04,a1*a2 a1*a2=1,45,第二章 MATLA数值计算功能,矩阵的幂运算,运算符“,”,矩阵的指数运算,指数运算命令有:,expm,expm1,expm2,expm3,矩阵的对数运算,对数运算由,logm,函数实现。,矩阵的开方运算,矩阵的开方运算函数为,sqrtm,。,46,第二章 MATLA数值计算功能,小结:,1.,MATLAB的数据类型,介绍了变量与常量的概念,数字数据类型和字符串数据类型,单元型和结构型数据类型的概念;,2.向量及其运算,介绍了向量的生成,向量的基本运算,点积、叉积及混合积的实现;,3.矩阵及其运算,介绍了矩阵的生成和矩阵的基本数学运算。,47,第二章 MATLA数值计算功能,
展开阅读全文