数组和矩阵分析.ppt

上传人:wuy****n92 文档编号:64357443 上传时间:2022-11-29 格式:PPT 页数:70 大小:237.49KB
返回 下载 相关 举报
数组和矩阵分析.ppt_第1页
第1页 / 共70页
数组和矩阵分析.ppt_第2页
第2页 / 共70页
点击查看更多>>
资源描述

《数组和矩阵分析.ppt》由会员分享,可在线阅读,更多相关《数组和矩阵分析.ppt(70页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第3 3章章 数组和矩阵分析数组和矩阵分析MATLAB语言最基本和最重要的功能就是进行矩阵运算,语言最基本和最重要的功能就是进行矩阵运算,所有的数值功能都以矩阵为基本单元来实现。本章将对所有的数值功能都以矩阵为基本单元来实现。本章将对MATLAB中的数组和矩阵及其运算进行详细的介绍。中的数组和矩阵及其运算进行详细的介绍。3.1 3.1 数组及其函数数组及其函数下面介绍下面介绍MATLAB中如何建立数组,以及数组的常用操作中如何建立数组,以及数组的常用操作等,包括数组的算术运算、关系运算和逻辑运算,以及等,包括数组的算术运算、关系运算和逻辑运算,以及数组信息的获取等。数组信息的获取等。3.1.

2、1 3.1.1 数组的建立和操作数组的建立和操作在在MATLAB中,一般使用方括号(中,一般使用方括号()、逗号()、逗号(,)、空)、空格及分号(格及分号(;)来创建数组。数组中同一行的元素之间)来创建数组。数组中同一行的元素之间用逗号或空格进行分割,不同行之间用分号进行分割。用逗号或空格进行分割,不同行之间用分号进行分割。需要注意的是,这些符号都必须在英文输入状态下输入。需要注意的是,这些符号都必须在英文输入状态下输入。空数组是空数组是MATLAB中最特殊的数组,不含有任何元素,可中最特殊的数组,不含有任何元素,可以用于数组的声明或者清空等。创建空数组非常简单,以用于数组的声明或者清空等。

3、创建空数组非常简单,只要把变量赋值为一对方括号即可。数组是有方向的,只要把变量赋值为一对方括号即可。数组是有方向的,一维数组包括行向量和列向量,行向量是以行方向分布一维数组包括行向量和列向量,行向量是以行方向分布的,列向量是以列方向分布的。创建一维行向量,把所的,列向量是以列方向分布的。创建一维行向量,把所有用空格或逗号分割的元素用方括号括起来;创建一维有用空格或逗号分割的元素用方括号括起来;创建一维列向量,把所有用分号分割的元素用方括号括起来。列向量,把所有用分号分割的元素用方括号括起来。3.1.2 3.1.2 数组的算术运算数组的算术运算数组运算是从数组的单个元素出发,针对每个元素进行的数

4、组运算是从数组的单个元素出发,针对每个元素进行的运算。在运算。在MATLAB中,一维数组的基本算术运算有:中,一维数组的基本算术运算有:(加)、(减)、(加)、(减)、.*(乘)、(乘)、./(左除)、(左除)、.(右除)(右除)和和(乘方)等。(乘方)等。数组的加减运算规则:若数组数组的加减运算规则:若数组A和和B的维数相同,则可以执的维数相同,则可以执行加减运算,相应元素相加减。如果行加减运算,相应元素相加减。如果A和和B的维数不相同,的维数不相同,则则MATLAB将给出错误信息,提示用户两个数组的维数将给出错误信息,提示用户两个数组的维数不匹配。不匹配。3.1.2 3.1.2 数组的算术

5、运算数组的算术运算在在MATLAB中,数组的乘法和除法分别用中,数组的乘法和除法分别用“.*”和和“./”表示。如果数组表示。如果数组A和和B具有相同的维数,则数组的乘法表具有相同的维数,则数组的乘法表示数组示数组A和和B中对应的元素相乘,数组的除法表示数组中对应的元素相乘,数组的除法表示数组A和和B中对应的元素相除。中对应的元素相除。右除和左除的关系为:右除和左除的关系为:A./B=B.A,其中是,其中是A被除数,被除数,B是除是除数。数。3.1.3 3.1.3 数组的关系运算数组的关系运算MATLAB提供了提供了6种关系运算符:种关系运算符:(小于(小于)、(大于(大于)、=(大于或等于)

6、、(大于或等于)、=(恒等于)、(恒等于)、=(不等于)。它们的含义很容易理解,需要注意的(不等于)。它们的含义很容易理解,需要注意的是其书写方法与数学中的不等式符号不尽相同。是其书写方法与数学中的不等式符号不尽相同。当参与比较的量是两个维数相同的数组时,比较两数组相同当参与比较的量是两个维数相同的数组时,比较两数组相同位置的元素,并给出比较结果。最终的关系运算的结果是位置的元素,并给出比较结果。最终的关系运算的结果是一个维数与原矩阵相同的数组,由一个维数与原矩阵相同的数组,由0或或1组成。组成。当参与比较的一个是标量,而另一个是数组时,则把标量与当参与比较的一个是标量,而另一个是数组时,则把

7、标量与数组的每一个元素逐个比较,最终的关系运算的结果是一数组的每一个元素逐个比较,最终的关系运算的结果是一个维数与原数组相同的数组。个维数与原数组相同的数组。3.1.4 3.1.4 数组的逻辑运算数组的逻辑运算在在MATLAB中,提供了中,提供了3种逻辑运算符,分别是种逻辑运算符,分别是&(逻辑与)(逻辑与)、|(逻辑或)和(逻辑非)。(逻辑或)和(逻辑非)。在逻辑运算中,如果为非零元素则为逻辑真,用在逻辑运算中,如果为非零元素则为逻辑真,用1表示,零表示,零元素为逻辑假,用元素为逻辑假,用0表示。表示。3.1.3 3.1.3 数组信息的获取数组信息的获取下面介绍如何获取数组的信息,包括数组大

8、小、维度、数下面介绍如何获取数组的信息,包括数组大小、维度、数据类型、内存占用,以及数组的元素查找和排序等。据类型、内存占用,以及数组的元素查找和排序等。函数函数isempty(A):该函数检测数组是否为空,如果为空,返:该函数检测数组是否为空,如果为空,返回值为回值为1,否则,返回值为,否则,返回值为0。函数函数isscalar(A)检测数组是否为单个元素的标量。检测数组是否为单个元素的标量。函数函数isvector(A)检测数组是否为行向量或列向量。检测数组是否为行向量或列向量。函数函数isrow()检测数组是否为列向量。检测数组是否为列向量。函数函数iscolum()检测数组是否为行向量

9、。检测数组是否为行向量。函数函数issparse()检测数组是否为稀疏矩阵。检测数组是否为稀疏矩阵。3.1.3 3.1.3 数组信息的获取数组信息的获取下面介绍如何获取数组的信息,包括数组大小、维度、数下面介绍如何获取数组的信息,包括数组大小、维度、数据类型、内存占用,以及数组的元素查找和排序等。据类型、内存占用,以及数组的元素查找和排序等。函数函数isempty(A):该函数检测数组是否为空,如果为空,返:该函数检测数组是否为空,如果为空,返回值为回值为1,否则,返回值为,否则,返回值为0。函数函数isscalar(A)检测数组是否为单个元素的标量。检测数组是否为单个元素的标量。函数函数is

10、vector(A)检测数组是否为行向量或列向量。检测数组是否为行向量或列向量。函数函数isrow()检测数组是否为列向量。检测数组是否为列向量。函数函数iscolum()检测数组是否为行向量。检测数组是否为行向量。函数函数issparse()检测数组是否为稀疏矩阵。检测数组是否为稀疏矩阵。3.1.3 3.1.3 数组信息的获取数组信息的获取在在MATLAB中,最常用的检测数组大小的函数是中,最常用的检测数组大小的函数是size()和和length()。函数函数size()获取数组的行数和列数获取数组的行数和列数,函数,函数length()获取一获取一维数组的长度,如果是二维数组,则返回行数和列

11、数中的维数组的长度,如果是二维数组,则返回行数和列数中的较大者较大者。函数函数ndims()计算数组的维度计算数组的维度。3.1.3 3.1.3 数组信息的获取数组信息的获取在在MATLAB中,可以采用函数中,可以采用函数whos来获取数组的大小,以来获取数组的大小,以及占用内存的多少。对于数组中不同的数据类型,占用及占用内存的多少。对于数组中不同的数据类型,占用的内存也不一样。的内存也不一样。在在MATLAB中,数组元素的查找采用函数中,数组元素的查找采用函数find(),返回关系,返回关系表达式为真的元素的下标。表达式为真的元素的下标。在在MATLAB中,数组的排序使用函数中,数组的排序使

12、用函数sort(),该函数默认按,该函数默认按照升序排列,返回值为排序后的数组,和原数组维数相同。照升序排列,返回值为排序后的数组,和原数组维数相同。3.2 3.2 矩阵的创建矩阵的创建矩阵的创建有多种方式,最简单的是在命令窗口中直接输矩阵的创建有多种方式,最简单的是在命令窗口中直接输入矩阵,比较适合创建比较小的矩阵。把矩阵的元素放入矩阵,比较适合创建比较小的矩阵。把矩阵的元素放到方括号里面,每行的元素用空格或逗号分割,每列用到方括号里面,每行的元素用空格或逗号分割,每列用分号分割。需要注意的是每行的元素数必须相等,每列分号分割。需要注意的是每行的元素数必须相等,每列的元素数也必须相等。的元素

13、数也必须相等。此外,还可以通过语句和函数生成矩阵,例如函数此外,还可以通过语句和函数生成矩阵,例如函数eye()用用于生成单位矩阵。另外,还可以通过于生成单位矩阵。另外,还可以通过M文件来建立矩阵,文件来建立矩阵,以及从外部数据文件中导入矩阵,例如通过函数以及从外部数据文件中导入矩阵,例如通过函数imread()读取图片,从而得到图像数据的二维矩阵。读取图片,从而得到图像数据的二维矩阵。3.2 3.2 矩阵的创建矩阵的创建在在MATLAB中,矩阵的元素按照列进行保存,先第一列,中,矩阵的元素按照列进行保存,先第一列,再第二列,直到结束。矩阵中的元素可以采用单下标获再第二列,直到结束。矩阵中的元

14、素可以采用单下标获取,也可以采用双下标获取。单下标和双下标之间,可取,也可以采用双下标获取。单下标和双下标之间,可以通过以通过MATLAB提供的函数提供的函数sub2ind()和和ind2sub()进进行转换。行转换。在程序中,对矩阵中的元素进行赋值。如果行或者列超出在程序中,对矩阵中的元素进行赋值。如果行或者列超出矩阵的大小,则矩阵的大小,则MATLAB自动扩充矩阵的大小,然后再自动扩充矩阵的大小,然后再进行赋值,扩充部分用零填充。进行赋值,扩充部分用零填充。3.3 3.3 矩阵的基本操作矩阵的基本操作在在MATLAB中,矩阵是基本的计算单元,有很多关于矩阵中,矩阵是基本的计算单元,有很多关

15、于矩阵操作的函数。下面介绍常用的矩阵的扩展、块操作、转操作的函数。下面介绍常用的矩阵的扩展、块操作、转置、旋转和翻转,以及改变矩阵的大小等。置、旋转和翻转,以及改变矩阵的大小等。3.3.1 3.3.1 矩阵的扩展矩阵的扩展在在MATLAB中,可以通过数组的扩展,将多个小矩阵转换中,可以通过数组的扩展,将多个小矩阵转换为大的矩阵。进行数组连接的函数有函数为大的矩阵。进行数组连接的函数有函数cat()、函数、函数vertcat()和函数和函数horzcat()。下面对这些函数进行介绍:。下面对这些函数进行介绍:C=cat(DIM,A,B):该函数在:该函数在DIM维度上进行矩阵维度上进行矩阵A和和

16、B的的连接,返回值为连接后的矩阵。连接,返回值为连接后的矩阵。C=vertcat(A,B):该函数在水平方向上连接数组:该函数在水平方向上连接数组A和和B,相,相当于当于cat(1,A,B)。C=horzcat(A,B):该函数在垂直方向上连接数组:该函数在垂直方向上连接数组A和和B,相当于相当于cat(2,A,B)。3.3.2 3.3.2 矩阵的块操作矩阵的块操作在在MATLAB中,通过函数中,通过函数repmat()、函数、函数blkdiag()和函和函数数kron()进行矩阵的块操作,下面分别进行介绍。进行矩阵的块操作,下面分别进行介绍。在在MATLAB中,通过函数中,通过函数repma

17、t()进行数据块的复制,该进行数据块的复制,该函数的调用格式为:函数的调用格式为:B=repmat(A,m,n):该函数产生大的矩阵:该函数产生大的矩阵B,把矩阵,把矩阵A当当作单个元素,产生由作单个元素,产生由m行和行和n列的矩阵列的矩阵A组成的大矩阵组成的大矩阵B。B=repmat(A,m):该函数产生大的矩阵:该函数产生大的矩阵B,把矩阵,把矩阵A当作当作单个元素,产生单个元素,产生m行和行和m列的矩阵列的矩阵A组成的大矩阵组成的大矩阵B。3.3.2 3.3.2 矩阵的块操作矩阵的块操作在在MATLAB中,采用函数中,采用函数blkdiag()将多个矩阵作为对角块,将多个矩阵作为对角块,

18、产生新的矩阵。该函数的调用格式为:产生新的矩阵。该函数的调用格式为:Y=blkdiag(A,B):该函数将矩阵:该函数将矩阵A和和B作为对角块,产生作为对角块,产生新的矩阵新的矩阵Y。Y=blkdiag(A,B,):该函数将多个矩阵作为对角块,产:该函数将多个矩阵作为对角块,产生新的矩阵。生新的矩阵。3.3.3 3.3.3 矩阵中元素的删除矩阵中元素的删除在在MATLAB中,利用空矩阵删除矩阵的元素。在中,利用空矩阵删除矩阵的元素。在MATLAB中,空矩阵为一对方括号(中,空矩阵为一对方括号()。矩阵赋值为空矩阵的)。矩阵赋值为空矩阵的语句为语句为X=。注意,。注意,X=与与clear X不同

19、,不同,clear是将是将X从从工作空间中删除,而空矩阵则存在于工作空间中,只是工作空间中删除,而空矩阵则存在于工作空间中,只是维数为维数为0。3.3.4 3.3.4 矩阵的转置矩阵的转置在在MATLAB中进行矩阵的转置,最简单的是采用转置操作中进行矩阵的转置,最简单的是采用转置操作符(符(),从而实现矩阵),从而实现矩阵A的的Hermition转置为转置为A。如果。如果矩阵中含有复数,则进行矩阵转置后,复数转化为共轭矩阵中含有复数,则进行矩阵转置后,复数转化为共轭复数。复数。矩阵的真正转置为矩阵的真正转置为A.,即使为复数,也不转换为共轭。也,即使为复数,也不转换为共轭。也可以采用函数可以采

20、用函数transpose(A)来实现,两者完全一致。来实现,两者完全一致。3.3.5 3.3.5 矩阵的旋转矩阵的旋转在在MATLAB中,矩阵的旋转可以采用转置的方法,也可以中,矩阵的旋转可以采用转置的方法,也可以采用函数采用函数rot90()。该函数的调用格式为:。该函数的调用格式为:B=rot90(A):该函数将矩阵逆时针旋转:该函数将矩阵逆时针旋转90度。度。B=rot90(A,k):该函数将矩阵逆时针旋转:该函数将矩阵逆时针旋转90度的度的k倍,倍,k的的默认值为默认值为1。3.3.6 3.3.6 矩阵的翻转矩阵的翻转对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,对矩阵实施左右翻

21、转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,依次类推。在第二列和倒数第二列调换,依次类推。在MATLAB中,中,对矩阵进行左右翻转的函数是对矩阵进行左右翻转的函数是fliplr(A),实现矩阵的左,实现矩阵的左右翻转。右翻转。对矩阵进行上下翻转是将原矩阵的第一行和最后一行调换,对矩阵进行上下翻转是将原矩阵的第一行和最后一行调换,第二行和倒数第二行调换,依次类推。在第二行和倒数第二行调换,依次类推。在MATLAB中,中,对矩阵进行上下翻转的函数是对矩阵进行上下翻转的函数是flipud(A),实现矩阵的上,实现矩阵的上下翻转。下翻转。此外,还可以采用函数此外,还可以采用函数flip

22、dim()进行矩阵的翻转,该函数进行矩阵的翻转,该函数的调用格式为:的调用格式为:flipdim(A,k),该函数在指定的方向,该函数在指定的方向k进进行矩阵的翻转。当行矩阵的翻转。当k=1时,相当于时,相当于flipud(A),当时,当时k=2,相当于,相当于fliplr(A)。3.3.7 3.3.7 矩阵尺寸的改变矩阵尺寸的改变在矩阵总元素保持不变的前提下,在在矩阵总元素保持不变的前提下,在MATLAB中才用函数中才用函数reshape()改变矩阵的尺寸。该函数的调用格式为:改变矩阵的尺寸。该函数的调用格式为:Y=reshape(X,m,n),将矩阵转换为,将矩阵转换为m行行n列的二维矩列

23、的二维矩阵。矩阵的总元素数不变。阵。矩阵的总元素数不变。3.4 3.4 矩阵的基本数值运算矩阵的基本数值运算矩阵的基本数值计算包括矩阵的加法、减法、乘法和除法,矩阵的基本数值计算包括矩阵的加法、减法、乘法和除法,以及矩阵元素的查找、排序、求和和求积等。下面分别以及矩阵元素的查找、排序、求和和求积等。下面分别进行介绍。进行介绍。3.4.1 3.4.1 矩阵的加减运算矩阵的加减运算假定有两个矩阵假定有两个矩阵A和和B,则可以由,则可以由A+B和和A-B实现矩阵的加实现矩阵的加减运算,要求矩阵减运算,要求矩阵A和和B的维数必须相同。矩阵的加法和的维数必须相同。矩阵的加法和减法是矩阵中对应元素加减。如

24、果和中有一个为标量,减法是矩阵中对应元素加减。如果和中有一个为标量,则将矩阵中的每一个元素和该标量进行加减运算。则将矩阵中的每一个元素和该标量进行加减运算。3.4.2 3.4.2 矩阵的乘法矩阵的乘法在在MATLAB中,矩阵中,矩阵A和和B的乘法为的乘法为A*B,要求矩阵,要求矩阵A的列的列数和矩阵数和矩阵B的行数必须相等。的行数必须相等。此外,矩阵此外,矩阵A和和B的点乘为的点乘为A.*B,表示矩阵,表示矩阵A和和B中对应元中对应元素相乘,要求矩阵素相乘,要求矩阵A和和B具有相同的维数,返回结果和原具有相同的维数,返回结果和原矩阵有相同的维数。如果矩阵有相同的维数。如果A和和B的维数不满足要

25、求,系统的维数不满足要求,系统会给出出错信息,提示两个数组的维数不匹配。会给出出错信息,提示两个数组的维数不匹配。3.4.3 3.4.3 矩阵的除法矩阵的除法在在MATLAB中,矩阵的除法有左除和右除两种,分别用中,矩阵的除法有左除和右除两种,分别用“”和和“/”表示。通常矩阵的除法用来求解方程组的表示。通常矩阵的除法用来求解方程组的解。一般情况下,矩阵解。一般情况下,矩阵A和和B的左除为的左除为X=AB,表示方程,表示方程组组A*X=B的解。矩阵的解。矩阵A和和B的右除为的右除为X=B/A,表示线性,表示线性方程组方程组X*A=B的解。如果的解。如果X不存在或不唯一,则系统显不存在或不唯一,

26、则系统显示警告信息。示警告信息。此外,还有矩阵的点除,采用此外,还有矩阵的点除,采用“./”或或“.”表示,表示表示,表示两个矩阵中对应元素相除。两个矩阵中对应元素相除。3.4.4 3.4.4 矩阵元素的查找矩阵元素的查找在在MATLAB中,采用函数中,采用函数find()进行矩阵元素的查找。函进行矩阵元素的查找。函数数find()通常和关系运算和逻辑运算相结合,能够对矩通常和关系运算和逻辑运算相结合,能够对矩阵中的元素进行查找。该函数的调用格式为:阵中的元素进行查找。该函数的调用格式为:i=find(A):该函数查找矩阵中的非零元素,函数返回这些:该函数查找矩阵中的非零元素,函数返回这些元素

27、的单下标。元素的单下标。i,j=find(A):该函数查找矩阵中的非零元素,函数返回:该函数查找矩阵中的非零元素,函数返回这些元素的双下标和。这些元素的双下标和。3.4.5 3.4.5 矩阵元素的排序矩阵元素的排序在在MATLAB中,矩阵元素的排序使用函数中,矩阵元素的排序使用函数sort(),该函数,该函数默认按照升序排列,返回排序后的矩阵。默认按照升序排列,返回排序后的矩阵。Y=sort(X):该函数对矩阵按照升序进行排列。当:该函数对矩阵按照升序进行排列。当X为向量为向量时,返回由小到大排序后的向量;当时,返回由小到大排序后的向量;当X为矩阵时,返回为矩阵时,返回X中各列按照由小到大排序

28、后的矩阵。中各列按照由小到大排序后的矩阵。Y=sort(X,DIM):该函数返回在给定的维数上的按照由小:该函数返回在给定的维数上的按照由小到大的顺序排序后的结果,当到大的顺序排序后的结果,当DIM=1时,按照列进行排时,按照列进行排序,当序,当DIM=2时,按照行进行排序。时,按照行进行排序。Y=sort(X,DIM,MODE):该函数可以指定排序的方式。:该函数可以指定排序的方式。参数参数MODE默认值为默认值为ascend,即按照升序进行排列;,即按照升序进行排列;当当MODE为为descend时,对矩阵进行降序排列。时,对矩阵进行降序排列。3.4.6 3.4.6 矩阵元素的求和矩阵元素

29、的求和在在MATLAB中,进行矩阵中元素求和时采用函数中,进行矩阵中元素求和时采用函数sum()和和cumsum()。其调用格式为:。其调用格式为:Y=sum(X):该函数对矩阵:该函数对矩阵X的元素求和,返回矩阵中各列的元素求和,返回矩阵中各列元素的和组成的向量。元素的和组成的向量。Y=sum(X,DIM):该函数返回在给定的维数:该函数返回在给定的维数DIM上的元素上的元素的和,当的和,当DIM=1时,计算矩阵各列元素的和,当时,计算矩阵各列元素的和,当DIM=2时,得到矩阵各行元素的和。时,得到矩阵各行元素的和。函数函数cumsum()的调用格式和函数的调用格式和函数sum()类似,不同

30、之处类似,不同之处是函数是函数cumsum()的返回值为矩阵。的返回值为矩阵。3.4.7 3.4.7 矩阵元素的求积矩阵元素的求积在在MATLAB中,进行矩阵中元素求积时采用函数中,进行矩阵中元素求积时采用函数prod()和和cumprod()。其调用格式为:。其调用格式为:Y=prod(X):该函数对矩阵的元素求积,返回矩阵:该函数对矩阵的元素求积,返回矩阵X中各列中各列元素的积组成的向量。元素的积组成的向量。Y=prod(X,DIM):该函数返回在给定的维数上的元素的积,:该函数返回在给定的维数上的元素的积,当当DIM=1时,计算矩阵各列元素的积,当时,计算矩阵各列元素的积,当DIM=2时

31、,得时,得到矩阵各行元素的积。到矩阵各行元素的积。函数函数cumprod()的调用格式和函数的调用格式和函数prod()类似,不同之处类似,不同之处是函数是函数cumprod()的返回值为矩阵。的返回值为矩阵。3.4.8 3.4.8 矩阵元素的差分矩阵元素的差分在在MATLAB中,利用函数中,利用函数diff()计算矩阵的差分,该函数的计算矩阵的差分,该函数的调用格式为:调用格式为:Y=diff(X):该函数计算矩阵各列的差分。:该函数计算矩阵各列的差分。Y=diff(X,N):该函数计算矩阵各列的:该函数计算矩阵各列的N阶差分。阶差分。Y=diff(X,N,DIM):该函数计算矩阵在方向:该

32、函数计算矩阵在方向DIM上的上的N阶差阶差分。当分。当DIM=1时,计算矩阵各列元素的差分,当时,计算矩阵各列元素的差分,当DIM=2时,得到矩阵各行元素的差分。时,得到矩阵各行元素的差分。3.5 3.5 特殊矩阵的生成特殊矩阵的生成在在MATLAB中,有许多用于创建矩阵的函数。通过这些函中,有许多用于创建矩阵的函数。通过这些函数可以创建二维矩阵,甚至更高维的矩阵。下面对这些数可以创建二维矩阵,甚至更高维的矩阵。下面对这些产生通用特殊矩阵的函数进行介绍。产生通用特殊矩阵的函数进行介绍。3.5.1 3.5.1 全零矩阵全零矩阵在在MATLAB中,采用函数中,采用函数zeros()产生全零矩阵,该

33、函数的产生全零矩阵,该函数的调用格式为:调用格式为:A=zeros(N):该函数产生:该函数产生N行行N列的全零矩阵。列的全零矩阵。A=zeros(M,N):该函数产生:该函数产生M行行N列的全零矩阵。列的全零矩阵。A=zeros(M,N,P,):该函数产生:该函数产生M*N*P*的全零矩阵。的全零矩阵。A=zeros(size(B):该函数产生和矩阵:该函数产生和矩阵B维数相同的全零矩维数相同的全零矩阵。阵。3.5.2 3.5.2 全全1 1矩阵矩阵在在MATLAB中,采用函数中,采用函数ones()产生全产生全1矩阵,该函数的矩阵,该函数的调用格式和函数调用格式和函数zeros()基本一致

34、。基本一致。3.5.3 3.5.3 单位矩阵单位矩阵在在MATLAB中,采用函数中,采用函数eye()产生单位矩阵,该函数的产生单位矩阵,该函数的调用格式为:调用格式为:A=eye(N):该函数产生:该函数产生N行行N列的单位矩阵。列的单位矩阵。A=zeros(M,N):该函数产生:该函数产生M行行N列的矩阵,对角线元素列的矩阵,对角线元素为为1,其余元素均为,其余元素均为0。A=zeros(size(B):该函数产生和矩阵:该函数产生和矩阵B维数相同的单位矩维数相同的单位矩阵。阵。3.5.4 03.5.4 01 1间均匀分布的随机矩阵间均匀分布的随机矩阵在在MATLAB中,采用函数中,采用函

35、数rand()产生产生01之间均匀分布的之间均匀分布的随机矩阵,该函数的调用格式为:随机矩阵,该函数的调用格式为:A=rand(N):该函数产生:该函数产生N行行N列的列的01之间均匀分布的随之间均匀分布的随机矩阵。机矩阵。A=rand(M,N):该函数产生:该函数产生M行行N列的列的01之间均匀分布的之间均匀分布的随机矩阵。随机矩阵。A=rand(M,N,P,):该函数产生:该函数产生M*N*P*的的01之间均匀之间均匀分布的随机矩阵。分布的随机矩阵。A=rand(size(B):该函数产生和矩阵:该函数产生和矩阵B维数相同的维数相同的01之之间均匀分布的随机矩阵。间均匀分布的随机矩阵。3.

36、5.5 3.5.5 标准正态分布随机矩阵标准正态分布随机矩阵在在MATLAB中,采用函数中,采用函数randn()产生均值为产生均值为0,方差为,方差为1的标准正态分布随机矩阵。该函数的调用格式和函数的标准正态分布随机矩阵。该函数的调用格式和函数rand()基本一致。基本一致。3.5.6 3.5.6 魔方矩阵魔方矩阵魔方矩阵中每行、每列及两条对角线上的元素和都相等。魔方矩阵中每行、每列及两条对角线上的元素和都相等。对于对于n阶魔方阵,其元素由阶魔方阵,其元素由1,2,3,n2组成,共组成,共n2个整数。个整数。在在MATLAB中,通过函数中,通过函数magic(n),求,求n阶魔方矩阵。阶魔方

37、矩阵。3.5.7 3.5.7 范得蒙矩阵范得蒙矩阵范得蒙(范得蒙(Vandermonde)矩阵最后一列全为)矩阵最后一列全为1,倒数第二列,倒数第二列为一个指定的向量,其他各列是其后列与倒数第二列的为一个指定的向量,其他各列是其后列与倒数第二列的点乘积。可以用一个指定向量生成一个范得蒙矩阵。点乘积。可以用一个指定向量生成一个范得蒙矩阵。在在MATLAB中,通过函数中,通过函数vander(V)生成以向量生成以向量V为基础向为基础向量的范得蒙矩阵。量的范得蒙矩阵。3.5.8 3.5.8 希尔伯特矩阵希尔伯特矩阵在在MATLAB中,通过函数中,通过函数hilb()生成希尔伯特(生成希尔伯特(Hil

38、bert)矩阵。该函数的调用格式为:矩阵。该函数的调用格式为:hilb(n),产生,产生n阶的希尔阶的希尔伯特矩阵。希尔伯特矩阵是一种病态矩阵,矩阵中任何伯特矩阵。希尔伯特矩阵是一种病态矩阵,矩阵中任何一个元素发生微小的变化,整个矩阵的值和逆矩阵都发一个元素发生微小的变化,整个矩阵的值和逆矩阵都发生巨大的变化。生巨大的变化。MATLAB中,通过函数函数中,通过函数函数invhilb()求希尔伯特矩阵的逆求希尔伯特矩阵的逆矩阵,该函数的调用格式为:矩阵,该函数的调用格式为:invhilb(n),该函数产生,该函数产生n阶希尔伯特矩阵的逆矩阵。阶希尔伯特矩阵的逆矩阵。3.5.9 3.5.9 托普利

39、兹矩阵托普利兹矩阵托普利兹(托普利兹(Toeplitz)矩阵除第一行和第一列外,其它每)矩阵除第一行和第一列外,其它每个元素都与左上角的元素相同。在个元素都与左上角的元素相同。在MATLAB中,通过函中,通过函数数toeplitz()生成托普利兹矩阵。该函数的调用格式为:生成托普利兹矩阵。该函数的调用格式为:toeplitz(x):该函数用向量:该函数用向量x生成一个对称托普利兹矩阵。生成一个对称托普利兹矩阵。toeplitz(x,y):该函数产生一个以:该函数产生一个以x为第一列,为第一列,y为第一行为第一行的托普利兹矩阵。的托普利兹矩阵。x和和y均为向量,两者不必等长。需要均为向量,两者不

40、必等长。需要注意的是,向量注意的是,向量x和和y的第一个元素必须相等。的第一个元素必须相等。3.5.10 3.5.10 伴随矩阵伴随矩阵在在MATLAB中,通过函数中,通过函数compan()产生伴随矩阵,该函产生伴随矩阵,该函数的调用格式为:数的调用格式为:compan(p),其中,其中p为多项式的系数向量,高次幂系数排为多项式的系数向量,高次幂系数排在前,低次幂排在后。在前,低次幂排在后。3.5.11 3.5.11 帕斯卡矩阵帕斯卡矩阵二次项展开后的系数随二次项展开后的系数随n的增大组成一个三角形表,称为杨的增大组成一个三角形表,称为杨辉三角形。由杨辉三角形表组成的矩阵称为帕斯卡辉三角形。

41、由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。该函数的调用格式为:)矩阵。该函数的调用格式为:pascal(n),产,产生一个生一个n阶的帕斯卡矩阵。阶的帕斯卡矩阵。3.6 3.6 矩阵的特征和线性代数矩阵的特征和线性代数下面介绍矩阵的一些基本操作,包括矩阵的特征值、三角下面介绍矩阵的一些基本操作,包括矩阵的特征值、三角阵、对角阵、矩阵的翻转等,以及矩阵的一些特征,例阵、对角阵、矩阵的翻转等,以及矩阵的一些特征,例如矩阵的秩、矩阵的迹和矩阵的范数等。最后介绍了矩如矩阵的秩、矩阵的迹和矩阵的范数等。最后介绍了矩阵的超越函数。阵的超越函数。3.6.1 3.6.1 方阵的行列式方阵的行列式

42、把一个方阵看作一个行列式,并对其按行列式的规则求值,把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为矩阵所对应的行列式的值。这个值就称为矩阵所对应的行列式的值。在在MATALB中,采用函数中,采用函数det()求方阵的行列式,该函数的求方阵的行列式,该函数的调用格式为:调用格式为:det(X),得到方阵,得到方阵X的行列式。的行列式。3.6.2 3.6.2 特征值、特征向量和特征多项式特征值、特征向量和特征多项式在在MATLAB中,计算矩阵中,计算矩阵A的特征值和特征向量的函数是的特征值和特征向量的函数是eig(),该函数的调用格式为:,该函数的调用格式为:E=eig(A):求

43、矩阵:求矩阵A的全部特征值,组成向量的全部特征值,组成向量E。V,D=eig(A):该函数计算矩阵的特征值和特征向量,返:该函数计算矩阵的特征值和特征向量,返回值回值V和和D为两个方阵。方阵为两个方阵。方阵V的每一列为一个特征向量,的每一列为一个特征向量,方阵方阵D为对角矩阵,对角线上的元素为特征值。为对角矩阵,对角线上的元素为特征值。3.6.3 3.6.3 对角阵对角阵只有对角线上有非只有对角线上有非0元素的矩阵称为对角矩阵,对角线上的元素的矩阵称为对角矩阵,对角线上的元素相等的对角矩阵称为数量矩阵,对角线上的元素都元素相等的对角矩阵称为数量矩阵,对角线上的元素都为为1的对角矩阵称为单位矩阵

44、。在的对角矩阵称为单位矩阵。在MATLAB中,通过函中,通过函数数diag()获取矩阵的对角线元素,该函数的调用格式为:获取矩阵的对角线元素,该函数的调用格式为:diag(A):该函数用于提取矩阵:该函数用于提取矩阵A的主对角线元素,产生一的主对角线元素,产生一个列向量。个列向量。diag(A,k):该函数提取第:该函数提取第k条对角线的元素,组成一个列条对角线的元素,组成一个列向量。向量。3.6.4 3.6.4 上三角阵和下三角阵上三角阵和下三角阵三角阵可以分为上三角阵和下三角阵,所谓上三角阵,即矩三角阵可以分为上三角阵和下三角阵,所谓上三角阵,即矩阵的对角线以下的元素全为阵的对角线以下的元

45、素全为0的矩阵,而下三角阵则是对的矩阵,而下三角阵则是对角线以上的元素全为角线以上的元素全为0的一种矩阵。在的一种矩阵。在MATLAB中,通过中,通过函数函数triu()获取矩阵的上三角矩阵,该函数的调用格式为:获取矩阵的上三角矩阵,该函数的调用格式为:triu(A),该函数返回矩阵,该函数返回矩阵A的上三角矩阵。的上三角矩阵。triu(A,k):该函数返回矩阵:该函数返回矩阵A的第的第k条对角线以上的元素。条对角线以上的元素。在在MATLAB中,采用函数中,采用函数tril()求矩阵的下三角矩阵,该函数求矩阵的下三角矩阵,该函数的调用格式和函数的调用格式和函数triu()完全相同,这里不再赘

46、述。完全相同,这里不再赘述。3.6.5 3.6.5 矩阵的逆和伪逆矩阵的逆和伪逆对于方阵对于方阵A,如果存在一个与其同阶的方阵,如果存在一个与其同阶的方阵B,使得,使得A*B=B*A=E,则称,则称A和和B互为逆矩阵。采用函数互为逆矩阵。采用函数inv()求求方阵的逆矩阵。方阵的逆矩阵。如果矩阵如果矩阵A不是一个方阵,或者是一个非满秩方阵时,没不是一个方阵,或者是一个非满秩方阵时,没有逆矩阵,但可以找到一个与有逆矩阵,但可以找到一个与A的转置矩阵同型的矩阵的转置矩阵同型的矩阵B,使得:,使得:此时,称矩阵此时,称矩阵B为矩阵为矩阵A的伪逆,也称为广义逆矩阵。在的伪逆,也称为广义逆矩阵。在MAT

47、LAB中,求矩阵的广义逆矩阵的函数是中,求矩阵的广义逆矩阵的函数是pinv()。该。该函数的调用格式为:函数的调用格式为:pinv(A),该函数计算矩阵,该函数计算矩阵A的广义的广义逆矩阵。逆矩阵。3.6.6 3.6.6 矩阵的秩矩阵的秩矩阵的秩包括行秩和列秩,行秩和列秩相等。行秩为矩阵矩阵的秩包括行秩和列秩,行秩和列秩相等。行秩为矩阵的行向量组成的极大无关组中行向量的个数,列秩为矩的行向量组成的极大无关组中行向量的个数,列秩为矩阵的列向量组成的极大无关组中列向量的个数。矩阵的阵的列向量组成的极大无关组中列向量的个数。矩阵的秩反映了矩阵中各行向量之间和各列向量之间的线性关秩反映了矩阵中各行向量

48、之间和各列向量之间的线性关系。对于满秩矩阵,秩等于行数或列数,其各行向量或系。对于满秩矩阵,秩等于行数或列数,其各行向量或列向量都线性无关。列向量都线性无关。在在MATLAB中,通过函数中,通过函数rank()求矩阵的秩。该函数的调求矩阵的秩。该函数的调用格式为:用格式为:rank(A),该函数求矩阵的秩。,该函数求矩阵的秩。3.6.7 3.6.7 矩阵的迹矩阵的迹矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。值之和。在在MATLAB中,通过函数中,通过函数trace()求矩阵的迹。该函数的调求矩阵的迹。该函数的调用格式为:用格式为

49、:trace(A),求矩阵的迹。,求矩阵的迹。3.6.8 3.6.8 矩阵的范数矩阵的范数矩阵的范数常用的有矩阵的范数常用的有3种。在种。在MATLAB中,求矩阵范数的函中,求矩阵范数的函数为数为norm(),该函数的调用格式为:,该函数的调用格式为:norm(X)或或norm(X,2):计算矩阵的:计算矩阵的2-范数,返回矩阵的最范数,返回矩阵的最大奇异值。大奇异值。norm(X,1):计算矩阵的:计算矩阵的1-范数,返回矩阵的的列向元素范数,返回矩阵的的列向元素和的最大值。和的最大值。norm(X,inf):计算矩阵的:计算矩阵的-范数,返回矩阵的行向元素和范数,返回矩阵的行向元素和的最大

50、值。的最大值。norm(X,fro):该函数计算矩阵的:该函数计算矩阵的Frobenius范数。范数。3.6.9 3.6.9 矩阵的条件数矩阵的条件数矩阵的条件数是用来判断矩阵病态的一个量,矩阵的条件矩阵的条件数是用来判断矩阵病态的一个量,矩阵的条件数越大,表明该矩阵越病态,否则该矩阵越良态。数越大,表明该矩阵越病态,否则该矩阵越良态。Hilbert矩阵就是有名的病态矩阵。矩阵就是有名的病态矩阵。在在MATLAB中,通过函数中,通过函数cond()求矩阵的条件数,该函数求矩阵的条件数,该函数的调用格式为:的调用格式为:cond(X,1):该函数计算矩阵:该函数计算矩阵X的的1-范数下的条件数。

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