收藏 分享(赏)

第二章 MATLAB课件.ppt

上传人:gnk289057 文档编号:10172276 上传时间:2019-10-16 格式:PPT 页数:47 大小:1.35MB
下载 相关 举报
第二章 MATLAB课件.ppt_第1页
第1页 / 共47页
第二章 MATLAB课件.ppt_第2页
第2页 / 共47页
第二章 MATLAB课件.ppt_第3页
第3页 / 共47页
第二章 MATLAB课件.ppt_第4页
第4页 / 共47页
第二章 MATLAB课件.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、第二章 MATLA数值计算功能,1,上次课内容回顾:1. MATLAB的简介主要介绍了MATLAB的特点、发展历史、主要组成部分和网上资源.2. 简单介绍了安装要求.3. MATLAB的工作平台主要介绍了MATLAB的六个窗口的功能.4. MATLAB的帮助系统主要介绍了命令窗口查询帮助, 即help Lookfor命令的使用以及其它的一些查询方式,和联机演示系统的查询.5. MATLAB的搜索路径与扩展主要介绍了搜索路径的几种方式和建立扩展MATLAB的搜索路径的方法.,第二章 MATLA数值计算功能,2,常用的命令和技巧 1. 一些通用命令 (见下表),第二章 MATLA数值计算功能,3,

2、2. 一些常用操作技巧 (见下表),3. 标点 (见下表),第二章 MATLA数值计算功能,4,MATLAB的搜索路径与扩展,一、MATLAB的搜索路径默认时MATLAB的搜索路径是MATLAB的安装主目录及所有工具箱和路径,可通过以下几种方式查看此搜索路径。1. 搜索路径对话框选择MATLAB 主窗口中的菜单 FileSet Path选项,进入 到设置搜索路径对话框,如图,第二章 MATLA数值计算功能,5,path 命令在命令窗口中输入命令path可得到MATLAB的所有搜索路径。 genpath在命令窗口中输入命令genpath可以得到由MATLAB的所有搜索路径连接而成的一个长字符串。

3、 editpath或pathtool命令在MATLAB命令窗口中输入editpath或pathtool命令则进入如上图所示的搜索路径设置对话框。 二、扩展MATLAB的搜索路径首先在 D:路径下建立一个新的目录myfiles.1. 利用路径设置菜单选中File Set Path菜单选项,进入上图所示的设置搜索路径对话框 单击对话框中的Add Folder按钮或单击Add with Subfolder按钮,进入下图所示的浏览文件夹对话框,选中,第二章 MATLA数值计算功能,6,的目录D:myfiles,单击确定按钮,新的目录出现在搜索路径列表中,再单击Save保存新的搜索路径,单击Close关

4、闭对话框,新的搜索路径设置完毕。,下面介绍图搜索路径对话框中其它按钮控件:,将选中的目录移到搜索路径的顶端;,将选中的目录在搜索路径中上移一位;,将选中的目录在搜索路径中下移一位;,将选中的目录移到搜索路径的底端;,将选中的目录在搜索路径中删除;,恢复上次改变搜索路径前的路径;,恢复到最原始的MATLAB默认路径;,第二章 MATLA数值计算功能,7,使用path命令扩展目录把新目录扩展到搜索路径的方法是在命令窗口输入:path(path,d:myfiles); 使用addpath命令扩展目录把新目录加到整个搜索路径的末尾,使用如下命令:addpath d:myfiles-end把新目录加到整

5、个搜索路径的开始,使用如下命令:addpath d:myfiles-begin 使用editpath和pathtool命令扩展目录这两个命令引导到设置搜索路径对话框。,第二章 MATLA数值计算功能,8,第二章 MATLAB数值计算功能,2.1 MATLAB的数据类型,2.2 向量及其运算,2.3 矩阵及其运算,2.4 数组及其运算,2.5 多项式运算,第二章 MATLA数值计算功能,9,数值计算是MATLAB中最重要、最有特色的功能之一。MATLAB强大的数值计算功能使其在诸多的数学计算软件中傲视群雄,它是MATLAB软件的基础。在本章里将介绍以下内容: MATLAB的数据类型、向量的建立及

