《MATLAB教学最新第二章矩阵与数组.ppt》由会员分享,可在线阅读,更多相关《MATLAB教学最新第二章矩阵与数组.ppt(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章矩阵与数组2.1概述在MATLAB中的基本处理单位是数值矩阵或者数值向量,统一将矩阵或者向量(一维数组,行/列向量)称之为数组。1变量与常量变量:指在程序运行过程中需要改变数值的量,每一个变量具有一个名字。命名规则常量:指在程序运行过程中不需要改变数值的量,常量亦具有名字,定义方法同变量。2数组一般,数组是有序数据的集合,在大多数编程语言中,数组的每一个成员(元素)都属于同一种数据类型,它们使用同一个数组名称和不同的下标来确定数组中的成员。对于M语言,大多数数据类型的数组每一个元素都是同一个数据类型的元素,而对于其特殊的元胞数组(第三章)则不然。3向量从编程语言的角度来看,向量其实就是一
2、维数组,但从数学的角度来看,向量就是或者的矩阵,即行向量或列向量,和都是一维数组,但从数学的角度上看,分别被称为列向量和行向量。MATLAB的基本运算单位就是矩阵和向量。4矩阵矩阵就是二维的数组。2.2创建向量从编程语言的角度,向量就是一维数组。在MATLAB中创建向量可以使用不同的方法。例21利用逐个输入元素的方法在MATLAB中创建向量。(whos/who函数,help/type函数)第二种创建向量的方法可以利用运算符“:”。例22利用冒号运算符创建向量。注:用冒号运算符创建向量时不需方括号。利用冒号运算符创建向量的基本语法如下:XJ:INC:K其中:J为向量的第一个元素,而K为向量的最后
3、一个元素,INC为向量元素递增的步长;J,INC,K之间必须用“:”间隔;若在表达式中忽略INC,则默认的递增的步长为1;INC可以为正数也可以为负数,若INC为正数,则必须JK,若INC为负数,则必须JK,否则创建的为空向量。创建向量的第三种方法是使用函数linspace 和logspaceLinspace是用来创建线性间隔向量的函数,基本语法为x=linspace(x1,x2,n)其中:x1为向量的第一个元素,x2为向量的最后一个元素,n 为向量具有的元素个数,间隔的计算公式。若在表达式中忽略n,则系统默认地将向量设置为100个元素。例24使用linspace函数创建向量。函数logspa
4、ce被用来创建对数空间的向量。基本语法为:x=logspace(x1,x2,n)其中:x1为向量的第一个元素,x2为向量的最后一个元素,n 为向量具有的元素个数,元素间隔按照对数空间的间隔设置。若在表达式中忽略n,则系统默认地将向量设置为50个元素。例25使用logspace函数创建向量。上面创建的都是行向量,即创建的都是一行n列的二维数组。如果需要创建列向量,即n行一列的数组,则需要使用分号作为元素与元素之间的间隔或者直接使用转置运算符“”。2.3创建矩阵 在编程语言中,矩阵和二维数组一般指的是同一个概念,在M语言中,矩阵的元素可以为任意的MATLAB数据类型的数值或者对象。创建矩阵的方法也
5、有多种,不仅可以直接输入元素,还可以使用MATLAB的数组编辑器编辑矩阵的元素。2.3.1直接输入法直接输入矩阵元素创建矩阵的方法适合创建元素较少的矩阵。例27用直接输入矩阵元素的方法创建矩阵。可以将矩阵的每一行或每一列看作一个向量,矩阵就是由若干向量组合而成的。2.3.2数组编辑器(上节课留下的问题)在工作空间浏览器中可以察看当前工作空间中保存的各种数据的信息,利用工作空间浏览器,在相应的变量上单击鼠标右键,通过弹出的快捷菜单可以对矩阵或者向量进行编辑,也可以删除、重命名工作空间的变量。对矩阵或者向量元素的编辑可以通过数组编辑器完成。可以在工作空间中直接双击变量,打开数组编辑器。在命令行窗口
6、中直接输入元素较多的向量或者矩阵时比较麻烦。所以,可以利用数组编辑器完成大的矩阵的编辑。具体方法如下:首先在命令行窗口中创建一个新的变量,可以为这个变量赋任意的数值,例如在MATLAB的命令行窗口中键入:A1然后通过工作空间浏览器打开数组编辑器,并在数组编辑器中加载相应的变量。在数组编辑器的工具栏中,分别修改矩阵的行数和列数,则数组编辑器将自动扩充矩阵,将未定义的元素赋初值为零,这时就可以双击任意元素来修改矩阵的元素的值了。2.4索引讨论怎样访问和操作向量或者矩阵元素的问题。就是利用矩阵或者向量元素的索引来完成相应的操作。注意:MATLAB的矩阵或者数组的索引起始值为1。(C语言的数组索引下标
7、的起始数值为0)2.4.1向量元素的访问访问向量的元素只要使用相应元素的索引即可。例28访问向量中的元素说明:访问向量元素的结果是创建新的向量。访问向量的元素直接给出元素在向量中的序号,元素的序号不仅可以是单一的整数,还可以是元素序号组成的向量。访问向量元素时,序号的数值必须介于数值1到end之间,关键字end表示向量中最后一个元素的序号。(如何单独取列或者行的技巧)?例:对向量的元素进行赋值上例中,对向量的第15个元素赋值,在赋值之前向量的第11到15个元素不存在,将自动创建这些元素。并且为没有明确赋值的元素赋默认值0。2.3.2数组编辑器(上节课留下的问题)在工作空间浏览器中可以察看当前工
8、作空间中保存的各种数据的信息,利用工作空间浏览器,在相应的变量上单击鼠标右键,通过弹出的快捷菜单可以对矩阵或者向量进行编辑,也可以删除、重命名工作空间的变量。对矩阵或者向量元素的编辑可以通过数组编辑器完成。可以在工作空间中直接双击变量,打开数组编辑器。(在A(m,n)处输入一个数值即可)2.4.2矩阵元素的访问访问矩阵的元素也需要使用矩阵元素的索引,有两种方式:1、使用矩阵元素的行列全下标形式。2、使用矩阵元素的单下标形式(二维数组是按列存储的)。例210访问矩阵的元素。MATLAB工作空间中具有一个55的矩阵,该矩阵是五阶的幻方,通过命令行获取矩阵的第二行、第四列的元素。说明:使用了MATL
9、AB函数magic创建幻方。所谓幻方,就是n阶的方阵,该方阵的行元素和列元素的和都相等(sum(1:5,:)等验证)。使用全下标的形式访问矩阵元素的方法简单、直接,同线性代数的矩阵元素的概念一一对应。矩阵元素的单下标是矩阵元素在内存中存储的序列号,一般地,同一个矩阵的元素存储在连续的内存单元中。(注意MATLAB中数组按列存储)矩阵元素的单下标与全下标之间的对应关系如下:以mn的矩阵为例,该矩阵的第i行第j列的元素全下标表示为单下标l=(j-1)m+i为了方便全下标和单下标之间的转换,MATLAB提供了两个函数分别完成两者之间的相互转化。sub2ind:根据全下标计算单下标。例子:a=1:3;
10、4:6;7:9;b=sub2ind(size(a),2,1)ind2sub:根据单下标计算全下标。c1,c2=ind2sub(size(a),7)表21使用索引访问矩阵元素的方法矩阵元素的访问说明A(i,j)访问矩阵A的第i行第j列上的元素,i和j为标量A(I,J)访问由向量(如I=1:3,J=1:end)I和J指定的矩阵A中的元素A(i,:)访问矩阵A中第i行的所有元素A(:,j)访问矩阵A中第j列的所有元素A(:)访问矩阵A中的所有元素A(l)使用单下标访问矩阵A中元素,其中l为标量A(L)访问由向量L(用)指定的矩阵A的元素,向量L中的元素为矩阵元素的单下标数值。2.5基本运算2.5.1
11、矩阵生成函数表22MATLAB的矩阵生成函数函数说明zeros产生元素全0的矩阵ones产生元素全1的矩阵eye产生单位方阵rand产生均匀分布的随机数矩阵,数值范围(0,1)(可以设定随机种子,关闭MATLAB后每次种子都一样为0.9501)randn产生均值为0,方差为1的正态分布的随机数矩阵。(数值有正有负)diag获取矩阵的对角线元素,也可生成对角矩阵?2.5.2基本矩阵运算这些规则和函数都分别和线性代数的基本概念和运算规则对应。运算命令说明A矩阵转置An(power函数)矩阵求幂A*B,a.*b矩阵相乘A/B、AB矩阵右除、矩阵左除(可用于解方程,在逆矩阵存在时等价)A+B、A-B矩
12、阵相加、减eig求矩阵的特征向量和特征值inv矩阵求逆(若逆矩阵不存在或者不是方阵时,怎么办?广义逆矩阵)det求矩阵的行列式rank求矩阵的秩例矩阵运算示例求解方程组把A的逆阵左乘以b,MATLAB就记作A,称为左除。如果原始方程的未知矩阵在左而系数矩阵在右,即X*DBX=B*inv(D)=B/D把D的逆阵右乘以B,记作/D,称之为右除。2.5.3基本数组运算1、数组转置数组转置的操作符是在矩阵转置操作符前加符号“.”。(实数情况下等价)例:数组转置操作2、数组幂数组幂运算符(单个符号自身运算)就是在矩阵运算符前加上符号“.”。3.数组乘法2.5.4基本数学函数在MATLAB中部分函数可以用
13、来进行基本的数学运算,有三角函数,指数运算函数、复数运算函数等。注意:这些函数的参数可以是矩阵、向量或者多维数组,函数在处理参数时,都是按照数组运算运算的规则来进行的。函数数目较多,不一一列出,后面用到时再作说明。2.5.5矩阵(数组)操作函数函数说明size获取矩阵的行、列数,对多维数组,获取各个维的尺寸。length获取向量长度,若输入参数为矩阵或多维数组,则返回各个维尺寸的最大值ndims获取矩阵或多维数组的维数numel获取矩阵或数组的元素个数disp显示矩阵或者字符串的内容cat合并不同的矩阵或者数组reshape保持矩阵元素的个数不变,修改矩阵的行数和列数repmat复制矩阵元素并
14、扩展矩阵fliplr交换矩阵左右对称位置上的元素flipud交换矩阵上下对称位置上的元素flipdim按照指定的方向翻转交换矩阵元素find获取矩阵或数组中非零元素的索引例:对称交换函数的使用示例。函数flipdim的第二个参数必须是大于0的整数。为1时效果同flipud。参数为2时,效果和fliplr函数一致。例创建复杂矩阵例创建复杂矩阵2.7多维数组多维数组所谓多维数组,就是全下标表示元素时,下所谓多维数组,就是全下标表示元素时,下标超过两个的数组。标超过两个的数组。如三维数组,第一维称为行,第二维称为列,如三维数组,第一维称为行,第二维称为列,第三维称为页(见前面的全下表转换的例子)第三
15、维称为页(见前面的全下表转换的例子)。每一页上的数组必须具有同样的行、列数。每一页上的数组必须具有同样的行、列数。图像处理中出现的彩色图像即为此种情况。图像处理中出现的彩色图像即为此种情况。2.7.1创建多维数组创建多维数组例:使用直接赋值的方法创建多维数组例:使用直接赋值的方法创建多维数组通过直接赋值的方法创建了三维数组,通过直接赋值的方法创建了三维数组,创建时直接对三创建时直接对三维数组第三页上的第三行第三列元素进行赋值,维数组第三页上的第三行第三列元素进行赋值,MATLAB将自动扩充数组,并将没有指定数值的数组元将自动扩充数组,并将没有指定数值的数组元素赋初值为素赋初值为0。例使用函数创建多维数组例使用函数创建多维数组像像ones、zeros等函数都可以使用这种方式创建多维数组。等函数都可以使用这种方式创建多维数组。