matlab程序设计矩阵及其运算ppt课件.ppt

上传人:牧羊曲112 文档编号:2002422 上传时间:2022-12-30 格式:PPT 页数:98 大小:1.40MB
返回 下载 相关 举报
matlab程序设计矩阵及其运算ppt课件.ppt_第1页
第1页 / 共98页
matlab程序设计矩阵及其运算ppt课件.ppt_第2页
第2页 / 共98页
matlab程序设计矩阵及其运算ppt课件.ppt_第3页
第3页 / 共98页
matlab程序设计矩阵及其运算ppt课件.ppt_第4页
第4页 / 共98页
matlab程序设计矩阵及其运算ppt课件.ppt_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《matlab程序设计矩阵及其运算ppt课件.ppt》由会员分享,可在线阅读,更多相关《matlab程序设计矩阵及其运算ppt课件.ppt(98页珍藏版)》请在三一办公上搜索。

1、第二节 矩阵及其运算,矩阵及其运算,MATLAB语言是由早期专门用于矩阵运算的计算机语言发展而来的,其名称就是“矩阵实验室”的缩写。MATLAB语言最基本、最重要的功能就是进行实数矩阵或是复数矩阵的运算,其所有的数值功能都以矩阵为基本单元来实现。矩阵是MATLAB的重要组成部分,将对矩阵及其运算进行详细介绍。,矩阵及其运算,一矩阵的生成(1)命令窗口直接输入;(2)通过语句和函数产生矩阵;(3)在M文件中建立;(4)从外部的数据文件中导入矩阵最常用的是在命令窗口中直接输入矩阵。方式:把矩阵的元素直接排列到方括号中,每行内的元素用空格或者逗号相隔,行与行之间的内容用分号相隔。,矩阵及其运算,二

2、矩阵的基本数值运算 矩阵的基本运算通常包含有矩阵与常数的四则运算、矩阵与矩阵之间的的四则运算以及矩阵的逆运算等。本节将要对矩阵的这些运算作简要的介绍。 1 矩阵与常数的四则运算 矩阵与常数的四则运算即是指矩阵各元素与常数之间的四则运算。在矩阵与常数进行除法运算时,常数只能作为除数。例二如下:,矩阵及其运算,2 矩阵之间的四则运算 (1)矩阵与矩阵的加法(减法) 矩阵与矩阵的加法(减法)即是指矩阵各元素之间的加法(减法)运算。矩阵必须具有相同的阶数时才可以进行加法(减法)运算。例三如下:,矩阵及其运算,由上例可以看出,矩阵m3为3*3的,而m1为4*4的。因而如果求m5m3m1,系统就会报错。

3、(2)矩阵与矩阵的乘法 在MATLAB7中,矩阵的乘法使用的是运算符“*”。由数学知识,我们知道们只有当第一个矩阵(左矩阵)的列数等于第二个矩阵(右矩阵)的行数时,两个矩阵的乘积才有意义。 例四 矩阵的乘法运算。,矩阵及其运算,由上例可以看出,矩阵A为4*4阶,矩阵D为3*3阶,两者的阶数不符合乘法的要求,因此报错。 (3) 矩阵与矩阵的除法 在MATLAB7中,矩阵的除法有左除和右除两种,分别以符号“”和“/”表示。 但是从MATLAB6以来,矩阵的左除和右除的区别在逐渐减少。斜杆上面的数据除以斜杆下面的数据。 三 矩阵的特征参数运算 关于矩阵的运算,主要包括:矩阵的特征值运算、行列式运算、

