MATLAB实用教程 教学课件 ppt 作者 张磊 郭莲英 丛滨02

上传人:w****i 文档编号:94462153 上传时间:2019-08-07 格式:PPT 页数:48 大小:1.59MB
返回 下载 相关 举报
MATLAB实用教程 教学课件 ppt 作者  张磊 郭莲英 丛滨02_第1页
第1页 / 共48页
MATLAB实用教程 教学课件 ppt 作者  张磊 郭莲英 丛滨02_第2页
第2页 / 共48页
MATLAB实用教程 教学课件 ppt 作者  张磊 郭莲英 丛滨02_第3页
第3页 / 共48页
MATLAB实用教程 教学课件 ppt 作者  张磊 郭莲英 丛滨02_第4页
第4页 / 共48页
MATLAB实用教程 教学课件 ppt 作者  张磊 郭莲英 丛滨02_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《MATLAB实用教程 教学课件 ppt 作者 张磊 郭莲英 丛滨02》由会员分享,可在线阅读,更多相关《MATLAB实用教程 教学课件 ppt 作者 张磊 郭莲英 丛滨02(48页珍藏版)》请在金锄头文库上搜索。

1、1,第二章 基础知识,本章着重介绍MATLAB的一些基础知识,包括数据类型、基本矩阵操作、运算符和字符串处理函数。本章的内容是MATLAB编程的基础。,2,本章主要内容,2.1 数据类型 2.2 基本矩阵操作 2.3 运算符和特殊符号 2.4 矩阵运算函数 2.5 矩阵元素运算函数 2.6 字符串处理函数 2.7 符号计算,3,2.1 数据类型,1数值类型 整数类型 浮点数类型,4,复数类型 复数包含实部和虚部。在MATLAB中可以用i或者j来表示虚部。 例2.1 在命令窗口用赋值语句产生复数5+10i,具体代码如下: a=5+10i 例2.2 在命令窗口用函数complex()产生复数5+1

2、0i,具体代码序列如下: x=5; y=10; z=complex(x,y),5,Inf和NaN 在MATLAB中用Inf和-Inf分别表示正无穷大和负无穷大。除法运算中除数为0或者运算结果溢出都会导致inf或-inf的运行结果。类似2/0、exp(3000)、log(0)等运算产生的结果均为Inf。 在MATLAB中用NaN(Not a Number)来表示一个既不是实数也不是复数的数值。类似0/0、inf/inf等运算产生的结果均为NaN。 2逻辑类型 在MATLAB中逻辑类型包含true和false,分别由1和0表示。在MATLAB中用函数logical()将任何非零的数值转换为true

3、(即1),将数值0转换为false(即0)。,6,3字符和字符串类型 在MATLAB中,数据类型(char)表示一个字符。一个char类型的1n数组称为字符串string。 例2.3 在命令窗口用“单引号对”表示字符串I am a great person,具体代码如下: str=I am a great person 例2.4 在命令窗口用函数char()构造字符串AB,具体代码如下: str=char(65 66),7,4结构体类型 结构体类型是一种由若干属性(field)组成的MATLAB数组,其中的每个属性可以是任意数据类型。图2-1表示了一个结构体(Personel),它包括3个属性

4、(Name、Score和Salary),其中Name是一个字符串,Score是一个数值,Salary是一个15的向量。,8,2.2 基本矩阵操作,2.2.1矩阵的构造 最简单的方法是采用矩阵构造符“”。构造1n矩阵(行向量)时,可以将各元素依次放入矩阵构造符内,并且以空格或者逗号分隔;构造mn矩阵时,每行如上处理,并且行与行之间用分号分隔。 例2.15 构造一个14矩阵,各元素依次为1,2,3和4,具体代码如下: a=1 2 3 4 或者是 a=1,2,3,4,9,特殊矩阵构造 在MATLAB中还提供一些函数用来构造特殊矩阵,10,例2.17 产生一个34的全0矩阵,具体代码如下: a=zer

5、os(3,4) 运行结果如下: a = 0 0 0 0 0 0 0 0 0 0 0 0,11,向量构造 最简单的方法是采用向量构造符“:”,其常用的用法如下。 (1)a:b 返回以a为起点,以1为步长,且所有取值在a与b之间的向量。 例2.19 产生一个15的矩阵,其中的元素依次为1,2和3,具体代码如下: A = 1:3 运行结果如下: A = 1 2 3,12,2.2.2矩阵大小的改变 矩阵的合并就是把两个或者两个以上的矩阵连接成一个新矩阵。前面介绍的矩阵构造符不仅可用于构造矩阵,同时还可以作为一个矩阵合并操作符。表达式C=A B在水平方向合并矩阵A和B,而表达式C=A;B在竖直方向合并矩

