数组和矩阵分析.ppt
《数组和矩阵分析.ppt》由会员分享,可在线阅读,更多相关《数组和矩阵分析.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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不存在或不唯一,则系统显不存在或不唯一,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 矩阵 分析
限制150内