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

下载本文档

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

文档简介

1、Matlab矩阵的生成与运算安徽工业大学数理学院侯为根1、直接输入法将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。A=1,2,3;4,5,6;7,8,0A=1,2,3;4 5,6;7,8 0087654321A2、利用M文件建立矩阵对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。【例1-3】利用M文件建立mymat矩阵。(1) 启动有关编辑程序或MATLAB文本编辑器,并输入待建矩阵.(2) 把输入的内容以纯文本方式存盘(设文件名为)。(3) 运行该M文件,就会自动建立一个名为mymat的矩阵,可供以后使用。A=4

2、 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)给出行数和

3、列数中的较大者,即length(A)=max(size(A);ndims(A)给出A的维数。指令指令说说 明明zeros(m,n)产生阶为产生阶为 mn, 元素全为元素全为0的矩阵的矩阵ones(m,n)产生阶为产生阶为 mn, 元素全为元素全为1的矩阵的矩阵eye(n)产生阶为产生阶为 nn的单位阵的单位阵pascal(m,n)产生阶为产生阶为 mn 的的 Pascal 矩阵矩阵vander(v)产生阶为产生阶为 length(v) 的的 Vandermonde 矩阵矩阵hilb(n)产生阶为产生阶为 nn 的的 Hilbert 矩阵矩阵rand(m,n)产生产生 0,1均匀分布均匀分布mn

4、的随机数矩阵的随机数矩阵randn(m,n)产生产生=0, =1正态分布的正态分布的mn随机数矩阵随机数矩阵magic(n)产生阶为产生阶为nn的魔方阵的魔方阵unidrnd(k,m,n)产生在产生在 1到到k中随机选取的中随机选取的mn矩阵矩阵diag(v)产生以向量产生以向量v为对角元素的对角阵为对角元素的对角阵【例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中随机选取的整数

5、。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 和 rand

6、n4、矩阵的合并大矩阵可由方括号中的小矩阵建立起来。A=1 2 3;4 5 6;7 8 0; C=A,eye(size(A);ones(size(A),AA=A;1 2 3;1;2;3;4;【例1-8】使用小矩阵构造大矩阵矩阵合并函数描述cat(A,B,k)以指定的方向合并矩阵horzcat(A,B,) 以水平方向合并矩阵vertcat(A,B,) 以竖直方向合并矩阵repmat(A,m,n)将A作为块,排成m*n的大矩阵blkdiag(A,B,) 生成以A,B,.为对角块的矩阵冒号表达式的一般格式:v=s1:s2:s3还可以用linspace函数产生行向量:linspace(a,b,n)li

7、nspace(a,b,n)与与a:(b-a)/(n-1):b等价等价【例1-9】 用不同的步距生成 (0,p) 间向量V1=0:0.2:piV2=0:piV3=pi:-1:0V4=0:0.2:pi,piV6=0:pi/100:piV5=linspace(0,pi,100)函数描述reshape更改矩阵的形状rot90将矩阵旋转90度fliplr将矩阵左右翻转flipud.将矩阵上下翻转flipdim.将矩阵沿指定方向翻转函数reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的二维矩阵。【例1-5】 将4阶魔方阵形变为2行8列的矩阵reshaps(magic(4)

8、,2,8)A = 1 4 7 10; 2 5 8 11; 3 6 9 12【例1-6】 将矩阵形A进行各类翻转变化fliplr(Aflipud(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

9、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(1) 利用冒号表达式获得子矩阵 A(:,j)表示取A矩阵的第j列

10、全部元素;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表示某一维的末尾元素下标。 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、利用空矩阵删除矩阵的元素在M

11、ATLAB中,定义 为空矩阵。给变量X赋空矩阵的语句为X= 。【注意】X= 与clear X不同,clear是将X从工作空间中删除,而空矩阵那么存在于工作空间,只是维数为0。将某些元素从矩阵中删除,采用将其置为空矩阵的方法就是一种有效的方法。【例2-2】A(2,3,:=A=1 2 3 4;5 6 7 8;9 10 11 12A1=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)D

12、3=triu(A,-1)1. 数学运算2. 逻辑运算三、 Matlab根本运算3. 比较运算4. 集合运算一、数学运算MATLAB的根本算术运算有:(加)、(减)、*(乘)、/(右除)、(左除)、(乘方)、共轭转置正号+,负号-【注意】运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。2. 点运算点运算符有.*、./、.和.。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。 1. 根本算术运算1.转置.,幂次.共轭转置,矩阵幂次2.正号+,负号-3.乘法.*,元素右除./,元素左除.,矩阵乘法*,矩阵右除/,矩阵左除4.加法+,减法-5.冒号:例如: x = 1

13、:2:5 等数学运算符之优先级:同一类的运算符均具有相同的优先度(Priority),因此在计算上,是由左至右依次完成矩阵的数学运算矩阵的数学运算 矩阵的加减与一般标量Scalar的加减类似 相加或相减的矩阵必需具有相同的维度 A = 12 34 56 20;B = 1 3 2 4;C = A + BC1= A-B 例1: 加减法运算矩阵与纯量可以直接进行加减,MATLAB 会直接将加减应用到每一个元素 A=1 2 3 2 1 + 5矩阵的加减法运算矩阵的乘法与除法标量对矩阵的乘或除,可比照一般写法 A = 1 2 3; 4 4 2; C = A/3 B = 2*A欲进行矩阵相乘,必需确认第一

14、个矩阵的列数 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,求 XMATLAB 求解:X=AB最小二乘解矩阵右除:XA = B,求 XMATLAB求解:X=B/A最小二乘解注:假设A为非奇异方阵,那么A-1在Matlab中为inv(A)矩阵的次方运算矩阵的次方运算,可由“来达成,但矩阵必需是方阵,其次方运算才有意义 A = magic(3);B = A2例3:复数矩阵z,其“

15、共轭转置矩阵(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 =

16、1 2 3;4 5 6;7 8 0B = A.ABAC* .ijijijbac 087654321AAAB. 3MATLAB数组运算函数1. 规那么:设X=(xij)mn,那么 f (X)=(f (xij)mnsin cos tan cot sec csc asin acos atan acot asec acsc2. 常用数学函数三角与反三角与反三角函数三角函数exp log log10 sqrt pow2ceil fix floor round rem signabs angle conj imag real指数与对数指数与对数复变函数复变函数取整函数取整函数cart2sph cart2p

17、ol pol2cart sph2pol 坐标转换坐标转换注:假设要对函数进行矩阵运算,方法为:funm(X,f)norm求矩阵或向量的模rank求矩阵的秩det求矩阵行列式的值trace求矩阵对角元素的和null求矩阵的零空间orth正交化矩阵rref将矩阵化为梯形形式subspace两个子空间的夹角4 矩阵分析计算命令矩阵分析计算命令向量的p-norm一个向量a的p-norm可以定义为 11ip,aa/ppipp=2 时,此即为向量时,此即为向量 a 的长度,或称欧氏长度的长度,或称欧氏长度Euclidean Length 欲求一向量的p-norm,可使用norm指令norm(x,p)a =

18、 3 4;x = norm(a, 1) % x = 7y = norm(a, 2) % y = 5z = norm(a, inf) iia)norm(a,1ia)norm(a,imaxinf 注意: 矩阵A的p-norm可以定义如下:ppxpxAxAmax例9: normMatrixnorm 指令亦可用于计算矩阵的 p-normA = 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(

19、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 =s=orth(B)s =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,

20、5,2)subspace(1,2,3;6,7,1,3,4,2;1,5,2)两个子空间的夹角用法:theta=subspace(v,u)chol(A) %三角分解,A=L*LTlu(A) %A对称,A=L*U U,S,V=svd(A) %A=U*S*Vqr(A) %A=q*r(q正交阵正交阵,r三角阵三角阵或 / %求解线性方程组cond(A) %矩阵的条件数inv(A) %矩阵的逆Cholesky分解是将一个对称的正定矩阵分解为一个上三角矩阵和其转置的乘积。X=pascal(5)R=chol(X)C=R*RLU分解是将原正方 (square) 矩阵分解成一个上三角形矩阵或是排列(permute

21、d) 的上三角形矩阵和一个 下三角形矩阵,这样的分解法又称为三角分解。命令格式为:L,U=lu(A)L,U,P=lu(A)例如:B=1 3 2; -2 -6 1; 2 5 7L,U=lu(B)L*UL,U,P=lu(B)P*L*UQR分解法是将矩阵分解成一个正规正交矩阵与上三角形矩阵,矩阵A不必为正方矩阵。 A=1 3 2 5; -2 -6 1 6; 2 5 7 2Q,R=qr(A)Q*QQ*R奇异值分解 (sigular value decomposition,SVD) 是另一种正交矩阵分解法;SVD是最可靠的分解法,但是它比QR 分解法要花上近十倍的计算时间。U,S,V=svd(A),其中

22、U和V代表二个相互正交矩阵,而S代表一对角矩阵。 和QR分解法相同者, 原矩阵A不必为正方矩阵。A=1,2;3,1S,V,D=svd(A)eig(A) %A*x= *xV,D=eig(A) %A*V=V*Deig(A,B) %A*x= *B*xV,D=eig(A,B) %A*V=B*V*D例:设A=pascal(4),B=magic(4),并使用以下函数进行计算1.当数据为行向量或列向量时,函数对整个向量进行计算.2.当数据为矩阵时,命令对列进行计算,即把每一列数据当成同一变量的不同观察值。max(求最大)、min(求最小)、mean(求平均值 ) 、 s u m ( 求 和 ) 、 s t

23、d ( 求 标 准 差 ) 、cumsum(求累积和)、median(求中值)、diff(差分)、sort(升序排列)、sortrows(行升序排列)等等。数据的简单分析 观察:生成一个36的随机数矩阵,并将其各列排序、求各列的最大值与各列元素之和。 程序 rand(seed,1);A=rand(3,6), Asort=sort(A), Amax=max(A), Asum=sum(A) 结果结果数据的简单分析矩阵的比较运算, =, , 5aba=b关系运算符的用法:关系运算符的用法A=1 2 3; 4 5 6;7 8,0b=A5A(b)3、同维矩阵间比较;返回0-1矩阵2、矩阵与一数比较返回0

24、-1矩阵例2:给出矩阵A中大与5的元素值例3: 接上例,设B=magic(3)B=magic(3);BAfind指令 : 可传回非零元素索引,显示一维索引或下标 元素索引元素索引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整除

温馨提示

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

评论

0/150

提交评论