6、其运算、矩阵的创建及运算、数组运算和多项式的各类运算。2.1 MATLAB的数据类型MATLAB数据类型包括:逻辑、数值、字符串、矩阵(数组)、单元型及结构型数据等类型,其中数值型又分单精度型、双精度型以及整数型。在MATLAB中,所有的数据不管是属于什么类型,都以数组或矩阵的形式保存的。1. 变量变量是任何程序设计语言的基本元素之一。MATLAB语言也不例外,与常规语言不同的是, MATLAB语言并不要求对所使用的变量进行事先声明,也不需要指定它的变量类型,它会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型。,第二章 MATLA数值计算功能,10,在MATLAB语言中变量的命名遵

7、循如下规则:变量名区分大小写;变量名长度不超过31位,第31位字符之后的字符将被忽略;变量名以字母开头,可包含字母、数字、下划线,但不能使用标点。MATLAB语言中的变量也存在变量作用域的问题,在末加特殊说明的情况下, MATLAB语言将所识别的一切变量视为局部变量,即仅在其调用的M文件内有效。若要定义全局变量,应对变量进行说明,即在变量前加关键字 global。 常量MATLAB有一些预定义的变量,这些特殊的变量称为常量。下表给出了MATLAB语言中经常使用的一些常量及其说明:,第二章 MATLA数值计算功能,11,举例: pi 1/0 0/0 注意: MATLAB语言中,在定义变量时应避免

8、与常量名相同,以免改变这些常量的值,如果已改变了某个常量的值,可以通过“clear+常量名”命令恢复该常量的初始设定值。如: pi=1pi=1 clear pi,第二章 MATLA数值计算功能,12,二、数字变量1. 数字变量的运算 直接在命令窗口输入:如:356*76 或 x=356*76 当表达式比较复杂或重复出现次数太多时,可先定义变量,再由变量表达式计算得到结果。 例: 要求计算水在温度为00C、200C、400C、600C、800C时的粘度,已知水的粘度随温度的变化公式为:,其中0为00C水的粘度,值为1.785*10-3,在命令窗口输入: muw0=1.785e-3; %定义摄氏零

9、度时的粘度值; a=0.03368; %定义两个常数 b=0.000221; t=0:20:80; %定义摄氏温度变量muw=muw0./(1+a*t+b*t.2) %计算摄氏温度对应粘度值,第二章 MATLA数值计算功能,13,说明:% 之后的内容只起到注释的作用,对最终结果不起任何作用;注意; 的作用。 四则运算符直接用+、-、*、/即可,选乘方、开方运算由 和函数sqrt来实现。优先级为、 sqrt最高,*、/次之,+、 -最低如: 1+2*3 4 数字的输入输出格式 MATLAB语言中数值有多种显示形式。在缺省的情况下,若数据为整数,则就以整形表示;若为实数,则以保留小数点后4位的浮点

10、数表示。 在MATLAB的语言中所有的数据均按由IEEE浮点标准规定的长型格式存贮,数字有效范围为10-30810308。 MATLAB的输入格式完全继承了C语言的风格和规则。如:9 -73 0.98743 1.4657e4,第二章 MATLA数值计算功能,14, MATLAB的输出格式可由format命令控制,但format命令只是 影响在屏幕上的显示结果,而不影响其在内部的存储和运算,而 MATLAB的数据存储和运算总是以双精度进行的。 三、字符串1. 字符串的约定 在MATLAB中,所有的字符串都是用单引号设定后输入或赋值 的;如: s=matrix laboratorys = matr

11、ix laboratory 字符串中的每个字符(包括空格)都是字符数组的一个元素;如: size(s) % size命令用来查看字符数组 s 维数。ans = 1 17 在MATLAB中,字符串和字符数组(或矩阵)基本上是等价的。如: s(3) ans=t s2=matlab s2=matlab,第二章 MATLA数值计算功能,15,字符数组的生成函数 char 可以用来生成字符数组(或矩阵)。如: s3=char(s,y,m,b,o,l,i,c);s3 % “ ”的作用是将字符数组显示为行变量ans=symbolic 字符串和数组之间的转换 字符串转换为数值代码,由函数double来实现。如

12、: double(s3)ans=115 121 109 98 111 108 105 99 字符数组转换为字符串,可由函数cellstr实现。如: cellstr(s3)ans= symbolic 数值数组和字符串之间的转换,由下表中的函数实现。,第二章 MATLA数值计算功能,16,数值数组转换为字符串示例: 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语言中几乎完全相