6、阵A和B。 例2.24 在竖直方向合并矩阵A=ones(2,3)和B=zeros(1,3),具体代码序列如下: A=ones(2,3); B=zeros(1,3); C=A;B 运行结果如下: C = 1 1 1 1 1 1 0 0 0,13,矩阵合并函数,14,2矩阵行列的删除 要删除矩阵的某一行或者是某一列,只需将该行或者该列赋予一个空矩阵即可。 例2.27 删除3阶魔方矩阵的第2行,具体代码序列如下: A = magic(3); A(2,:)= 运行结果如下: A = 8 1 6 4 9 2,15,2.2.3矩阵下标引用 1访问单个元素 若A是二维矩阵,可以用A(i, j)来表示第i行第

7、j列的元素。 例2.28 读取A=magic(3)的第3行第2列的元素值,具体代码序列如下: A=magic(3); b=A(3,2) 运行结果如下: b = 9,16,2线性引用元素 对于矩阵A,线性引用元素的格式为A(k)。通常这样的引用用于行向量或列向量,但也可用于二维矩阵。 MATLAB按列优先排列的一个长列向量格式来存储矩阵元素,并不是按其命令行输出格式来存储的。按照长列向量格式存取元素值就是线性引用元素。 如矩阵A = 2 6 9; 4 2 8; 3 5 1,在内存中是被存储成以2、4、3、6、2、5、9、8、1排列的一个列向量。它第3行第2列的元素,也就是内存中的第6个元素,其值

8、为5。要访问这个元素,既可以用A(3,2),也可以用A(6)。 一般地,设矩阵A是一个MN的矩阵,矩阵元素A(i,j)等同于A(j1)*M+i)。如上,A(3,2)=A(21)*3+3)=A(6)。,17,3访问多个元素 操作符“:”可以用来表示矩阵的多个元素。若A是二维矩阵,其主要用法如下: A(:,:) 返回矩阵A的所有元素。 A(i,:) 返回矩阵A第i行的所有元素。 A(i,k1:k2) 返回矩阵A第i行的自k1到k2列的所有元素。 A(:,j) 返回矩阵A第j列的所有元素。 A(k1:k2,j) 返回矩阵A第j列的自k1到k2行的所有元素。 若A是多维矩阵,也可以通过类似的方法实现对

9、其访问。,18,2.2.4 矩阵信息的获取 1矩阵尺寸信息 矩阵尺寸函数可以得到矩阵的形状和大小信息,这些函数如表2-5所示。,19,2元素的数据类型 查询元素数据类型信息的部分函数如表2-6所示。,20,3矩阵的数据结构 判断矩阵是否为某种指定数据结构的函数如表2-7所示。,21,2.2.5 矩阵结构的改变 改变矩阵结构的函数如表2-8所示。,22,2.3 运算符和特殊符号,2.3.1 算数运算符 在MATLAB中,算数运算符的用法和功能如表2-11所示。,23,2.3.2 关系运算符 MATLAB中关系运算符的用法和功能如表2-12所示。 值得注意的是,关系运算符只针对两个相同长度的矩阵,

10、或其中之一是标量的情况进行运算。对于前者,是指两个矩阵的对应元素进行比较,返回具有相同长度的矩阵;对于后者,是指这个标量与另一个矩阵的每元素进行运算。关系运算C=f(A,B)的运算结果只有0和1两种情况,其中,函数f()表示关系运算符,0表示不满足条件,1表示满足条件。,24,2.3.3 逻辑运算符 MATLAB提供元素方式和比特方式等逻辑运算符。 元素方式逻辑运算符& 、 | 和 与函数and()、or()和not()是等价的。,25,比特方式逻辑运算符只接受逻辑和非负整数类型的输入变量,它是针对输入变量的二进制进行逻辑运算。它的用法和功能如表2-14所示,表中例子采用A = 28和B =