4、矩阵的范数运算和矩阵的条件运算等。,矩阵及其运算,三 矩阵的特征参数运算一 矩阵的乘方运算和开方运算 在MATLAB7中,可以使用Ap来计算A的p次方,使用函数sqrtm来对矩阵进行开方运算。如果有X*X=A,则有sqrtm(A)=X。 例五 求矩阵的乘方和开方运算。,矩阵及其运算,由此可见,矩阵的开方运算和乘方运算互为逆运算。 二 矩阵的指数和对数运算 矩阵的指数运算用expm函数来实现;对数运算用logm函数来实现。两者互为逆运算。 例六 矩阵的指数和对数运算,矩阵及其运算,三 矩阵的逆运算 矩阵求逆在矩阵运算中,是非常重要的运算。矩阵可逆的充分必要条件就是矩阵的行列式不为零。在MATLA

5、B中,所有复杂的问题都化为一个函数inv。例七 求矩阵A的逆。四 矩阵的行列式运算 当矩阵的行和列相同时,可以进行矩阵的行列式操作。MATLAB提供了函数det来求行列式的值。例八 求矩阵A的及其其逆矩阵B的行列式的值。,矩阵及其运算,五 矩阵的特征值运算 在矩阵中,特征值占据着重要的角色,在MATLAB中,可以利用eig、eigs两个函数来进行矩阵的特征值运算,其使用的格式和注意事项如下:E=eig(X)命令生成由矩阵X 的特征值所组成的一个列向量。其中X必须是方阵。V,D=eig(X)命令生成两个矩阵V和D,其中V是以矩阵X的特征向量作为列向量组成的矩阵,D是由矩阵X的特征值作为主对角线元

6、素构成的对角矩阵。,矩阵及其运算,eigs函数使用方法同eig函数相同,eigs函数使用的是迭代法来求解矩阵的特征值和特征向量。例九 求矩阵A和X的特征值和特征向量。,矩阵及其运算,六 矩阵的秩 矩阵可以经过初等行或列变换,将其转换为行阶梯行矩阵,而行阶梯行矩阵所包含非零行的行数是一定的,这个确定的非零行的行数就是矩阵的秩。在MATLAB中,矩阵的秩可以通过函数rank来求得。七 矩阵的迹 矩阵的迹是指矩阵主对角线上所有元素的和,也是矩阵各特征值,矩阵的迹可以通过trace函数求得。,矩阵及其运算,四 矩阵的分解运算 MATLAB的数学处理能力之所以强大,很大一部分的原因就是它的矩阵函数功能的

7、扩展。矩阵分解在数值分析和科学研究中有着重要的地位。常用的分解方法有以下几种:三角分解(lu)、正交分解(qr)、特征值分解(eig)和奇异值分解(svd)。我们这里主要介绍特征值分解。,矩阵及其运算,1、特征值分解 由以前学过的知识,我们已经了解到在MATLAB是应用函数eig来解决的。但是应用到特征值分解的部分,需要在形式上作一定的变化,其使用的格式如下:V,Deig(X)命令生成两个矩阵V和D,其中V是以矩阵X的特征向量作为列向量组成的矩阵,D是由矩阵X的特征值作为主对角线元素构成的对角矩阵,使得满足关系式X*V=V*D。,矩阵及其运算,V,Deig(A,B)命令对矩阵A、B做广义特征值

8、分解,使得满足关系式A*V=B*V*D。例十如下:,矩阵及其运算,五 矩阵的一些特殊处理函数 1 矩阵的变维 在MATLAB中,使用reshape函数对矩阵进行变维操作,其使用格式如下:reshape(X,M,N):该命令将矩阵X的所有元素分配到一个MN的新矩阵,当矩阵X的元素不是MN时,将返回一个错误。reshape(X,M,N,P,):该命令返回由矩阵X的元素组成的MNP多维矩阵,如果MNP与X的元素数不同时,返回错误。,矩阵及其运算,reshape(X,M,N,p,):该命令与上个reshape(X,M,N,p,)命令的效果一致。例十一:,矩阵及其运算,2 矩阵的变向 矩阵的变向包括对矩