13、同(见下表) 。,第二章 MATLA数值计算功能,17,执行字符串执行字符串的功能在MATLAB中由函数eval来实现。 例:用eval函数生成四阶的Hilbert矩阵,第二章 MATLA数值计算功能,18,%用eval函数生成四阶Hilbert(希尔伯特)矩阵n=4;t=1/(i+j-1);a=zeros(n);for i=1:nfor j=1:na(i,j)=eval(t)endenda =1.0000 0.5000 0.3333 0.25000.5000 0.3333 0.2500 0.20000.3333 0.2500 0.2000 0.16670.2500 0.2000 0.1667

14、 0.1429,第二章 MATLA数值计算功能,19,一些字符串操作命令串检验函数 ischar 字符串检验 iscellstr 字符串的单元阵检验 isletter 字母检验 isspace 空格检验基本数字转换函数 hex2num IEEE十六进制转换为双精度数 hex2dec 转换十六进制串为十进制整数 dec2hex 转换十进制整数为十六进制串 bin2dec 转换二进制串为十进制整数 dec2bin 转换十进制整数为二进制串 base2dec 转换B底字符串为十进制整数 dec2base 转换十进制整数为B底串,第二章 MATLA数值计算功能,20,四、 矩阵矩阵(数组)是MATLA

15、B数据存储的基本单元,下节将详细介绍。 五、 元胞型变量(单元型变量)元胞型变量是MATLAB语言中较为特殊的一种数据类型,是一种以任意形式的数组为单元的多维数组。 元胞型变量的定义定义的两种方式: 用赋值语句直接定义由cell函数预先分配存储空间,然后对单个元 素逐个赋值 在直接赋值过程中,元胞型变量的定义使用大括号,元素之间由逗号隔开。如: A=1 2;3 4; B=1:4,A,abcdB=1*4 double 2*2double abcd,第二章 MATLA数值计算功能,21,对单元的元素直接赋值,可将单元型变量的下标用大括号索引,如: B1,1=1:4; B1,2=A; B1,3=ab

16、cd; 由cell函数赋值 如:命令B=cell(1,3) 将在工作空间中建立一单元 型变量B,其元素为空矩阵,然后再对各元素赋值。 元胞型变量的元素不是以指针方式保存的。 元胞型变量与矩阵的区别是,单元型变量自身可以嵌套,即元胞 型变量的元素可以是元胞型变量,而一般情况下,矩阵的元素不 能是矩阵元素。例如: C=1:4,A,BC=1*4double 2*2double 1*3 cell C33ans=abcd,第二章 MATLA数值计算功能,22,2. 元胞型变量的相关函数 (见下表),3、显示元胞数组的内容 可以通过函数celldisp显示元胞数组的内容 celldisp(B); 同时我们

17、还可以通过函数cellplot用图形的方式直观显示出元胞数组的内容。 cellplot(B,legend) %添加显示参数legend使得元胞数组内容更加清晰、 直观,第二章 MATLA数值计算功能,23,第二章 MATLA数值计算功能,24,4、元胞数组和数值数组之间的转换 可以通过num2cell、cell2mat函数实现元胞数组和数值数组之间的转换。 如: A=magic(3); C=num2cell(A,2) %魔方矩阵转化成元胞数组 C=1*3 double1*3 double1*3 double celldisp(C) C1=8 1 6 C2=3 5 7 C3=4 9 2 C=1

18、2,3,4;5;9 6,7,8;1011,12,第二章 MATLA数值计算功能,25,C = 1 1x3 double2x1 double 2x3 double C1,1ans =1 C2,1ans =59 M=cell2mat(C)M =1 2 3 45 6 7 89 10 11 12 六、结构型变量结构型变量是另一种可以将不同类型数据组合在一起的MATLAB语言数据类型。与单元型变量的不同在于结构型变量是以指针方式来传递数据的。,第二章 MATLA数值计算功能,26,A = a1: abcda2: 1a3: 2x2 double,结构型变量的定义方式: 直接赋值定义由函数 struct 定

