第二章 矩阵运算

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Matlab程序设计第二章学习要求1、掌握矩阵、数组的创建方法和他们的算术、关系及逻辑运算2、掌握矩阵的特殊操作3、掌握补充的内容第二章数值数组及其运算(矩阵运算基础)数值数组(NumericArray)和数组运算(ArrayOperations)是MATLAB的核心内容。Matlab程序设计引导数组:是指由一组实数或复数排成的长方阵列(Array)。数组运算:是指无论在数组上施加什么运算(+、-、×、÷或函数),总认为那种运算对被运算数组中的每个元素(Element)平等地实施同样的操作。MATLAB精心设计数组和数组运算的目的在于:–使计算程序简单、易读,使程序指令更接近于教科书上的数学计算公式;–提高程序的向量化程度,提高计算效率,节省计算机开销。例:时的曲线。在绘制函数10xxeyxMatlab程序设计数组、矩阵的基本运算MATLAB语言最基本的特点在于矩阵运算,绝大多数的变量和数据都可看成为矩阵变量和矩阵数据。应用MATLAB语言编程时,尤其要注意矩阵的阶数和向量的维数问题。标量可看作1×1阶的矩阵。Matlab程序设计第一节数组与矩阵的创建一维数组的创建二维数组的创建多(高)维数组的创建Matlab程序设计一维数组的创建(1)逐个元素输入法–x=[2pi/2sqrt(3)3+5i](2)冒号生成法–通过“步长”设定,生成一维“行”数组的方法。–通用格式:x=a:inc:b(3)定数线性采样法–在设定的“总点数”下,均匀采样生成一维“行”数组。–通用格式:x=linspace(a,b,n)[说明]该指令生成(1×n)数组,其作用与x=a:(b-a)/(n-1):b同。Matlab程序设计一维数组的子数组寻访和赋值例1:子数组的寻访(Address)。例2:子数组的赋值(Assign)。Matlab程序设计二维数组的创建二维数组:–是由实数或复数排列成矩形而构成的。–从数据结构上看,矩阵和二维数组没有什么区别。当二维数组带有线性变换时,该二维数组就是矩阵。直接输入法利用M文件创建和保存数组Matlab程序设计直接输入法对于较小数组,从键盘上直接输入最方便。二维数组必须有以下三个要素:–整个输入数组必须以方括号“[]”为其首尾;–数组的行与行之间必须用分号“;”或回车键【Enter】隔离;–数组元素必须由逗号“,”或空格分隔。实例Matlab程序设计利用M文件创建和保存数组对于今后经常需要调用的数组,尤其是比较大而复杂的数组,为它专门建立一个M文件是值得的。M文件的创建过程Matlab程序设计二维数组元素的标识(编号)“全下标”标识“单下标”标识“逻辑1”标识Matlab程序设计“全下标”标识“全下标”标识法:即指出是“第几行,第几列”的元素。优点:几何概念清楚,引述简单。对于二维数组来说,“全下标”标识由两个下标组成:行下标,列下标。例:矩阵A=[123456789101112131415]则A(2,3)=8,A(3,2)=12A(3,5)=15,A(1,5)=5Matlab程序设计“单下标”标识“单下标(LinearIndex)”标识:–就是“只用一个下标来指明元素在数组中的位置”。“一维编号”:–先设想把二维数组的所有列,按先左后右的次序、首尾相接排成“一维长列”;然后,自上往下对元素位置进行编号。例:矩阵A=[123456789101112131415]则A(2)=6,A(5)=7,A(8)=8,A(12)=14Matlab程序设计“单下标”与“全下标”的转换关系:–以(m×n)的二维数组A为例,若“全下标”元素位置是“第r行,第c列”,那么相应的“单下标”为l=(c-1)×m+r。MATLAB有两个指令可实现以上表示方法间的转换:–Sub2ind据全下标换算出单下标。–Ind2sub据单下标换算出全下标。Matlab程序设计“逻辑1”标识所谓“逻辑1”标识法是:通过与A同样大小的逻辑数组L中“逻辑值1”所在的位置,指出A中元素的位置。L的元素或是0或是1,它是“逻辑数组(LogicalArray)”。是一种特殊的数据类型。例Matlab程序设计二维数组的子数组寻访和赋值子数组寻访和赋值格式汇总表不同赋值方式示例Matlab程序设计子数组寻访和赋值格式汇总表子数组寻访和赋值使用说明A(r,c)它由A的“r指定行”和“c指定列”上的元素组成A(r,:)它由A的“r指定行”和“全部列”上的元素组成A(:,c)它由A的“全部行”和“c指定列”上的元素组成A(:)“单下标元素”寻访。它由A的各列按自左到右的次序,首尾相接而生成“一维长列”数组A(s)“单下标”寻访。生成“s指定的”一维数组。S若是“行数组”(或“列数组”),则A(s)就是长度相同的“行数组”(或“列数组”)A(L)“逻辑1”寻访。生成“一维”列数组:由与A同样大小的“逻辑数组”L中的“1”元素选出A的对应元素;按“单下标”次序排成长列组成。A(r,c)=Sa以“双下标”方式,对子数组A(r,c)进行赋值;Sa的“行宽、列长”必须与A(r,c)的“行宽、列长”相同A(:)=D(:)全元素赋值方式。结果:保持A的“行宽、列长”不变。条件:A、D两个数组的总元素相等,但“行宽、列长”不一定相同A(s)=Sa按“单下标”方式,对A的部分元素重新赋值。结果:保持A的“行宽、列长”不变。条件:s单下标数组的长度必须与“一维数组”Sa的长度相等,但是s、Sa不一定同是“行数组”或“列数组”Matlab程序设计多(高)维数组的定义数组的第一维称为“行(Row)”,第二维称为“列(Column)”,第三维称为“页(Page)”,第四维称为“箱(Box)”,……Matlab程序设计多(高)维数组的创建创建多维数组最常用的四种方法:–直接通过全下标元素赋值方式创建多维数组;–由若干同样大小的低维数组组合成多维数组;–由函数ones,zeros,rand,randn直接创建标准多维数组;–借助cat,repmat,reshape等函数构作多维数组。例Matlab程序设计多维数组的标识数组的维数(Dimension)和ndims指令–指令ndims(A)可直接给出数组A的维数。数组的大小(Size)和size指令–不管A数组的维数是多少,size(A)可给出A各维的大小,而指令length(A)可给出所有维中的最大长度。即length(A)等价于max(size(A))。Matlab程序设计第二节数组运算(点运算)数组运算:是指无论在数组上施加什么运算(+、-、×、÷或函数),总认为那种运算对被运算数组中的每个元素(Element)平等地实施同样的操作。当两个数组具有相同阶数时,进行加、减、乘、除的点运算,其运算是按元素对元素方式进行的。例Matlab程序设计第三节矩阵运算矩阵转置:转置符:’矩阵的乘法矩阵的相除–左除,符号为/–右除,符号为\–矩阵的乘方当矩阵为方阵时,可进行指数乘法运算。Matlab程序设计数组运算和矩阵运算的区别从外观形状和数据结构上看,二维数组和(数学中的)矩阵没有区别。但是,矩阵作为一种变换或映射算子的体现,矩阵运算有着明确而严格的数学规则;数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。虽然数组运算尚缺乏严谨的数学推理,数组运算本身仍在完善和成熟中,但它的作用和影响正随着MATLAB的发展而扩大。Matlab程序设计数组运算和矩阵运算指令对照汇总(一)数组运算矩阵运算指令含义指令含义A.’非共轭转置。相当于conj(A’)A’共轭转置A=s把标量s赋给A的每个元素s+B标量s分别与B元素之和s-B,B-s标量s分别与B的元素之差s.*A标量s分别与A的元素之积s*A标量s分别与A每个元素之积s./B,B.\ss分别被B的元素除s*inv(B)B阵的逆乘sA.^nA的每个元素自乘n次A^nA为方阵时,自乘n次A.^p对A的各元素分别求非整数幂A^p方阵A的非整数乘方p.^A以p为底,分别以A的元素为指数求幂值p^AA阵为方阵时,标量的矩阵乘方A+B对应元素相加A+B矩阵相加A-B对应元素相减A-B矩阵相减Matlab程序设计数组运算和矩阵运算指令对照汇总(二)数组运算矩阵运算指令含义指令含义A.*B对应元素相乘A*B内维相同矩阵的乘积A./BA的元素被B的对应元素除A/BA右除BB.\A(一定与上相同)B\AA左除B(一般与右除不同)exp(A)以自然数e为底,分别以A的元素为指数,求幂expm(A)A的矩阵指数函数log(A)对A的各元素求对数logm(A)A的矩阵对数函数sqrt(A)对A的各元素求平方根sqrtm(A)A的矩阵平方根函数f(A)求A各个元素的函数值。f(.)表示为上节所列各函数funm(A,’FN’)一般函数矩阵A#BA、B阵对应元素间的关系运算。#代表关系运算符A@BA、B阵对应元素间的逻辑运算。#代表逻辑运算符Matlab程序设计复数矩阵复数矩阵中的元素的虚数部分用i和j方式来输入,显示时只用i方式表示。复数矩阵可以有两种方式表示:–A=[12;34]+i*[56;78]–A=[1+5*i2+6*I;3+7*i4+8*i]其显示结果是一样的。Matlab程序设计特殊矩阵(P42)非数NaN“空”数组(空阵)全0阵单位阵全1阵随机阵其他特殊矩阵(表2-6)Matlab程序设计非数NaN按IEEE规定,0/0,∞/∞,0×∞等运算都会产生非数(NotaNumber)。该非数在MATLAB中用NaN或nan记述。根据IEEE数学规范,NaN具有以下性质:–NaN参与运算所得的结果也是NaN,即具有传递性;–非数没有大小概念,因此不能比较两个非数的大小。非数的功用:–真实记述0/0,∞/∞,0×∞运算的后果;–避免可能因0/0,∞/∞,0×∞运算而造成程序执行的中断;–在数据可视化中,用来裁剪图形。算例Matlab程序设计“空”数组(空阵)“空”数组是MATLAB为操作和表述需要而专门设计的一种数组。某维长度为0或若干维长度均为0的数组都是“空”数组。“空”数组的功用:–在没有“空”数组参与的运算时,计算结果中的“空”可以合理地解释“所得结果的含义”;–运用“空”数组对其他非空数组赋值,可以改变数组的大小,但不能改变数组的维数。算例Matlab程序设计第四节关系操作和逻辑操作在程序流控制和逻辑、模糊逻辑推理中,都需要对一类是非问题作出“是真,是假”的回答。为此MATLAB设计了关系操作、逻辑操作和一些相关函数。MATLAB的约定:–在所有关系表达式和逻辑表达式中,作为输入的任何非0数都被看作是“逻辑真”,而只有0才被认为是“逻辑假”。–所有关系表达式和逻辑表达式的计算结果,即输出,是一个由0和1组成的“逻辑数组(LogicalArray)”。在此数组中的1表示“真”,0表示“假”。–逻辑数组是一种特殊的数值数组。Matlab程序设计关系操作和逻辑操作关系操作逻辑操作关系、逻辑函数Matlab程序设计关系操作指令含义指令含义﹤小于﹥=大于等于﹤=小于等于==等于﹥大于~=不等于[说明]标量可以与任何维数组进行比较。比较在此标量与数组每个元素之间进行,因此比较结果将与被比较数组同维。当比较量中没有标量时,关系符两端进行比较的数组必须维数相同。比较在两数组相同位置上的元素间进行,因此比较结果将与被比数组同维。算例Matlab程序设计逻辑操作指令含义指令含义指令含义&与、和|或~否、非[说明]标量可以与任何维数组进行逻辑运算。运算比较在标量与数组每个元素之间进行,因此运算结果与参与运算的数组同维。当逻辑运算中没有标量时,参与运算的数组必须维数相同。运算在两数组相同位置上的元素间进行,因此运算结果数组必定和参与运算的数组同维。算例Matlab程序设计关系、逻辑函数MATLAB中能给出“逻辑数组”类型计算结

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功