11、200,其对应的二进制分别为11100和11001000。,26,2.4 矩阵运算函数,矩阵运算是线性代数中极其重要的部分,MATLAB具有强大的矩阵运算能力。 2.4.1 矩阵分析 对于向量( 或 ) 和 间的距离可表示为 ,其中 。在MATLAB中该距离可用如下两种方式计算: N=norm(E,2) N=norm(E),27,矩阵A中线性无关的列向量个数称为列秩,线性无关的行向量个数称为行秩。可以证明列秩与行秩是相等的。MATLAB中用函数rank()来计算矩阵的秩。 矩阵 的行列式求法为 ,其中 是将序列 的元素次序交换k次所得到的一个序列, 表示对 取遍 的一切排列求和。在MATLAB

12、中用函数det()来计算矩阵的行列式。 矩阵的迹定义为矩阵对角元素之和。在MATLAB中用函数trace()来计算矩阵的迹。 对于非满秩矩阵A,若存在矩阵Z使得AZ = 0且ZTZ = I,则称矩阵Z为矩阵A的化零矩阵。在MATLAB中用函数null()来计算矩阵的化零矩阵。 矩阵A的正交空间Q满足QTQ = I,且矩阵Q与A具有相同的列基底。在MATLAB中用函数orth()来计算正交空间Q。,28,矩阵A的简化梯形形式为 ,其中Ir为r阶单位矩阵。在MATLAB中用函数rref()来计算矩阵的简化梯形形式。 矩阵空间之间的角度代表具有相同行数的两个矩阵线性相关程度,夹角越小代表线性相关度越

13、高。在MATLAB中用函数subspace()来计算矩阵空间之间的角度。,29,2.4.2 线性方程组 线性方程组求解问题,可以表述为给定两个矩阵A和B,求解X使得AX=B或XA=B。XA=B可以表示为AY=B,且X=Y。下面仅讨论AX=B的情况。 如果矩阵A是非奇异的,则语句AB给出了方程组的解。 例3.10 求线性方程组AX=B的解,其中,A=magic(3)和B=1;2;3,具体代码序列如下: A=magic(3); B=1;2;3; X=AB 运行结果如下: X = 0.0500 0.3000 0.0500,30,2.4.3 矩阵分解 矩阵分解是把一个矩阵分解成比较简单或者对它性质比较

14、熟悉的若干矩阵的乘积的形式。本小节将介绍几种矩阵分解的方法,这些方法可以用在线性方程组求解中,相关函数如表3-2所示。,31,1Cholesky分解 Cholesky分解是把对称正定矩阵A表示为上三角矩阵R的转置与其本身的乘积,即A = RTR。在MATLAB中用函数chol()来计算Cholesky分解。 2LU分解 高斯消去法又称LU分解,它可以将任意一个方阵A分解为一个交换下三角矩阵L和一个上三角矩阵U的乘积,即A=LU。交换下三角矩阵为下三角矩阵经行变换的结果。 LU分解在MATLAB中用函数lu()来实现,其具体用法如下: L,U = lu(X),X为一个方阵,L为交换下三角矩阵,U

15、为上三角矩阵,满足关系X=L*U; L,U,P = lu(X),X为一个方阵,L为下三角矩阵,U为上三角矩阵,P为置换矩阵,满足关系P*X = L*U或X =P1 *L*U。,32,考虑线性方程组AX=B和矩阵A的LU分解,线性方程组可以改写成L*U*X=B,由于左除算符可以快速处理三角矩阵,因此可以快速解出: X=U(LB) 矩阵的行列式和逆也可以利用LU分解来计算,如 det(A)=det(L)*det(U) inv(A)=inv(U)*inv(L) 对于稀疏矩阵,在MATLAB中提供了函数luinc()来做不完全LU分解,其具体用法如下: L U= luinc(X,DROPTOL),其中

16、X、L和U的含义与函数lu()中的变量相同,DROPTOL为不完全LU分解的丢失容限。当DROPTOL设为0时,退化为完全LU分解。 L,U = luinc(X,0),0级不完全LU分解。 L,U,P = luinc(X,0),0级不完全LU分解。,33,3QR分解 QR分解就是将mn的矩阵A分解为mn的矩阵Q和nn的上三角矩阵R的乘积,且Q*Q=I,即A=Q*R。 在MATLAB中QR分解是由函数qr()来实现,其具体用法如下: Q,R = qr(A) 满足A=Q*R。 R = qr(A), 返回上三角矩阵R。 4奇异值分解 奇异值分解就是将mn的矩阵A分解为A=U*S*V,其中U为mm的酉矩阵,V为nn的酉矩阵,S为mn的矩阵,并可如下表示: ,其中 , , 在MAT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号