19、义 直接赋值时,应当指出结构中的属性名,并以指针操作符“ . ”来连接结构型变量名与属性名。如: A.a1=abcd; A.a2=1; A.a3=1,2;3,4 A,第二章 MATLA数值计算功能,27,结构型变量也可构成数组,即结构型数组。如: 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:a1a2a3,说明: 1)在同一结构型数组里,不同的元素可以赋以不同类型的值;2)结构型数组赋值时,也可以只对部分元素赋值,末赋值的元素将被赋以空矩阵,并可以随时对该数组加以

20、修改或添加;3)当结构型变量元素多于一个时,键入变量名将不能完全显示各元素相应的值,而只能反应该结构数组的属性结构。,第二章 MATLA数值计算功能,28, 由函数struct来定义结构型变量,其调用格式如下:结构型变量名=struct (元素名1,元素值1,元素名2,元素值2,)如: C=struct(c1,1,c2,B,c3,hgfd)C = c1: 1c2: 2x3 doublec3: hgfd与单元型变量相似,结构型变量也可以嵌套定义。如: C.c1=A %嵌套结构的定义C = c1: 1x2 structc2: 2x3 doublec3: hgfd C.c1(1).a1 %嵌套结构型

21、变量的引用ans =abcd,第二章 MATLA数值计算功能,29,结构型变量的相关函数 (见下表),第二章 MATLA数值计算功能,30,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:tagnamecolor x1=h(2).tag %利用.获取结构数组中的数据x1 =openbutton x2=h(3).colorx2 =red,第二章

22、 MATLA数值计算功能,31,%通过函数getfield获取结构数组中的数据 x3=getfield(h,2,name) x3 = open %通过函数setfield设置结构数组中的数据 h=setfield(h,2,color,black); h(2).color ans = black,第二章 MATLA数值计算功能,32,4、结构数组的其他操作 %添加结构数组中的结构域 clear h(2)=struct(tag,openbutton,name,open,color,green); h(2).position=225 118 10 25; h(2)ans = tag: openbut

23、tonname: opencolor: greenposition: 225 118 10 25,第二章 MATLA数值计算功能,33,%删除结构数组中的结构域 clear h(2)=struct(tag,openbutton,name,open,color,green); h=rmfield(h,color) h = 1x2 struct array with fields:tagname,第二章 MATLA数值计算功能,34,%结构数组的运算 student(1)=struct(No,07332688,name,David,score,89,90,78;85,70,87)student =

24、 No: 7332688name: Davidscore: 2x3 double aver=mean(student(1).score)aver =87.0000 80.0000 82.5000,第二章 MATLA数值计算功能,35, 2.2 向量及其运算,一、向量的生成1. 直接输入向量: 在命令窗口直接输入,向量元素用 括起来,元素之间可以用空格、逗号或分号分隔,用空格、逗号分隔生成行向量,用分号分隔生成列向量。如:a=1 2 3 4 5 b=1,3;2,4 c=3;4;52. 利用冒号表达式生成向量冒号表达式的基本形式: x=x0:step:xn注意:1)xn为尾元素,而非尾元素值;2)

25、若x00;若x0xn,则需stepa=1:2:12 a=12:-2:1; a=1:6 a=1:2:1,首元素数值,步长,尾元素数值限,第二章 MATLA数值计算功能,36,线性等分向量的生成用线性等分功能函数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)注意:线性等分函数和冒号表达式都可生成等分向量。前者是设定了向量的维数去生成等分间隔向量,后者是通过设

26、定间隔来生成维数随之确定的等间隔向量。 对数等分向量的生成对数等分功能函数调用格式如下:y=logspace(x1,x2) 生成50维对数等分向量,y(1)=10x1,y(50)=10x2;y=logspace(x1,x2,n) 生成n维对数等分向量,y(1)=10x1,y(n)=10x2。如: a2=logspace(0,5,6),第二章 MATLA数值计算功能,37,二、向量的基本运算1. 加(减)与数加(减)如: a1=a1+1 a1=1 21 41 61 81 1012. 数乘如: a2=a1*2 a2=2 42 82 122 162 202 二、点积、叉积及混合积的实现1. 点积计算

