《第4章MATLAB7110的矩阵和数组.ppt》由会员分享,可在线阅读,更多相关《第4章MATLAB7110的矩阵和数组.ppt(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、技术凝聚实力技术凝聚实力专业创新出版专业创新出版第4章MATLAB7110的矩阵和数组 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.1 创建矩阵l矩阵是所有MATLAB运算的基础,用户如果要实现科学运算、程序设计、特性绘制等目标,必须要确定矩阵的类型,并建立矩阵。在MATLAB中创建一个矩阵可以有两种常用的方法,一是直接输入矩阵元素,另一种是调用矩阵创建函数。技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.
2、1.1 输入元素创建简单矩阵l对于简单的矩阵,特别是元素数目不多的矩阵,逐个输入矩阵元素是最常用、最便捷的矩阵创建方法,其遵循以下3条原则:l运用矩阵构造符包含所创建矩阵的所有元素;l使用逗号“,”或者空格“”分隔矩阵的列;l使用分号“;”或者回车键分隔矩阵的行。技术凝聚实力技术凝聚实力专业创新出版专业创新出版 4.1.2 调用函数创建特殊矩阵lMATLAB7.0还提供了若干特殊矩阵的生成函数,在调用函数时,用户根据需要设置参数,就可以方便地得到需要的矩阵,常用的特殊矩阵函数列表如下。MATLAB特殊矩阵创建函数函 数生成矩阵形式ones全1元素矩阵zeros全0元素矩阵eye单位矩阵,即主对
3、角线元素为1,其余元素全为0rand均匀分布随机矩阵randn正态分布随机矩阵magic魔术矩阵diag对角矩阵compan伴随矩阵gallery测试矩阵hadamardHadamard矩阵hilbHilbert矩阵invhilbHilbert矩阵转置rosser经典对称特征值测试矩阵toeplitzToeplitz矩阵pascalPascal矩阵vanderVandermonde矩阵wilkinsonWilkinson特征值测试矩阵技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.2 拼接矩阵l矩阵的拼接是指两个或者两个以上的单个矩阵,按一定的方向进行连接,生成新的矩阵。从本质上说,矩阵的
4、拼接就是一种创建矩阵的特殊方法,区别在于基础元素是原始矩阵,目标是新的合并矩阵。本节主要介绍矩阵拼接的两种方法,一是利用矩阵生成符,另一种是调用矩阵拼接函数。技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.2.1 基本拼接l通常,矩阵的拼接有按照水平方向拼接和按照垂直方向拼接两种。例如,对矩阵A和B进行拼接,拼接表达式分别如下所示。l水平方向拼接:C=A B或C=A,B。l垂直方向拼接:C=A;B。l【例4.3】把的魔术矩阵和的单位矩阵在水平方向上拼接成为一个的新矩阵,垂直方向上拼接成为一个的新矩阵。本例目的:熟悉矩阵的拼接方法和不同方向上拼接的区别。技术凝聚实力技术凝聚实力专业创新出版专
5、业创新出版4.2.2 拼接函数l除了使用矩阵拼接符,还可以使用MATLAB7.0提供的矩阵拼接函数执行,具体的函数和功能列表如表所示。前三个函数的对应功能已经在前面的例子中做过示范,这里不再赘述。下面主要针对后两个指令举例说明其用法。MATLAB的矩阵拼接函数0函 数功 能cat指定维拼接horzcat水平方向拼接vertcat垂直方向拼接repmat通过对现有矩阵复制和粘贴操作生成新矩阵blkdiag现有矩阵构造对角矩阵技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.3 改变矩阵尺寸l矩阵的尺寸又称矩阵的大小。在MATLAB7.0中,用户可以方便地对矩阵的尺寸进行扩大和缩小,扩大矩阵的主
6、要方式是拼接和添加元素,缩小矩阵的方式是删除矩阵中的某行或某列元素。技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.3.1 扩大矩阵的尺寸l在MATLAB7.0中,用户可以通过两种方式扩大矩阵的尺寸,一是进行矩阵拼接,二是在矩阵的尺寸之外添加元素。前者本书4.2节已经作了介绍,本小节主要介绍后一种方法。技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.3.2 缩小矩阵的尺寸l如果要让矩阵“变小”,也就是删除矩阵的某行或某列,只要把目标行或列赋予一个空矩阵即可。技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.4 改变矩阵形状l矩阵的形状和矩阵的尺寸一样是可以改变的,MATLAB为用户提
7、供了若干函数,用来改变矩阵的形状,函数名称及功能如表所示。MATLAB矩阵形状操作函数函 数功 能reshape重新排列矩阵rot90矩阵逆时针旋转90fliplr垂直方向为轴翻转矩阵flipud水平方向为轴翻转矩阵flipdim指定方向为轴翻转矩阵技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.5 向量、标量与空矩阵lMATLAB中的矩阵多数是以矩形的形式显示,但有时常出现特殊形式的矩阵,即由于和的取值特殊,矩阵常常表现出非矩形的特征。本节主要介绍三种特殊的矩阵结构:向量(vector)、标量(scalar)和空矩阵(empty matrix)。技术凝聚实力技术凝聚实力专业创新出版专业创
8、新出版4.5.1 向量l向量是行数或列数为1的特殊矩阵,其一般显示为1n或n1的数列。用户在构造新矩阵,以及对矩阵进行访问、修改等操作时,常用到向量数列。MATLAB提供了生成等差向量数列的符号冒号,例如,(p:q)生成从p到q,差为1的递增向量数列。例如,创建101的等差递减数列,在命令窗口输入代码及执行结果如下。l v=(10:-1:1)lv=l 10 9 8 7 6 5 4 3 2 1 技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.5.2 标量l标量是行列数都是1的特殊矩阵,任意以的矩阵形式表示的单个实数或复数,称之为标量。如下的实数x就是一个标量。实数5的维数为2,即行和列;且各
9、维数值都为1。l x=5lx=l 5l ndims(x)%查看x的维数lans=l 2l size(x)%查看行、列维的数值lans=l 1 1 技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.5.3 空矩阵lMATLAB中为了表示和操作的方便,引入了“空矩阵”的概念,其含义是至少一维的数值为0的矩阵。空矩阵可以是、和(n为正整数)。空矩阵不是全0矩阵,读者可以通过如下指令建立一个空矩阵a,再利用whos指令查看其名称、大小和数据类型。l ala=l l whosl Name Size Bytes Classl a 0 x0 0 double array 技术凝聚实力技术凝聚实力专业创新出
10、版专业创新出版4.6 矩阵寻访l矩阵作为存储各种数据的基本单位,是若干相关元素的有序集合,为方便用户访问矩阵中的一个或者多个元素,MATLAB引入了元素下标的概念。本节主要介绍不同的元素下标表示方法以及如何利用矩阵的下标访问矩阵中的单元素和多元素。技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.6.1 下标转换lMATLAB7.0中,矩阵的下标表示与常用的数学习惯相同,使用“双下标”(Row-Column Index),即分别表示行和列,矩阵中的元素都有对应的“第几行,第几列”。这种表示方法简单直观,几何概念比较清晰。如下代码所示,矩阵m中的元素8、5、2分别可以表示为技术凝聚实力技术凝聚
11、实力专业创新出版专业创新出版4.6.2 访问单元素l访问一个矩阵中的单个元素,必须指定两个参数,即其所在行数和列数。例如,访问矩阵A中的任何一个单元素,代码如下所示,row和column分别代表行数和列数。lA(row,column)技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.6.3 访问多元素l访问矩阵的多元素,包括访问某一行或某一列的若干元素,访问整行、整列元素,访问若干行或若干列的元素以及访问矩阵所有元素等。首先,介绍在访问矩阵多元素时常用的一个符号冒号。本书之前的章节介绍过,冒号可以表示等差步进,从而帮助生成向量矩阵。其实冒号还有另外一个重要的功能,即表示矩阵中的多个元素。例如
12、A(1:k,n)表示矩阵A中第n列的1k的元素,B(m,:)表示矩阵B中第m行的所有元素,在对矩阵中某部分元素进行访问和赋值时,此种表示方法显得十分方便。技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.7 获取矩阵信息l矩阵的信息主要包括以下三点:l矩阵元素的数据类型;l矩阵的数据结构;l矩阵的大小等。l本节重点介绍通过调用函数来获取矩阵各种信息的方法。技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.7.1 获取矩阵元素的数据类型lMATLAB提供了获得矩阵元素数据类型的若干函数,如表所示。MATLAB矩阵元素数据类型判断函数函 数功 能isa判断输入数据是否为某中指定数据类型isce
13、ll判断输入数据是否为元胞数组类型iscellstr判断输入数据是否为元胞字符串类型ischar判断输入数据是否为字符类型isfloat判断输入数据是否为浮点数类型isinteger判断输入数据是否为整数类型islogical判断输入数据是否为逻辑类型isnumeric判断输入数据是否为数值类型isreal判断输入数据是否为实数类型isstruct判断输入数据是否为结构体类型技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.7.2 获取矩阵的数据结构lMATLAB不但提供了判断矩阵内元素数据类型的函数,还提供了判断矩阵本身数据结构的若干函数,如表所示。MATLAB矩阵元素数据结构判断函数函
14、数功 能isempty判断矩阵是否为空矩阵isscalar判断矩阵是否为标量isvector判断矩阵是否为向量issparse判断矩阵是否为稀疏矩阵技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.7.3 获取矩阵的尺寸信息l矩阵的尺寸信息,包括矩阵最长维的大小、矩阵维数、元素个数和指定维的长度等。MATLAB提供给用户4个函数来获取以上信息,矩阵尺寸信息查询函数函 数功 能length得到矩阵最长维长度ndims得到矩阵的维数numel得到矩阵的元素个数size得到矩阵指定维的长度技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.8 高维数组l在MATLAB中,维数超过二维的数组称为高维
15、数组。之前的章节介绍过,矩阵可以理解成二维的数组,本书所讨论的数组大多数情况下都是二维的数组,即矩阵,对于矩阵,“行”和“列”分别是矩阵的第一维和第二维;而对于高维数组,只有第三维具有统一的名称,称为“页”(page),更高维称呼至今仍未统一。在进行高维数组操作的时候,首先要有一定的几何空间意识,如果说对于二维的矩阵的处理是着眼于平面“矩形”的话,那么对于三维数组的理解就要面对一个立体的、截面是矩形的“长方体”。l尽管高维数组可以是任意维数,但为了方便讲解的直观和读者理解的方便,本节主要以三维数组为例,一个三维的数组由行、列和页三维组成,每一页都是一个由行和列来构成的二维的矩阵,正如二维数组所
16、有的列必须包含相同的行一样,三维数组的所有的页也要包含相同的行和列,且所有矩阵满足的操作都可以运用于高维数组上。本节主要介绍高维数组的生成和基本操作。技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.8.1 高维数组的创建l创建高维数组的常用方法包括以下两种。l调用函数直接创建标准高维数组。l下标直接索引赋值生成高维数组,即给数组中某一位置的元素或者某些位置的元素赋值,以此生成高维数组。技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.8.2 访问高维数组的信息l对于高维数组,同样可以运用适用于一般矩阵的信息获取函数(参见4.7)来访问其信息。例如,以上一小节中调用reshape函数建立的
17、新数组为例,访问其维数、大小,最长维大小和元素个数等信息,具体代码如下。l ndims(P)%查询数组的维度lans=l 3l size(P)%查询数组的大小lans=l 2 2 4l length(P)%查询数组的最长维大小lans=l 4l numel(P)%查询数组的元素个数lans=l 16 技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.8.3 高维数组操作函数lMATLAB提供了若干函数,专门用于对于高维数组的操作。本小节主要介绍下列函数:squeeze、flipdim、shiftdim和permute。lsqueeze函数功能是删除高维数组中的“单一维”,即大小为1的维,实现降维操作。例如,对于一个的数组进行降维操作,使三维数组变为二维数组。技术凝聚实力技术凝聚实力专业创新出版专业创新出版4.9 小结l本章主要介绍MATLAB7.0中的基本数据结构矩阵和数组,读者应该熟练掌握的内容如下。l矩阵的创建方法l矩阵拼接l矩阵尺寸大小的改变l向量、标量和空矩阵l矩阵下标转换l矩阵元素的访问l矩阵信息的获取l高维数组