数组和矩阵分析.ppt
《数组和矩阵分析.ppt》由会员分享,可在线阅读,更多相关《数组和矩阵分析.ppt(70页珍藏版)》请在三一办公上搜索。
1、第3章 数组和矩阵分析,MATLAB语言最基本和最重要的功能就是进行矩阵运算,所有的数值功能都以矩阵为基本单元来实现。本章将对MATLAB中的数组和矩阵及其运算进行详细的介绍。,3.1 数组及其函数,下面介绍MATLAB中如何建立数组,以及数组的常用操作等,包括数组的算术运算、关系运算和逻辑运算,以及数组信息的获取等。,3.1.1 数组的建立和操作,在MATLAB中,一般使用方括号()、逗号(,)、空格及分号(;)来创建数组。数组中同一行的元素之间用逗号或空格进行分割,不同行之间用分号进行分割。需要注意的是,这些符号都必须在英文输入状态下输入。空数组是MATLAB中最特殊的数组,不含有任何元素
2、,可以用于数组的声明或者清空等。创建空数组非常简单,只要把变量赋值为一对方括号即可。数组是有方向的,一维数组包括行向量和列向量,行向量是以行方向分布的,列向量是以列方向分布的。创建一维行向量,把所有用空格或逗号分割的元素用方括号括起来;创建一维列向量,把所有用分号分割的元素用方括号括起来。,3.1.2 数组的算术运算,数组运算是从数组的单个元素出发,针对每个元素进行的运算。在MATLAB中,一维数组的基本算术运算有:(加)、(减)、.*(乘)、./(左除)、.(右除)和(乘方)等。,数组的加减运算规则:若数组A和B的维数相同,则可以执行加减运算,相应元素相加减。如果A和B的维数不相同,则MAT
3、LAB将给出错误信息,提示用户两个数组的维数不匹配。,3.1.2 数组的算术运算,在MATLAB中,数组的乘法和除法分别用“.*”和“./”表示。如果数组A和B具有相同的维数,则数组的乘法表示数组A和B中对应的元素相乘,数组的除法表示数组A和B中对应的元素相除。,右除和左除的关系为:A./B=B.A,其中是A被除数,B是除数。,3.1.3 数组的关系运算,MATLAB提供了6种关系运算符:(大于)、=(大于或等于)、=(恒等于)、=(不等于)。它们的含义很容易理解,需要注意的是其书写方法与数学中的不等式符号不尽相同。,当参与比较的量是两个维数相同的数组时,比较两数组相同位置的元素,并给出比较结
4、果。最终的关系运算的结果是一个维数与原矩阵相同的数组,由0或1组成。当参与比较的一个是标量,而另一个是数组时,则把标量与数组的每一个元素逐个比较,最终的关系运算的结果是一个维数与原数组相同的数组。,3.1.4 数组的逻辑运算,在MATLAB中,提供了3种逻辑运算符,分别是&(逻辑与)、|(逻辑或)和(逻辑非)。在逻辑运算中,如果为非零元素则为逻辑真,用1表示,零元素为逻辑假,用0表示。,3.1.3 数组信息的获取,下面介绍如何获取数组的信息,包括数组大小、维度、数据类型、内存占用,以及数组的元素查找和排序等。,函数isempty(A):该函数检测数组是否为空,如果为空,返回值为1,否则,返回值
5、为0。函数isscalar(A)检测数组是否为单个元素的标量。函数isvector(A)检测数组是否为行向量或列向量。函数isrow()检测数组是否为列向量。函数iscolum()检测数组是否为行向量。函数issparse()检测数组是否为稀疏矩阵。,3.1.3 数组信息的获取,下面介绍如何获取数组的信息,包括数组大小、维度、数据类型、内存占用,以及数组的元素查找和排序等。,函数isempty(A):该函数检测数组是否为空,如果为空,返回值为1,否则,返回值为0。函数isscalar(A)检测数组是否为单个元素的标量。函数isvector(A)检测数组是否为行向量或列向量。函数isrow()检
6、测数组是否为列向量。函数iscolum()检测数组是否为行向量。函数issparse()检测数组是否为稀疏矩阵。,3.1.3 数组信息的获取,在MATLAB中,最常用的检测数组大小的函数是size()和length()。,函数size()获取数组的行数和列数,函数length()获取一维数组的长度,如果是二维数组,则返回行数和列数中的较大者。,函数ndims()计算数组的维度。,3.1.3 数组信息的获取,在MATLAB中,可以采用函数whos来获取数组的大小,以及占用内存的多少。对于数组中不同的数据类型,占用的内存也不一样。,在MATLAB中,数组元素的查找采用函数find(),返回关系表达
7、式为真的元素的下标。,在MATLAB中,数组的排序使用函数sort(),该函数默认按照升序排列,返回值为排序后的数组,和原数组维数相同。,3.2 矩阵的创建,矩阵的创建有多种方式,最简单的是在命令窗口中直接输入矩阵,比较适合创建比较小的矩阵。把矩阵的元素放到方括号里面,每行的元素用空格或逗号分割,每列用分号分割。需要注意的是每行的元素数必须相等,每列的元素数也必须相等。此外,还可以通过语句和函数生成矩阵,例如函数eye()用于生成单位矩阵。另外,还可以通过M文件来建立矩阵,以及从外部数据文件中导入矩阵,例如通过函数imread()读取图片,从而得到图像数据的二维矩阵。,3.2 矩阵的创建,在M
8、ATLAB中,矩阵的元素按照列进行保存,先第一列,再第二列,直到结束。矩阵中的元素可以采用单下标获取,也可以采用双下标获取。单下标和双下标之间,可以通过MATLAB提供的函数sub2ind()和ind2sub()进行转换。在程序中,对矩阵中的元素进行赋值。如果行或者列超出矩阵的大小,则MATLAB自动扩充矩阵的大小,然后再进行赋值,扩充部分用零填充。,3.3 矩阵的基本操作,在MATLAB中,矩阵是基本的计算单元,有很多关于矩阵操作的函数。下面介绍常用的矩阵的扩展、块操作、转置、旋转和翻转,以及改变矩阵的大小等。,3.3.1 矩阵的扩展,在MATLAB中,可以通过数组的扩展,将多个小矩阵转换为
9、大的矩阵。进行数组连接的函数有函数cat()、函数vertcat()和函数horzcat()。下面对这些函数进行介绍:C=cat(DIM,A,B):该函数在DIM维度上进行矩阵A和B的连接,返回值为连接后的矩阵。C=vertcat(A,B):该函数在水平方向上连接数组A和B,相当于cat(1,A,B)。C=horzcat(A,B):该函数在垂直方向上连接数组A和B,相当于cat(2,A,B)。,3.3.2 矩阵的块操作,在MATLAB中,通过函数repmat()、函数blkdiag()和函数kron()进行矩阵的块操作,下面分别进行介绍。在MATLAB中,通过函数repmat()进行数据块的复
10、制,该函数的调用格式为:B=repmat(A,m,n):该函数产生大的矩阵B,把矩阵A当作单个元素,产生由m行和n列的矩阵A组成的大矩阵B。B=repmat(A,m):该函数产生大的矩阵B,把矩阵A当作单个元素,产生m行和m列的矩阵A组成的大矩阵B。,3.3.2 矩阵的块操作,在MATLAB中,采用函数blkdiag()将多个矩阵作为对角块,产生新的矩阵。该函数的调用格式为:Y=blkdiag(A,B):该函数将矩阵A和B作为对角块,产生新的矩阵Y。Y=blkdiag(A,B,):该函数将多个矩阵作为对角块,产生新的矩阵。,3.3.3 矩阵中元素的删除,在MATLAB中,利用空矩阵删除矩阵的元
11、素。在MATLAB中,空矩阵为一对方括号()。矩阵赋值为空矩阵的语句为X=。注意,X=与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。,3.3.4 矩阵的转置,在MATLAB中进行矩阵的转置,最简单的是采用转置操作符(),从而实现矩阵A的Hermition转置为A。如果矩阵中含有复数,则进行矩阵转置后,复数转化为共轭复数。矩阵的真正转置为A.,即使为复数,也不转换为共轭。也可以采用函数transpose(A)来实现,两者完全一致。,3.3.5 矩阵的旋转,在MATLAB中,矩阵的旋转可以采用转置的方法,也可以采用函数rot90()。该函数的调用
12、格式为:B=rot90(A):该函数将矩阵逆时针旋转90度。B=rot90(A,k):该函数将矩阵逆时针旋转90度的k倍,k的默认值为1。,3.3.6 矩阵的翻转,对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,依次类推。在MATLAB中,对矩阵进行左右翻转的函数是fliplr(A),实现矩阵的左右翻转。对矩阵进行上下翻转是将原矩阵的第一行和最后一行调换,第二行和倒数第二行调换,依次类推。在MATLAB中,对矩阵进行上下翻转的函数是flipud(A),实现矩阵的上下翻转。此外,还可以采用函数flipdim()进行矩阵的翻转,该函数的调用格式为:flipdim(A,k
13、),该函数在指定的方向k进行矩阵的翻转。当k=1时,相当于flipud(A),当时k=2,相当于fliplr(A)。,3.3.7 矩阵尺寸的改变,在矩阵总元素保持不变的前提下,在MATLAB中才用函数reshape()改变矩阵的尺寸。该函数的调用格式为:Y=reshape(X,m,n),将矩阵转换为m行n列的二维矩阵。矩阵的总元素数不变。,3.4 矩阵的基本数值运算,矩阵的基本数值计算包括矩阵的加法、减法、乘法和除法,以及矩阵元素的查找、排序、求和和求积等。下面分别进行介绍。,3.4.1 矩阵的加减运算,假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算,要求矩阵A和B的维数必须相
14、同。矩阵的加法和减法是矩阵中对应元素加减。如果和中有一个为标量,则将矩阵中的每一个元素和该标量进行加减运算。,3.4.2 矩阵的乘法,在MATLAB中,矩阵A和B的乘法为A*B,要求矩阵A的列数和矩阵B的行数必须相等。此外,矩阵A和B的点乘为A.*B,表示矩阵A和B中对应元素相乘,要求矩阵A和B具有相同的维数,返回结果和原矩阵有相同的维数。如果A和B的维数不满足要求,系统会给出出错信息,提示两个数组的维数不匹配。,3.4.3 矩阵的除法,在MATLAB中,矩阵的除法有左除和右除两种,分别用“”和“/”表示。通常矩阵的除法用来求解方程组的解。一般情况下,矩阵A和B的左除为X=AB,表示方程组A*
15、X=B的解。矩阵A和B的右除为X=B/A,表示线性方程组X*A=B的解。如果X不存在或不唯一,则系统显示警告信息。此外,还有矩阵的点除,采用“./”或“.”表示,表示两个矩阵中对应元素相除。,3.4.4 矩阵元素的查找,在MATLAB中,采用函数find()进行矩阵元素的查找。函数find()通常和关系运算和逻辑运算相结合,能够对矩阵中的元素进行查找。该函数的调用格式为:i=find(A):该函数查找矩阵中的非零元素,函数返回这些元素的单下标。i,j=find(A):该函数查找矩阵中的非零元素,函数返回这些元素的双下标和。,3.4.5 矩阵元素的排序,在MATLAB中,矩阵元素的排序使用函数s
16、ort(),该函数默认按照升序排列,返回排序后的矩阵。Y=sort(X):该函数对矩阵按照升序进行排列。当X为向量时,返回由小到大排序后的向量;当X为矩阵时,返回X中各列按照由小到大排序后的矩阵。Y=sort(X,DIM):该函数返回在给定的维数上的按照由小到大的顺序排序后的结果,当DIM=1时,按照列进行排序,当DIM=2时,按照行进行排序。Y=sort(X,DIM,MODE):该函数可以指定排序的方式。参数MODE默认值为ascend,即按照升序进行排列;当MODE为descend时,对矩阵进行降序排列。,3.4.6 矩阵元素的求和,在MATLAB中,进行矩阵中元素求和时采用函数sum()
17、和cumsum()。其调用格式为:Y=sum(X):该函数对矩阵X的元素求和,返回矩阵中各列元素的和组成的向量。Y=sum(X,DIM):该函数返回在给定的维数DIM上的元素的和,当DIM=1时,计算矩阵各列元素的和,当DIM=2时,得到矩阵各行元素的和。函数cumsum()的调用格式和函数sum()类似,不同之处是函数cumsum()的返回值为矩阵。,3.4.7 矩阵元素的求积,在MATLAB中,进行矩阵中元素求积时采用函数prod()和cumprod()。其调用格式为:Y=prod(X):该函数对矩阵的元素求积,返回矩阵X中各列元素的积组成的向量。Y=prod(X,DIM):该函数返回在给
18、定的维数上的元素的积,当DIM=1时,计算矩阵各列元素的积,当DIM=2时,得到矩阵各行元素的积。函数cumprod()的调用格式和函数prod()类似,不同之处是函数cumprod()的返回值为矩阵。,3.4.8 矩阵元素的差分,在MATLAB中,利用函数diff()计算矩阵的差分,该函数的调用格式为:Y=diff(X):该函数计算矩阵各列的差分。Y=diff(X,N):该函数计算矩阵各列的N阶差分。Y=diff(X,N,DIM):该函数计算矩阵在方向DIM上的N阶差分。当DIM=1时,计算矩阵各列元素的差分,当DIM=2时,得到矩阵各行元素的差分。,3.5 特殊矩阵的生成,在MATLAB中
19、,有许多用于创建矩阵的函数。通过这些函数可以创建二维矩阵,甚至更高维的矩阵。下面对这些产生通用特殊矩阵的函数进行介绍。,3.5.1 全零矩阵,在MATLAB中,采用函数zeros()产生全零矩阵,该函数的调用格式为: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 全1矩阵,在MATLAB中,采用函数ones()产生全1矩阵,该函数的调用格式和函数zeros()基本一致。,3.5.3 单位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数组 矩阵 分析

链接地址:https://www.31ppt.com/p-5270636.html