27、向量的点积是指两个向量在其中某一个向量方向上的投影的乘积。向量点积函数 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,第二章 MATLA数值计算功能,38,2. 叉积向量的叉积表示过两相交向量的交点的垂直于两向量所在平面的向量。向量叉积函数 cross 调用cross 的格式如下:c=cross(a,b) 返回向量a 和b 的叉积向量。即c

28、=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)。,第二章 MATLA数值计算功能,39,3. 混合积向量的混合积由以上两个函数实现。如: 计算上面向量a,b,c的混合积。 dot(a, cro

29、ss(b,c)ans = 24注意:函数的顺序不可颠倒,否则,将出错。,第二章 MATLA数值计算功能,40,2.3 矩阵及其运算,一、矩阵的生成1. 直接输入小矩阵 从键盘上直接输入矩阵。用此法创建矩阵注意以下几点: 输入矩阵时要以“ ”为其标识,即矩阵的元素应在“ ”内部; 矩阵的同行元素之间可由空格或“,”分隔,行与行之间要用 “;”或回车符分隔; 矩阵的大小可不预先定义; 矩阵的元素可为运算表达式; 若不想获得中间结果,可以“;”结束; 无任何元素的空矩阵亦合法。如: a=1 2 3;3 3 3; 4 3 5 %创建一简单数值矩阵; b=sin(pi/3),cos(pi/4);log(

30、9),tanh(6) %创建一带运算表达式的矩阵;,第二章 MATLA数值计算功能,41,创建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 56

31、7 344 66 33;543 3845 338 086 4586;465 876 987 65 33在MATLAB命令窗口输入: example,第二章 MATLA数值计算功能,42,二、矩阵的基本数学运算矩阵的基本数学运算包括矩阵的四则运算、与常数的运算、逆运算、行列式运算、幂运算、指数运算、对数运算和开方运算等。1. 矩阵的四则运算 矩阵的加和减 使用“+”、“-”运算符,格式与数学运算完全相同,但要求加减两个矩阵是同阶的。如: a=1 2 4;4 5 7;3 8 0 b=49 87 907;43 876 98;234 985 834 c=a+b 矩阵的乘法 运算符“*”,要求相乘的双方

32、要有相邻公共维,即若A为ij阶,则B必须为jk阶时,A和B才可以相乘。例如: e=b,5 5 5 f=a*e,第二章 MATLA数值计算功能,43, 矩阵的除法 运算符:“ ”左除,“ / ”右除矩阵的除法通常用来求解方程组的解。对于方程组Ax=b,其中A是一个(n*m)阶的矩阵,则:1)当n=m且非奇异时,此方程称为恰定方程;2)当nm时,此方程称为超定方程;3)当nm时,此方程称为欠定方程;这三种方程都可以用矩阵的除法求解。,第二章 MATLA数值计算功能,44,例如:用矩阵除法来解一个欠定方程。 a=361 625 961 1444 1936; 1 1 1 1 1; b=1;1; x=a

33、bx =1.2286000-0.2286,第二章 MATLA数值计算功能,45,2. 矩阵与常数间的运算常数与矩阵的运算即是同此矩阵各元素之间进行运算。如数加是指每个元素都加上此常数,数乘即是每个元素都与此数相乘,但进行除法时,常数只能做除数。3. 矩阵的逆运算矩阵的逆运算是由函数inv完成,其调用格式为: inv(x)例如:求矩阵A的逆,其中解: a=2 1 3;3 1 0;-1 2 4inv(a) 4. 矩阵的行列式运算矩阵的行列式的值可由det函数计算得出。例 求上例中A矩阵及其逆的行列式之积。解: a1=det(a) a1=-25 a2=det(inv(a) a2=-0.04 a1*a2 a1*a2=1,第二章 MATLA数值计算功能,46,矩阵的幂运算运算符“ ” 矩阵的指数运算指数运算命令有: expm, expm1, expm2, expm3 矩阵的对数运算对数运算由logm函数实现。 矩阵的开方运算矩阵的开方运算函数为sqrtm。,第二章 MATLA数值计算功能,47,小结:1. MATLAB的数据类型介绍了变量与常量的概念,数字数据类型和字符串数据类型,单元型和结构型数据类型的概念;2. 向量及其运算介绍了向量的生成,向量的基本运算,点积、叉积及混合积的实现;3. 矩阵及其运算介绍了矩阵的生成和矩阵的基本数学运算。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报