ch2Matlab矩阵的生成与运算.ppt_第1页
ch2Matlab矩阵的生成与运算.ppt_第2页
ch2Matlab矩阵的生成与运算.ppt_第3页
ch2Matlab矩阵的生成与运算.ppt_第4页
ch2Matlab矩阵的生成与运算.ppt_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab矩阵的生成与运算,安徽工业大学数理学院 侯为根 ,【例1-1】表示矩阵,一、MATLAB矩阵的生成,1、直接输入法,将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。,A=1,2,3;4,5,6;7,8,0,A=1,2,3;4 5,6;7,8 0,2、利用M文件建立矩阵,对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。,【例1-3】利用M文件建立mymat矩阵。,(1) 启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵.,(2) 把输入的内容以纯文本方式存盘(设文件名为mymat.m)。,(3) 运行该M文件,就会自动建立一个名为mymat的矩阵,可供以后使用。,A=4 10 1 6 2;8 2 9 4 7; 7 5 7 1 5;0 3 4 5 4;23 13 13 0 3,3、利用MATLAB函数建立矩阵,几个产生特殊矩阵的函数:zeros、ones、 eye、rand、randn、pascal、 magic(n)、 vander(V)、 hilb(n) 、 toeplitz(x,y)、compan(P) 。,这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是:,zeros(m) 产生mm零矩阵,zeros(m,n) 产生mn零矩阵。,zeros(size(A) 产生与矩阵A同样大小的零矩阵,相关的函数有:length(A)给出行数和列数中的较大者,即length(A)=max(size(A);ndims(A)给出A的维数。,【例1-4】 分别建立33、32和与矩阵A同样大小的零矩阵。,(1) 建立一个33零矩阵:zeros(3),(2) 建立一个32零矩阵:zeros(3,2),(3) 建立与矩阵A同样大小零矩阵:zeros(size(A),【例1-5】 建立一个32的矩阵A,其元素为1到10中随机选取的整数。,A=unidrnd(10,2,3),注:命令A=unifrnd(1,10,2,3)的元素为在区间1,10中随机选取的实数。,x1 = rand(10000, 1); x2 = randn(10000, 1); subplot(2,1,1); hist(x1, 40); title(均匀分布); subplot(2,1,2); hist(x2, 40); title(高斯分布); set(findobj(gcf,type, patch),EdgeColor, w); % 改边线为白色,【例1-6】产生10000个均匀均匀与正态分布的随机数,产生随机数矩阵指令rand 和 randn,4、矩阵的合并,大矩阵可由方括号中的小矩阵建立起来。,A=1 2 3;4 5 6;7 8 0;,C=A,eye(size(A);ones(size(A),A,A=A;1 2 3;1;2;3;4;,【例1-8】使用小矩阵构造大矩阵,5、冒号表达式(序列生成方法),冒号表达式的一般格式:v=s1:s2:s3,还可以用linspace函数产生行向量:linspace(a,b,n),linspace(a,b,n)与a:(b-a)/(n-1):b等价,【例1-9】 用不同的步距生成 (0,p) 间向量,V1=0:0.2:pi,V2=0:pi,V3=pi:-1:0,V4=0:0.2:pi,pi,V6=0:pi/100:pi,V5=linspace(0,pi,100),6、矩阵变形,常用改变矩阵形状函数如下表,函数reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的二维矩阵。,【例1-5】 将4阶魔方阵形变为2行8列的矩阵,reshaps(magic(4),2,8),A = 1 4 7 10; 2 5 8 11; 3 6 9 12,【例1-6】 将矩阵形A进行各类翻转变化,左右翻转:,上下翻转:,旋转 90o:,fliplr(A),flipud(A),rot90(A),flipdim(A,1)其等价于flipud(A),flipdim(A,2)其等价于fliplr(A),二、对矩阵元素的操作,矩阵A中,位于第i行、第j列的元素可表示为A(i,j) i与j即是此元素的下标(Subscript)或索引(Index) MATLAB中所有矩阵的内部表示法都是以列为主的一维向量 A(i,j)和A(i+(j-1)*m)是完全一样的m为矩阵A的列数,1、矩阵的索引或下标,我们可以使用一维或二维下标来存取矩阵,A=4 10 1 6 2;8 2 9 4 7; 7 5 7 1 5;0 3 4 5 4;23 13 13 0 3,2 、矩阵元素,MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。例如 A(3,2)=200,也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第一列,再第二列,依次类推。,以mn矩阵A为例,矩阵元素A(i,j)的序号为:(j-1) *m+i。其相互转换关系也可利用sub2ind和ind2sub函数求得。,可以借用矩阵可赋值的属性对矩阵进行扩充。例如A为前面给出的矩阵,若将其扩充为67矩阵,可这样赋值: A(6,7)=1,3. 子矩阵提取,(1) 利用冒号表达式获得子矩阵, A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。, A(i:i+m,:)表示取A矩阵第ii+m行的全部元素;A(:,k:k+m)表示取A矩阵第kk+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列中的所有元素。, 利用一般向量和end运算符等来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。,【例2-1】子矩阵提取,提取矩阵A 全部奇数行,所有列,将矩阵A 左右翻转,提取矩阵A的 3,2,1 行、2,3,4 列构成子矩阵,将矩阵A 2,4列全变为1,B1=A(1:2:end,:),B3=A(:,end:-1:1),B2=A(3,2,1,2:4),A(:,2,4)=ones(4,2),注意:A(:)是按一维索引顺序列出A的全部元素,4、利用空矩阵删除矩阵的元素,在MATLAB中,定义 为空矩阵。给变量X赋空矩阵的语句为X= 。,【注意】X= 与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间,只是维数为0。,将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。,【例2-2】将矩阵A 2,4行删去,A(2,3,:=,A=1 2 3 4;5 6 7 8;9 10 11 12 A1=diag(A) A2=diag(A,1) A3=diag(A,-1) B1=diag(A1,1) B2=diag(A3,1),6 选取对角元素,7 选取上下)三角元阵,c1=tril(A) c2=tril(A,1) c3=tril(A,-1) d1=triu(A) d2=triu(A,1) D3=triu(A,-1),1. 数学运算,2. 逻辑运算,三、 Matlab基本运算,3. 比较运算,4. 集合运算,一、数学运算,MATLAB的基本算术运算有: (加)、(减)、*(乘)、/(右除)、(左除)、(乘方)、共轭转置()正号(+),负号(-),【注意】运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。,2. 点运算,点运算符有.*、./、.和.。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。,1. 基本算术运算,1.转置(.),幂次(.).共轭转置(),矩阵幂次() 2.正号(+),负号(-) 3.乘法(.*),元素右除(./),元素左除(.),矩阵乘法(*),矩阵右除(/),矩阵左除() 4.加法(+),减法(-) 5.冒号(:)(例如: x = 1:2:5 等),数学运算符之优先级:,同一类的运算符均具有相同的优先度(Priority),因此在计算上,是由左至右依次完成,矩阵的数学运算,矩阵的加减与一般标量(Scalar)的加减类似 相加或相减的矩阵必需具有相同的维度,A = 12 34 56 20; B = 1 3 2 4; C = A + B C1= A-B,例1: 加减法运算,矩阵与纯量可以直接进行加减,MATLAB 会直接将加减应用到每一个元素,A=1 2 3 2 1 + 5,矩阵的加减法运算,矩阵的乘法与除法,标量对矩阵的乘或除,可比照一般写法,A = 1 2 3; 4 4 2; C = A/3 B = 2*A,欲进行矩阵相乘,必需确认第一个矩阵的列数( Column Dimension) 必需等于第二个矩阵的行数(Row Dimension),例2:矩阵的乘法,A = 1; 2; B = 3, 4, 5; C = A*B,矩阵除法,若A为非奇异方阵,则X=A-1B,若A为非奇异方阵,则X=BA-1,矩阵左除:AX = B,求 X MATLAB 求解:X=AB,最小二乘解,矩阵右除:XA = B,求 X MATLAB求解:X=B/A最小二乘解,注:若A为非奇异方阵,则A-1在Matlab中为inv(A),矩阵的次方运算,矩阵的次方运算,可由“”来达成,但矩阵必需是方阵,其次方运算才有意义,A = magic(3); B = A2,例3:,复数矩阵z,其“共轭转置”矩阵(Conjugate Transpose)可表示成矩阵z,转置和共轭转置矩阵,i = sqrt(-1); % 单位虚数 z = 1+i, 2; 3, 1+2i; w = z % 共轭转置(注意z后面的单引号),例4: 矩阵共轭转置,i = sqrt(-1); % 单位虚数 z = 1+i, 2; 3, 1+2i; w = z. % 单纯转置(注意z后面的句点及单引号),想得到任何矩阵z的转置(Transpose),则可表示成矩阵矩阵z.,例5:矩阵的转置,若z为实数,则z和z.的结果是一样的,2、点运算,矩阵对应元素的直接运算,例如,A =1 2 3;4 5 6;7 8 0,B = A.A,3MATLAB数组运算函数,1. 规则:设X=(xij)mn,则 f (X)=(f (xij)mn,sin cos tan cot sec csc asin acos atan acot asec acsc,2. 常用数学函数,三角与反三角函数,exp log log10 sqrt pow2,ceil fix floor round rem sign,abs angle conj imag real,指数与对数,复变函数,取整函数,cart2sph cart2pol pol2cart sph2pol,坐标转换,注:若要对函数进行矩阵运算,方法为:funm(X,f),4 矩阵分析计算命令,向量的p-norm,一个向量a的p-norm可以定义为,p=2 时,此即为向量 a 的长度,或称欧氏长度(Euclidean Length),欲求一向量的p-norm,可使用norm指令norm(x,p),a = 3 4; x = norm(a, 1) % x = 7 y = norm(a, 2) % y = 5 z = norm(a, inf),注意:,矩阵A的p-norm可以定义如下:,例9: normMatrix,norm 指令亦可用于计算矩阵的 p-norm,A = 1 2 3; 4 5 6; 7 8 9; norm(A, 2),矩阵的秩,A = 1 2 3; 4 5 6; 7 8 9; rank(A),矩阵的行列式,A = 1 2 3; 4 5 6; 7 8 9; rank(A),B = 1 2 3; 4 5 6; 8 8 9; rank(B),矩阵的迹,A = 1 2 3; 4 5 6; 7 8 9; trace(A),矩阵的零空间,A = 1 2 3; 4 5 6; 7 8 9; null(A) null(A,r),Ax=0的解空间,正交化矩阵,s=orth(A) s = -0.2148 0.8872 -0.5206 0.2496 -0.8263 -0.3879,s=orth(B) s = -0.2074 -0.7711 -0.6019 -0.5070 -0.4415 0.7403 -0.8366 0.4587 -0.2994,A = magic(4), R = rref(A),A(:,1)+3*A(:,2)-3*A(:,3),A(1,:)+3*A(2,:)-3*A(3,:),矩阵梯形化与极大无关组,用法:R=rref(A) R,L=rref(A),R给出矩阵的梯形形式,L给出极大无关组向量所在的行或列,subspace(1,2,3,3,4,2) subspace(1,2,3,3,4,2;1,5,2) subspace(1,2,3;6,7,1,3,4,2;1,5,2),两个子空间的夹角,用法:theta=subspace(v,u),chol(A) %三角分解,A=L*LT,lu(A) %A对称,A=L*U,U,S,V=svd(A) %A=U*S*V,qr(A) %A=q*r(q正交阵,r三角阵),或 / %求解线性方程组,cond(A) %矩阵的条件数,5、 MATLAB矩阵代数运算函数,inv(A) %矩阵的逆,Cholesky分解是将一个对称的正定矩阵分解为一个上三角矩阵和其转置的乘积。,X=pascal(5) R=chol(X) C=R*R,LU分解是将原正方 (square) 矩阵分解成一个上三角形矩阵或是排列(permuted) 的上三角形矩阵和一个 下三角形矩阵,这样的分解法又称为三角分解。,命令格式为:,L,U=lu(A),L,U,P=lu(A),例如:,B=1 3 2; -2 -6 1; 2 5 7 L,U=lu(B) L*U,L,U,P=lu(B) P*L*U,QR分解法是将矩阵分解成一个正规正交矩阵与上三角形矩阵,矩阵A不必为正方矩阵。,A=1 3 2 5; -2 -6 1 6; 2 5 7 2 Q,R=qr(A) Q*Q Q*R,奇异值分解 (sigular value decomposition,SVD) 是另一种正交矩阵分解法;SVD是最可靠的分解法,但是它比QR 分解法要花上近十倍的计算时间。,U,S,V=svd(A),其中U和V代表二个相互正交矩阵,而S代表一对角矩阵。 和QR分解法相同者, 原矩阵A不必为正方矩阵。,A=1,2;3,1 S,V,D=svd(A),eig(A) %A*x=*x,V,D=eig(A) %A*V=V*D,eig(A,B) %A*x=*B*x,V,D=eig(A,B) %A*V=B*V*D,例:设A=pascal(4),B=magic(4),并使用下列函数进行计算,1.当数据为行向量或列向量时,函数对整个向量进行计算. 2.当数据为矩阵时,命令对列进行计算,即把每一列数据当成同一变量的不同观察值。 max(求最大)、min(求最小)、mean(求平均值)、sum(求和)、std(求标准差)、cumsum(求累积和)、median(求中值)、diff(差分)、sort(升序排列)、sortrows(行升序排列)等等。,数据的简单分析,观察:生成一个36的随机数矩阵,并将其各列排序、求各列的最大值与各列元素之和。 程序 rand(seed,1);A=rand(3,6), Asort=sort(A), Amax=max(A), Asum=sum(A) 结果,数据的简单分析,矩阵的比较运算, =, , =, =,=, find(), all(), any(),isempty , isnan, isfinit, islogical, isglobal, isstr 等,MATLAB的关系运算符总是以矩阵内元素对元素的方式作运算,比较两元素之间关系:若成立结论为1,否则为0,1、数量间比较,各种允许的比较关系,例1:,a=3; b=5; a5 ab a=b,关系运算符的用法:,关系运算符的用法,A=1 2 3; 4 5 6;7 8,0 b=A5 A(b),3、同维矩阵间比较;返回0-1矩阵,2、矩阵与一数比较返回0-1矩阵,例2:给出矩阵A中大与5的元素值,例3: 接上例,设B=magic(3),B=magic(3); BA,find指令 : 可传回非零元素索引,显示一维索引或下标,元素索引,index=find(A5),可以将关系运算符返回的0-1矩阵,来进行矩阵的索(Indexing)求出在A矩阵中,满足AijBij的元素,x = 0 1 2; 0 0 3 index = find(x) x(index),x(index)则是非零元素所形成的向量,要找出满足某条件的二维索引或下标,2维索引,idx1,idx2=find(x5),idx1和idx2分别是符合条件之矩阵元素的列索引(Row Index)及行索引(Column Index),例:如何找出介于7和11的元素?,x = magic(5) x(find(7x&x11),【例2.4 】产生5阶随机方阵A,其元素为10,90区间的随机整数,然后判断A的元素是否能被3整除并取出这些元素。,(1) 生成5阶随机方阵A。,A=fix(90-10+1)*rand(5)+10),(2) 判断A的元素是否可以被3整除。,P=rem(A,3)=0,(3) 取出A中能被3整除的元素。,A1=A(P),矩阵的逻辑运算,MATLAB提供了4种逻辑运算符:,逻辑变量,&(与)、|(或)、(非)和xor异或。,对 double 变量来说,非 0 表示逻辑 1,设A与B为两个命题,逻辑运算(相应元素间的运算),与运算,或运算,非运算,异或运算,A&B,A|B,A,Xor(A,B),数值为1则为True, 数值为0则为False,当所有向量元素为”真”(非零),则all指令传回1,否则为0。 当任一向量元素为”真”(非零),则any指令传回1,否则为0。,相关的指令有all及any:,a = 0 1 2 3 result1 = all(a) retult2 = any(a) result3 = any(a0),范例,all 及 any 指令也可以接受矩阵输入,此时他们会对每一个行向量进行运算,【例2.5】在0,3区间,求y=sin(x)的值:要求消去负半波,方法1: x=0:pi/100:3*pi; y=sin(x); y1=(x2*pi).*y; %消去负半波 q=(xpi/3 %按要求处理第(2)步,方法2: x=0:pi/100:3*pi;y=sin(x); y1=(y=0).*y; %消去负半波 p=sin(pi/3); y2=(y=p)*p+(yp).*y1; %按要求处理第(2)步,MATLAB 的集合运算符(Set Operators)可将向量视为集合,来进行各种集合运算,集合运算符,x = 1 2 3 4 5 6; y = 1 1 5 5 9 9 9; un= union(x,y) %并集 it= intersect(x,y) %交集 sf= setdiff(x,y) %差集 sr= setxor(x,y) %XOR 运算 sq= unique(y) %取相异元素 im= ismember(9,y) %元素9是否属于集合y,例:,多项式,1) P=a0, a1, , an-1, an表示如下n次多项式:,P(x)=a0xn+ a1xn-1+ + an-1x+ an,2) P=poly(A),若A为方阵,则P为特征多项式。,若A为一数组,则P表示以A中全部元为根多项式。,例:A=11 12 13; 14 15 16; 17 18 19,PA=poly(A) PPA=poly2str(PA,x),多项式运算,1) P=conv(p1,p2) %多项式乘积,2) q,r=deconv(p1,p2) %多项式相除,3) P=poly(A); dp=polyder(P) %多项式求导,4) pf=polyfit(X,Y,n) %多项式拟合,5) PA=polyval(P,s) %将值s代入多项式P,6) PM=polyvalm(P,s) % s是矩阵,矩阵运算,s可以是矩阵,数组运算,字符与字符串,本节介绍MATLAB用于处理字符(Characters)与字符串(Strings)的指令及相关数据型态。MATLAB 处理字符串的相关指令大部分都放在下列目录之中: MATLAB根目录toolboxmatlabstrfun 其中的”strfun”就是代表”String Functions”.若要查询与字符和字符串相关的指令,可在 MATLAB 下输入: help strfun 或是 help strings,本节简介,数个字符(Characters)可以构成一个字符串(Strings) 一个字符串是被视为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论