9、阵进行旋转、上下翻转、左右翻转以及对指定的维进行翻转。分别由函数rot90、 flipud、fliplr和flipdim来实现。具体用法如下:rot90(A):命令返回矩阵A按逆时钟方向旋转90度所得的矩阵。rot90(A,K):命令返回矩阵A按逆时针方向旋转90K度所得的矩阵。(K=1, 2,)。flipud(X):命令将矩阵X上下翻转。,矩阵及其运算,filplr(X):该命令将矩阵X左右翻转。filpdim(X,DIM):还命令将矩阵X的第DIM维翻转。例十二,矩阵及其运算,六 特殊矩阵的生成 在介绍了矩阵的生成以后,在介绍一些特殊的矩阵的生成。 1 零矩阵和全1矩阵的生成 零矩阵指的就

10、是矩阵中的元素全部为零,在MATLAB中,使用zeros函数来生成一个零矩阵。它的使用格式如下: A=zeros(M,N)命令中,A为生成的零矩阵,M和N分别为生成矩阵的行和列。 如果已经存在矩阵B,要生成与B维数相同的矩阵,,矩阵及其运算,可以使用命令:A=zeros(size(B)。 当要生成一个方阵时,也可以直接使用命令A=zeros(N),此时MATLAB只是生成一个N阶方阵。 而全1矩阵的生成与零矩阵的生成类似,只是使用函数ones来实现。例十三 零矩阵和全1矩阵的生成。,矩阵及其运算,2 对角矩阵的生成 对角矩阵指的是对角线上的元素为任意数值,而其他元素为零的矩阵。在MATLAB中

11、用函数diag来生成一个对角矩阵。其格式为: A=diag(V,K),该命令表示V为某个向量,K为向量V偏离主对角线的列数。K等于零时表示V为主对角线,K为大于零的数时表示V在主对角线以上,K小于零表示V在主对角线以下。,矩阵及其运算,A=diag(V),该命令的意义同A=diag(V,0)。即表示V为主对角线。例十四 对角矩阵的生成函数。,矩阵及其运算,3 随机矩阵的 生成 随机矩阵表示矩阵中的元素是随机数。在MATLAB中,使用两个函数rand和randn函数来生成多种随机矩阵。其使用格式如下: rand(N):表示生成NN阶的随机矩阵,生成矩阵的元素值在区间(0.0 1.0)之间。 ra

12、nd(M,N):表示生成MN阶随机矩阵,生成随机矩阵的元素值在区间(0.0 1.0)之间。 randn(N):表示生成NN阶的随机矩阵,生成的矩阵的元素值服从正态分布N(0,1),矩阵及其运算,randn(M,N):表示生成MN阶随机矩阵,生成的矩阵的元素值在服从正态分布N(0,1)。例十五 随机矩阵的生成,矩阵及其运算,4 魔术矩阵的生成 魔术矩阵是一个经常遇到的矩阵,它是一个方阵,特点是每一行、每一列以及每一主对角线元素之和都同。在MATLAB中,用函数magic来生成。其格式如下: magic(N):表示生成NN阶的魔术矩阵,使矩阵的每一行、每一列以及每一主对角线元素之和都同。其中N0,

13、N=2除外。例十五 魔术矩阵的生成。,矩阵及其运算,矩阵及其运算,七 稀疏型矩阵 以上已经对MATLAB中的矩阵的用法做了一些基础的介绍,当创建一个矩阵的时候系统会为矩阵中的每一个元素分配内存。但是也存在如下的问题:例如函数A=eye(10)创建的矩阵有100个元素,其主对角线上的元素都为1,别的元素都为0。即10个元素是非零,其他的90个元素是0。所以矩阵要求有100个单元,而只有10个单元是非零的,这样的例子就是一个稀疏矩阵。,矩阵及其运算,上面的例子就是一个典型的稀疏矩阵。可见,无论对存储空间还是对零元素进行代数运算所需的计算量都是很大的浪费。对于这种情况,MATLAB提供了一个更为高级

14、的存储方式,即稀疏矩阵方法,这个矩阵中,MATLAB7.0将不会存储矩阵中的0元素而只对非零元素进行操作。 1 稀疏矩阵的生成 在MATLAB中,生成稀疏矩阵用以下几个函数:speye、spones、spdiags、find、full、spalloc、sprand和sprandn等,这里主要介绍几个常用的函数。,矩阵及其运算,speye函数Speye(size(A):生成和单位矩阵A维数相同的单位稀疏矩阵。speye(M,N):生成单位稀疏矩阵,其中,其维数为M和N中较小的那个数。 speye(M) :生成M阶的单位稀疏矩阵。见例子,矩阵及其运算,sprand函数 该函数用于生成随机稀疏矩阵(

15、其元素服从0-1分布)。R=sprand(S):产生与稀疏矩阵S结构相同的稀疏矩阵R,但是它的元素都是0到1上的随机数。R=sprand(M,N,D):产生一个MN的随机稀疏矩阵R,它的非零元素的个数近似为MND,注意D的值介于0和1之间。 见例子,矩阵及其运算,2 稀疏矩阵与满矩阵的相互转换 在MATLAB中,用来将稀疏矩阵和满矩阵相互转换的函数有sparse、full和find。下面将具体介绍这三个函数的用法。sparse函数S=sparse(X):将满矩阵X转换为稀疏矩阵S。S=sparse(i,j,s,m,n,nzm):生成mn的稀疏矩阵S,向量s的元素分布在以向量i的对应值和向量j的

16、对应值为坐标的位置上。nzm为向量s的元素的个数。S=sparse(i,j,s,m,n):生成mn的稀疏矩阵S,向量s的,矩阵及其运算,元素分布在以向量i的对应值和向量j的对应值为坐标的位置上,其中,nzmax=length(s)。 S=sparse(i,j,s):生成mn的稀疏矩阵S,向量s的元素分布在以向量i的对应值和向量j的对应值为坐标的位置上,其中m=max(i),n=max(j)。 S=sparse(m,n):即是sparse(,m,n,0)的简化形式。见例题:,矩阵及其运算,full函数 在MATLAB7.0中,可以利用full函数将稀疏函数转化为满矩阵。下面将介绍函数的用法:S=

17、full(X): 将稀疏矩阵X转化为满矩阵S。如果X的本身是满矩阵,系统将不做任何操作。见例子24,矩阵及其运算,3。 find函数 I=find(X):返回矩阵X的非零元素的位置。例如:I=find(X100)返回X中大于100的元素的位置。 I,J=find(X):返回矩阵X中非零元素所在的行(I)和列(J)的具体数据。这种用法通常由于稀疏矩阵。 I,J,V=find(X):除了返回I和J以为还返回一个向量,这个向量的数值为矩阵中非零元素数值。,矩阵及其运算,3 稀疏矩阵的操作 对稀疏矩阵进行操作,主要由nnz、nonzeros、nzmax、sponse、spalloc、isspase、s

18、pyfun和spy等函数来实现。下面将选择几个主要的进行介绍:nnz函数 在MATLAB7.0中,nnz函数用于求非零元素的个数。nz=nnz(S):返回矩阵S中非零元素的个数。D=nnz(S)/prod(size(S):表示稀疏矩阵S中的非零元素的密度。,矩阵及其运算,nnz函数的用法见下例:2。 spones函数 在MATLAB中,函数spones用来将稀疏矩阵中的非零元素替换成1。 R=spones(S):生成一个与稀疏矩阵S结构相同的稀疏矩阵R,但是在矩阵S中的非零元素的位置上用元素1替换。见函数的应用例子:,矩阵及其运算,3。 Spalloc函数 在MATLAB7.0中,函数spal

19、loc用来给稀疏矩阵分配空间。 S=spalloc(m,n,nzm):生成一个所有元素都为零的mn阶稀疏矩阵,计算机利用这个空间来存储nzm个非零元素。例子如下:,矩阵及其运算,通常用法:s=spalloc(n,n,A*n)For j=1:ns(:,j)=(含有A个非零元素的稀疏向量)end,矩阵及其运算,3。 issparse 函数 在MATLAB7.0中,函数issparse用来判断矩阵是否为稀疏矩阵。 issparse(S):返回值为1说明矩阵S是一个稀疏矩阵,返回值为0时说明矩阵S不为稀疏矩阵。 见例题:,第三节 数组及其运算,数组及其运算,从外观形状和数据结构上看,二维数组和矩阵在形

20、式上有很多一致性,但是实际上它们遵循不同的运算规则。一 数组寻址和排序 1 数组寻址 由于数组是由多个元素组成的,所以,在访问数组的单个或是多个元素的时候,有必要对数组进行寻址。 例十六:,数组及其运算,上个例子是表示用户一次访问一块数据。当访问多个数据时,可以采用以下的格式。 当使用冒号时表示访问的是数组中的连续元素,当访问多个不连续的元素时,可以使用中括号进行操作。,数组及其运算,2 数组排序 对于一个任意给定的数组,其数组元素往往是没有任何规律性的,在实际使用中,往往需要对数组元素进行排序,函数sort对数组进行排序,其使用格式如下: sort(X)命令将数组X中的元素按升序排列。 当X

21、是多维元素时,sort(X)命令将X中的各列元素按升序排列。 当X是一个字符型单元数组时,sort(X)命令将X中的元素按ASCLL码进行升序排列。,数组及其运算,Y=sort(X,DIM,MODE)命令中增加了两个参数,DIM选择用于排列的维,而MODE决定了排序的方式,选择ascend将按升序排列,而选择descend将按降序排列。该命令生成的数组Y与X有相同的数组结构和型号。 当X的数据类型为复数时,将按各元素的模abs(x)进行排序。例十八 使用sort函数进行数组排序。,数组及其运算,二 数组的基本数值运算 简单的说,数组运算符由矩阵运算符前面加一个点“ . ”构成。例如:“ .*

22、”、“ . ”。1 数组的加法(减法) 数组的加法和减法与矩阵的加法减法运算相同。因此运算符号“ ”和“ ”就都可以被数组接受。2 数组的乘法(除法) 数组的乘法和除法运算在MATLAB中用符号“.*”和“./”表示。表示的是X和Y单个元素之间的对应乘积。需要注意的是,数组的乘法必须是两个数组的维数相同,这样数组的乘法才有意义。数组的除法也同时使用了正,数组及其运算,斜杠和反斜杠两种定义。在两种情况下,斜杠下的数组都被斜杠上的数组所除。和矩阵的区别在于矩阵的除法运算中不带点。见例子,数组及其运算,3. 数组的乘方 数组的乘法运算在MATLAB7.0中用符号“.”表示。数组的乘方运算有三种不同的

23、形式,下面将分别予以介绍。 两个数组之间乘方运算的情况 如例子19所示:,数组及其运算,一个数组的某个具体数值的乘方,即计算数组乘方运算时指数为标量的情况。见例子 一个数组为指数,底数为标量的情况。见例子,数组及其运算,三 数组的关系运算 在MATLAB中的关系与C语言中的关系是雷同的,都是用逻辑关系“真”、“假”来表征数学中的六种关系:小于、小于等于、大于、大于等于、等于和不等于。在MATLAB中,可以方便调用关系运算符来实现数组之间的关系运算。见例子20,数组及其运算,四 数组的逻辑运算 在各种逻辑运算中,主要有3种逻辑运算:与(&)、或(|)和非()。其中,“&”和“|”是二元操作符,可以比较两个变量或者两个数组(或矩阵);“”是一个一元操作符,对于数组或者矩阵而言,逻辑运算是针对于数组或矩阵中的每一个元素。当逻辑为真时,返回值为1,当逻辑值为假时,返回值为0。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号