matlab向量与矩阵的运算

合集下载

MATLAB数值计算功能(向量、矩阵、数组、稀疏矩阵)

MATLAB数值计算功能(向量、矩阵、数组、稀疏矩阵)

数值计算功能向量及其运算1、向量生成(1)、直接输入向量元素用“[ ]”括起来,用空格或逗号生成行向量,用分号生成列向量a1=[11 14 17 18]a2=[11,14,17,18]a2=[11;14;17;18] %列向量用“’”可以进行向量转置a1=[11 14 17 18]a4=a1' %a1行向量,a4列向量也可以用组合方法:A=[1 2 3];B=[7 8 9];C=[A 4 ones(1,2) B](2)、等差元素向量生成冒号生成法:Vec=Vec0:n:Vecn,其中Vec表示生成的向量,Vec0表示第一个元素,n表示步长,Vecn表示最后一个元素使用linespace函数:Vec=linespace(Vec0,n,Vecn),其中Vec表示生成的向量,Vec0表示第一个元素,n表示生成向量元素个数(默认n=100),Vecn表示最后一个元素vec1=10:5:50vec2=50:-5:10vec3=linspace(10,50,6)2、向量的基本运算(1)、向量与数的四则运算向量中每个元素与数的加减乘除运算(除法运算时,向量只能作为被除数,数只能作为除数)vec1=linspace(10,50,6)vec1+100vec2=logspace(0,10,6) %对数等分向量vec2/100(2)、向量与向量之间的加减运算向量中的每个元素与另一个向量中相对应的元素的加减运算vec1=linspace(10,50,6)vec2=logspace(0,2,6)vec3=vec1+vec2(3)、点积、叉积和混合机点积:dot函数,注意向量维数的一致性x1=[11 22 33 44]x2=[1 2 3 4]a=dot(x1,x2)sum(x1.*x2) %还可以采用sum函数计算向量的点积叉积:cross函数,注意向量维数的一致性(由几何意义可知,向量维数只能为3)x1=[11 22 33 44]x2=[1 2 3 4]x3=cross(x1,x2) %报错,维数只能为3x1=[11 22 33]x2=[1 2 3]x3=cross(x1,x2)混合积:结果为一个数,先求cross,再求dota=[1 2 3]b=[2 4 3]c=[5 2 1]v=dot(a,cross(b,c))v=cross(a,dot(b,c)) %报错矩阵及其运算MATLAB的基本单位是矩阵,逗号或空格区分同一行不同元素,分号区分不同行1、矩阵的生成4种方法:在command window直接输入;通过语句和函数产生;M文件中建立;外部数据文件中导入(1)、直接输入:把矩阵元素直接排列到方括号中,每行元素用逗号或空格相隔,行与行之间用分号相隔martix=[1 1 1 1;2,2,2,2;3,3,3,3;4 4 4 4]冒号用法:A=[1 1 1;1 2 3;1 3 6]B=A(1:2,:)(2)文件导入:*.mat*.txt*.datload 文件名参数直接导入:File—Import Data2、矩阵的基本数值运算(1)、矩阵与是常数的四则运算(除法时,常数只能作为除数)matrix=[1 1 1 1;2,2,2,2;3,3,3,3;4 4 4 4]m1=100+matrixm2=100-matrixm3=100*matrixm4=matrix/2(2)、矩阵之间的四则运算加减法:矩阵各个元素之间的加减法,必须是同型矩阵matrix=[1 1 1 1;2,2,2,2;3,3,3,3;4 4 4 4]m1=20*matrixm2=m1+matrixm3=[11 22 33;1 2 3;4 5 6]m4=matrix-m1m5=m3+m1 %报错,非同型矩阵乘法:用*,左矩阵的列数需等于右矩阵的行数A=[1 1 1 1;2 2 2 2;3 3 3 3;4 4 4 4]B=[1 5 9 2;6 3 5 7;2 5 8 9;4 5 6 3]C=A*BD=[1 5 9;6 3 5;2 5 8]E=A*D % 报错,4*4矩阵不能与3*3矩阵相乘除法:左除\(AX=B则X=A\B,相当于X=inv(A)*B,但是左除稳定性好)右除/(XA=B则X=B/A,相当于X=B*inv(A))个人认为:左除相当于逆矩阵左乘,右除相当于逆矩阵右乘%解方程组XA=B的解,本列中A=[2 1 -1; 2 1 0;1 -1 1] ;B=[1 -1 3;4 3 2] A=[2 1 -1; 2 1 0;1 -1 1]B=[1 -1 3;4 3 2]X=B/A矩阵可以使用比较运算符:结果矩阵的对应位置为0或1数据变换:floorceilroundfixrem[n,d]=rat(A):A表示为两个整数阵对应元素相除的形式A=n./d3、矩阵的特征参数运算(1)、乘方与开方乘方:A^p计算A的p次方p>0:A的p次方p<0:A逆矩阵的abs(p)次方A=[1 2 3 4;4 5 6 7;4 5 6 7;8 9 10 11]B=A^10开方:若有X*X=A,则有sqrtm(A)=XA=magic(5)B=sqrtm(A)B^2 %验证正确性(2)、指数与对数指数:expm(X)=V*diag(exp(diag(D)))/V([V,D]=eig(X))对数:L=logm(A),与指数运算互逆X=rand(4)Y=expm(X)A=randn(4)B=logm(A)(3)、逆运算inv函数,充要条件:矩阵的行列式不为0A=[1 0 0 0;1 2 0 0;2 1 3 0;1 2 1 4]B=inv(A)广义逆矩阵(伪逆):pinv(A)非奇异矩阵的pinv与inv相同(4)、行列式det函数A=[1 0 0 0;1 2 0 0;2 1 3 0;1 2 1 4]B=inv(A)x=det(A)y=det(B)i=x*y(5)、特征值E=eig(X):生成由X的特征值组成的列向量[V,D]=eig(X):V是以X的特征向量为列向量的矩阵,D是由矩阵X的特征值构成的对角阵D=eigs(X):生成由X的特征值组成的列向量(eigs函数使用迭代法求解矩阵的特征值和特征向量,X必须是方阵,最好是大型稀疏矩阵)[V,D]=eig(X):V是以X的特征向量为列向量的矩阵,D是由矩阵X的特征值构成的对角阵X=magic(3)A=[1 0 0;0 0 3;0 9 0]E=eig(X)[V D]=eig(X)D=eigs(A)[V D]=eigs(A)(6)、矩阵(向量)的范数norm(X):2-范数norm(X,2):2-范数norm(X,1):1-范数norm(X,inf):无穷范数norm(X,’fro’):Frobenius范数normest(X):只能计算2-范数,并且是2-范数的估计值,用于计算norm(X)比较费时的情况X=hilb(4)norm(4)norm(X)norm(X,2)norm(X,1)norm(X,inf)norm(X,'fro')normest(X)(7)、矩阵的条件数运算矩阵的条件数是判断矩阵“病态”成都的一个度量,矩阵A的条件数越大,表明A越病态,反之,表明A越良态,Hilbert矩阵就是有名的病态矩阵cond(X):返回关于矩阵X的2-范数的条件数cond(X,P):关于矩阵X的P-范数的条件数(P为1、2、inf或’fro’)rcond(X):计算矩阵条件数的倒数值,该值越接近0就越病态,越接近1就越良态condest(X):计算关于矩阵X的1-范数的条件数的估计值M=magic(3);H=hilb(4);c1=cond(M)c2=cond(M,1)c3=rcond(M)c4=condest(M)h1=cond(H)h2=cond(H,inf)h3=rcond(H)h4=condest(H)由以上结果可以看出,魔术矩阵比较良态,Hilbert矩阵是病态的(8)、秩rank函数T=rand(6)rank(T) %6,满秩矩阵T1=[1 1 1;2 2 3]r=rank(T1) %r=2,行满秩矩阵(9)、迹trace函数,主对角线上所有元素的和,也是特征值之和M=magic(5)T=trace(M)T1=eig(M)T2=sum(T1)4、矩阵的分解运算(1)、三角分解(lu)非奇异矩阵A(n*n),如果其顺序主子式均不为0,则存在唯一的单位下三角L和上三角阵U,从而使得A=LU[L,U]=lu(X):产生一个上三角矩阵U和一个下三角矩阵L,使得X=LU,X可以不为方阵[L,U,P]=lu(X):产生一个单位下三角矩阵L、一个上三角矩阵U和交换矩阵P,PX=LUY=lu(X):如果X是满矩阵,将产生一个lapack’s的dgetrf和zgetrf的输出常式矩阵Y;如果X 是稀疏矩阵,产生的矩阵Y将包含严格的下三角矩阵L和上三角矩阵U,这两种情况下,都不会有交换矩阵PX=[6 2 1 -1;2 4 1 0;1 1 4 -1;-1 0 -1 3][L U]=lu(X)[L U P]=lu(X)Y=lu(X)(2)、正交分解(qr)对于矩阵A(n*n),如果A非奇异,则存在正交矩阵Q和上三角矩阵R,使得A满足关系式A=QR,并且当R的对角元都为正时,QR分解是唯一的[Q,R]=qr(A):产生一个与A维数相同的上三角矩阵R和一个正交矩阵Q,使得满足A=QR [Q,R,E]=qr(A):产生一个交换矩阵E、一个上三角矩阵R和正交阵Q,这三者满足AE=QR [Q,R]=qr(A,0):对矩阵A进行有选择的QR分解,当矩阵A为m*n且m>n,那么只会产生具有前n列的正交矩阵QR=qr(A):只产生矩阵R,并且满足R=chol(A’*A)A=[17 3 4;3 1 12;4 12 8][Q R]=qr(A)[Q R E]=qr(A)[Q R]=qr(A,0)R=qr(A)[Q,R]=qrdelete(A,j):去除第j列求QR分解[Q,R]=qrdelete(A,j,x):在第j列插入x后求QR分解(3)、特征值分解(eig)[V,D]=eig(X):V是以矩阵X的特征向量作为列向量构成的矩阵,D是矩阵X的特征值构成的对角阵,满足XV=VD[V,D]=eig(A,B):对矩阵A、B做广义特征值分解,使得AV=BVDA=magic(4)[V D]=eig(A)Z=A*V-V*DB=[17 3 4 2;3 1 12 6;4 12 8 7;1 2 3 4][V D]=eig(A,B)Z=A*V-B*V*D(4)、Chollesky分解(chol)当矩阵A(n*n)对称正定时,则存在唯一的对角元素为正的上三角矩阵R,使得A=R’*R,当限定R的对角元素为正的时候,该分解是唯一的当矩阵A为非正定阵时,会提示出错A=[4 -1 1;-1 4.25 2.75;1 2.75 3.5]R=chol(A)R'*R %=AA=[0 4 0;3 0 1;0 1 3]R=chol(A) %报错,A为非正定阵(5)奇异值分解(svd)[U,S,V]=svd(X):与矩阵X维数相同的对角阵S、正交矩阵U和正交矩阵V,使得满足X=USV’[U,S,V]=svd(X,0):X为M*N矩阵,当M>N时,生成的矩阵U只有前N列元素被计算出来,并且S为N*N矩阵X=[1 2 3;4 5 6;7 8 9][U S V]=svd(X)X=[1 2 3;4 5 6;7 8 9;10 11 12][U S V]=svd(X)X=[1 2 3;4 5 6;7 8 9;10 11 12ckl[U S V]=svd(X,0)Schur分解(正交阵和schur阵)[U,T]=schur(A):A=UTU’schur阵是主对角线元素为特征值的三角阵5、矩阵的一些特殊处理size(A):求矩阵A的行数、列数diag(A):求出矩阵A的对角元素repmat(A):将矩阵A作为单位,赋值成m*n矩阵,其中每个元素都是A矩阵cat(k,A,B):k=1合并后形如[A;B](A,B列数相等);k=1合并后形如[A,B](A,B行数相等)(1)、矩阵的变维reshape(X,M,N):将矩阵X的所有元素分配到一个M*N的新矩阵,当矩阵X的元素不是M*N 时,返回错误reshape(X,M,N,P,...):返回由矩阵X的元素组成的M*N*P*...多维矩阵,若果M*N*P* (X)元素数不同时,将返回错误reshape(X,[M,N,P,…]):与上一条相同A=rand(4,2)reshape(A,2,4)reshape(A,[2,2,2])用冒号变维:A=[1 2 3 4;5 6 7 8;9 10 11 12];B=ones(2,6);B(:)=A(:)(2)、矩阵的变向rot90(A):A按逆时针旋转90度rot90(A,K):A按逆时针旋转90*K度filpud(X):将X上下翻转fliplr(X):将X左右翻转flipdim(X,DIM):将X的第DIM维翻转X=[1 4;2 5;3 6]rot90(X)rot90(X,-1)flipud(X)fliplr(X)flipdim(X,2) %左右翻转6、特殊矩阵的生成(1)、零矩阵和全1矩阵的生成A=zeros(M,N):生成M*N的零矩阵A=zeros(size(B)):生成与B同型的零矩阵A=zeros(N):生成N阶零矩阵仿真全1矩阵的生成与零矩阵的生成类似,使用ones函数A=zeros(4,5)B=[1 2 3 4 5;2 3 4 5 6;9 8 7 6 5;8 7 6 5 4]A=zeros(size(B))A=zeros(5)C=ones(5,6)C=ones(3)(2)、对角矩阵的生成A=diag(V,K):V为某个向量,K为向量V偏离主对角线的列数,K=0表示V为主对角线,K>00表示V在主对角线以上,K<0表示V在主对角线以下A=diag(V):相当于K=0v=[1 9 8 1 6]diag(v,1)diag(v)(3)、随机矩阵的生成rand(N):生成N*N的随机矩阵,元素值在(0.0,1.0)之间rand(M,N)randn(N):生成N*N的随机矩阵,元素之服从正态分布N(0,1)randn(M,N)rand(5)randn(5)(4)、范德蒙德矩阵的生成A=vander(V):有A(I,j)=v(i)n-jv=[1 3 5 7 9]A=vander(v)(5)、魔术矩阵的生成它是一个方阵,方阵的每一行,每一列以及每条主对角线的元素之和都相同(2阶方阵除外)magic(N):生成N阶魔术矩阵,使得矩阵的每一行,每一列以及每条主对角线元素和相等,N>0(N=2除外)magic(2)magic(3)magic(4)(6)、Hilbert矩阵和反Hilbert矩阵的生成Hilbert矩阵的第i行、第j列的元素值为1/(i+j-1),反Hilbert矩阵是Hilbert矩阵的逆矩阵hilb(N):生成N阶的Hilbert矩阵invhilb(N):生成N阶的反Hilbert矩阵A=hilb(5)B=invhilb(5)C=A*Brandpem(n):随机排列hess(A):hess矩阵pascal(n):Pascal矩阵hankel(c):Hankel矩阵wilkinson(n):wilkinson特征值测试矩阵blkdiag(a,b,c,d):产生以输入元素为对角线元素的矩阵注:diag函数的输入参数只能有一个(可以为向量)compan(u):友矩阵hadamard(n):hadamard矩阵toeplitz(c,r):托布列兹阵数组及其运算1、数组寻址和排序(1)、数组的寻址A=randn(1,10)A(4) %访问A的第4个元素A(2:6) %访问A的第2到6个元素A(6:-2:1)A([1 3 7 4]) %访问A中1、3、7和4号元素A(4:end) %end参数表示数组的结尾(2)、数组的排序sort(X):将数组X中的元素按升序排序X是多维数组时,sort(X)命令将X中的各列元素按升序排序X是复数时,sort(X)命令将X中的各个元素的模abs(X)按升序排序X是一个字符型单元数组,sort(X)命令将X中的各列元素按ASCII码升序排序Y=sort(X,DIM,MODE):DIM选择用于排列的维,MODE决定了排序的方式(’ascend’升序,’descend’降序),该命令生成的数组Y与X是同型的X=[3 7 5;0 4 2]sort(X,1) %纵向升序排序sort(X,2) %横向升序排序sort(2)2、数组的基本数值运算(1)、加减法(与矩阵加减法相同)X=[1 4 7]Y=[2 5 8]Z=X-YV=X+Y(2)、数组的乘除法乘法用“.*”:X、Y有相同维数,X.*Y表示X和Y中单个元素之间的对应乘积除法用“./”:注意“./”和“.\”完全不同X=[10 52 96 12 56]Y=[2 26 3 4 8]Z=[10 52 96 12 56 42]Z1=X.*YZ2=X.*Z %报错,维数问题Z3=X./Y %Z3=5,2,32,3,7Z4=X.\Y %Z4=0.2,0.5,0.0313,0.3333,0.1429Z5=X.\Z %报错,维数问题(3)、数组的乘方两个数组之间的乘方X=[1 4 7]Y=[2 5 8]Z=X.^Y乘方运算时指数为标量X=[3 6 9]Z=X.^3乘方运算时底数为标量X=[4 5 6 7 8 9]Z=3.^X数组和矩阵也可以进行exp、log、sqrt等运算,是对每个对应元素进行运算3、数组的关系运算小于(<),小于等于(<=),大于(>),大于等于(>=),等于(==),不等于(~=),结果为1,则关系式为真,结果为0,则关系式为假%rem(X,n),求余函数,X为被除数,n为除数M=magic(7)N=(rem(M,3))N=(rem(M,3)<=1)N=(rem(M,3)==1)N=(rem(M,3)>=1)4、数组的逻辑运算与(&),或(|),非(~),其中与、或可以比较两个标量或者两个同阶数组(或矩阵),非运算时针对数组(或矩阵中的每一个元素),当逻辑为真则返回1,当逻辑为假则返回0M=[1 1 0;0 1 0;1 0 0]N=[1 0 1;1 1 1;0 0 0]M|NM&N~Ncat:串接flipdimfliplrflipudkron:积数组permute:重组repmatreshaperot90稀疏型矩阵1、稀疏矩阵的生成(1)、speye函数:生成单位稀疏矩阵speye(size(A))speye(M,N):维数为M和N中较小的一个speye(N)A=eye(10)speye(size(A))speye(7,6)speye(5)(2)、sprand函数:生成随机稀疏矩阵(元素服从0-1之间的随机分布)R=sprand(S):产生与稀疏矩阵S结构相同的稀疏矩阵,但它的元素都是0-1上的随机数Rsprand(M,N,D):产生一个M*N的随机稀疏矩阵R,它的非您元素的个数近似为M*N*D,注意D的值在0-1之间且不要过大v=[3 5 6 2 1 9 6 5 5 6]S=diag(v)R=sprand(S)R=sprand(10,10,0.08)(3)、sparse函数S=sparse(X):将矩阵X转化为稀疏矩阵SS=sparse(I,j,s,m,n,nzm):生成m*n的稀疏矩阵S,向量s的元素分布在以向量i的对应值和向量j的对应值为坐标的位置上,其中nzm=length(s)S=sparse(I,j,s):生成m*n的稀疏矩阵S,向量s的元素分布在以向量i的对应值和向量j的对应值为坐标的位置上,其中m=max(i),n=max(j)S=sparse(m,n):是sparse([],[],[],m,n,0)的简化形式i=[6 2 7 7 4 1 2 5]j=[1 3 2 7 2 8 3 2]s=[8 3 7 7 1 7 0 2]X=diag(s,-2)S=sparse(X)S1=sparse(i,j,s,10,10,7) %报错,nzmax=length(s)S1=sparse(i,j,s,10,10,8)S2=sparse(i,j,s,10,9) %默认nzmax=length(s)S2=sparse(i,j,s) %m=max(i),n=max(j)2、稀疏矩阵的操作(1)、nnz函数:用于求非零元素的个数nz=nnz(S):返回S总非零元素个数D=nnz(S)/prod(size(S)):表示稀疏矩阵S中非零元素的密度v=[6 2 7 7 4 1 3 5]S=diag(v,-1)nz=nnz(S)D=nnz(S)/prod(size(S))(2)、sponse函数R=sponse(S):生成一个与稀疏矩阵S结构相同的稀疏矩阵R,但是在矩阵S中的非零元素的位置上用元素1替换S=sprandsym(10,0.05)R=spones(S)(3)、spalloc函数S=spalloc(m,n,nzm):生成一个所有元素都为0的m*n阶稀疏矩阵,计算机利用这些空间来存储nzm个非零元素n=3;v=sprand(n,1,0.33) %生成3*1的稀疏列向量s=spalloc(n,n,1*n) %分配3*3的空间,最终可以存储3个非零元素for j=1:ns(:,j)=(v) %v为含有一个非零元素的稀疏列向量end(4)、full函数S=full(X):将稀疏矩阵(三元组表示)转换为满矩阵(矩阵表示)s(6,1)=8;s(4,2)=1;s(5,3)=60;s(6,2)=57;s(1,7)=25;s(3,8)=37;full(s)(5)、find函数I=find(X):返回矩阵X的非零元素的位置,如I=find(X>100) 返回X中大于100的元素的位置[I,J]=find(X):返回X中非零元素所在的行I和列J的具体数据[I,J,V]=find(X):除了返回I和J,还返回矩阵中非零元素的值V注:find(X)和find(X~=0)会产生同样的I和J,但是后者会生成一个包括所有非零元素位置的向量S(10,50)=82;S(32,14)=82;S(251,396)=25;I=find(S)[I J]=find(S)[I J V]=find(S)(6)、issparse函数issparse(S):返回值为1说明矩阵S是一个稀疏矩阵,返回值为0时说明矩阵S不为稀疏矩阵v=[6 2 7 7 4 1 3 5]S=diag(v,2)R=sparse(S)N=issparse(S) %返回0,不为稀疏矩阵Y=issparse(R) %返回1,为稀疏矩阵。

matlab原理及应用

matlab原理及应用

matlab原理及应用Matlab是一种基于矩阵运算的高级技术计算语言和环境,广泛应用于科学计算、数据分析、图像处理、信号处理、控制系统设计等领域。

本文将介绍Matlab的原理及应用。

一、Matlab的原理Matlab的原理是基于矩阵运算的。

它的核心是矩阵运算引擎,通过矩阵和向量的运算实现各种科学计算和数据处理任务。

Matlab提供了丰富的函数库和工具箱,可以进行符号计算、数值计算、线性代数运算、最优化、概率统计、图像处理等各种计算任务。

Matlab的语法简洁而灵活,可以方便地进行矩阵和向量的创建、操作和计算。

它支持面向对象的编程,并提供了丰富的图形界面和交互式开发环境,使得用户可以方便地进行数据可视化和交互式的计算。

二、Matlab的应用1. 科学计算:Matlab被广泛应用于科学计算领域,可以进行符号计算和数值计算,解决各种数学问题。

它可以进行微积分、代数、微分方程求解、符号计算、数值积分等各种科学计算任务。

2. 数据分析:Matlab提供了丰富的数据分析工具箱,可以进行数据预处理、数据可视化、统计分析、回归分析、聚类分析等各种数据分析任务。

它可以帮助用户快速处理和分析大量的数据,提取数据中的规律和模式。

3. 图像处理:Matlab提供了强大的图像处理工具箱,可以进行图像的读取、处理、分析和显示。

它可以实现图像的滤波、增强、变换、分割、特征提取等各种图像处理任务。

Matlab在医学图像处理、计算机视觉、遥感图像处理等领域有着广泛的应用。

4. 信号处理:Matlab提供了强大的信号处理工具箱,可以进行信号的采集、处理、分析和显示。

它可以实现信号的滤波、频谱分析、时频分析、信号重构等各种信号处理任务。

Matlab在通信领域、音频处理、振动分析等领域有着广泛的应用。

5. 控制系统设计:Matlab提供了强大的控制系统设计工具箱,可以进行控制系统的建模、仿真、优化和设计。

它可以实现控制系统的稳定性分析、性能评估、参数调节等各种控制系统设计任务。

MATLAB基础教程 第2章 数组、矩阵及其运算

MATLAB基础教程 第2章 数组、矩阵及其运算

写出MATLAB表达式。 解:根据MATLAB的书写规则,以上MATLAB表达式为: (1)y=1/(a*log(1-x-1)+C1) (2)f=2*log(t)*exp(t)*sqrt(pi) (3)z=sin(abs(x)+abs(y))/sqrt(cos(abs(x+y))) (4)F=z/(z-exp(T*log(8)))
命令:X(3:-1:1)
命令:X(find(X>0.5)) 命令:X([1 2 3 4 4 3 2 1])
第二章 数组、矩阵及其运算
2.1 数组(矩阵)的创建和寻访
2. 二维数组的创建和寻访
例2-3 综合练习。将教材P.31~P.44的实例按顺序在MATLAB的 command窗口中练习一遍,观察并体会其输出结果。 (注意变量的大小写要和教材上的严格一致。)
A./B
B.\A
A的元素被B的对应元素相除
(与上相同)
第二章 数组、矩阵及其运算
2.3 数组、矩阵的其他运算
1. 乘方开方运算
数组的乘方运算与power函数 格式:c=a.^k或c=power(a,k) 例如: >> g=[1 2 3;4 5 6] >>g.^2 矩阵的乘方运算与mpower函数 格式:C=A^P或C=mpower(A,P) 注意:A必须为方阵
第二章 数组、矩阵及其运算
2.2 数组、矩阵的运算
3. 矩阵的加法、减法
运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算, A和B矩阵的相应元素相加减。如果维数不相同,则MATLAB将给出
出错信息。
第二章 数组、矩阵及其运算
2.2 数组、矩阵的运算
3. 矩阵的乘法

Matlab中的向量和矩阵操作技巧

Matlab中的向量和矩阵操作技巧

Matlab中的向量和矩阵操作技巧引言Matlab是一种常用的科学计算和数据分析的工具,它在向量和矩阵操作方面有着强大的功能。

本文将介绍一些在Matlab中常用的向量和矩阵操作技巧,让读者能够更加高效地进行数据处理和分析。

1. 向量和矩阵的创建和初始化在Matlab中,创建和初始化向量和矩阵非常简单。

下面我们通过几个示例来展示不同方式下的向量和矩阵创建和初始化操作。

1.1 向量的创建和初始化向量可以通过矩阵的一列或者一行进行创建。

例如,我们可以使用下面的代码创建一个行向量:a = [1 2 3 4 5];我们也可以通过reshape函数将一个矩阵转换为向量。

例如,我们可以使用下面的代码将一个3x3的矩阵转换为一个列向量:b = reshape([1 2 3; 4 5 6; 7 8 9], 9, 1);1.2 矩阵的创建和初始化矩阵可以通过直接赋值或者使用特定的函数进行创建和初始化。

例如,我们可以使用下面的代码创建一个3x3的矩阵:A = [1 2 3; 4 5 6; 7 8 9];我们也可以使用随机数生成函数来创建和初始化矩阵。

例如,我们可以使用rand函数创建一个3x3的随机矩阵:B = rand(3, 3);2. 向量和矩阵的运算Matlab提供了丰富的向量和矩阵运算符和函数,使得向量和矩阵之间的运算非常简便。

下面我们将介绍一些常用的向量和矩阵运算。

2.1 向量和矩阵的加法和减法向量和矩阵的加法和减法可以直接使用"+"和"-"运算符。

例如,我们可以使用下面的代码实现两个向量的加法和减法:a = [1 2 3];b = [4 5 6];c = a + b;d = a - b;我们可以用相同的方法对矩阵进行加法和减法运算。

2.2 向量和矩阵的乘法向量和矩阵的乘法在Matlab中有两种方式:点乘和矩阵乘法。

点乘使用"."运算符,矩阵乘法使用"*"运算符。

MATLAB中的矩阵运算

MATLAB中的矩阵运算
上页 下页 退出
哈 工 程 大 学 数 值 计 算 软 件
●randn生成正态分布的随机阵 生成正态分布的随机阵 randn(n)生成 ×n的正态随机阵; 生成n× 的正态随机阵 的正态随机阵; 生成 randn(m,n),randn([m,n])生成 ×n的正态随机阵; 生成m× 的正态随机阵 的正态随机阵; 生成 randn(size(A))生成与矩阵 大小相同的正态随机阵。 生成与矩阵A大小相同的正态随机阵 生成与矩阵 大小相同的正态随机阵。 (5)其它基本运算 左右翻转; 上下翻转; ●fliplr(A) 将A左右翻转;●flipud(A) 将A上下翻转; 左右翻转 上下翻转 旋转90度 返回A ● rot90(A) 将 A旋转 度 。 ● tril(A)返回 A 的下三角部分 ; 旋转 返回 的下三角部分; tril(A,k)返回A第K 条对角线以下部分,K=0为主对角线, 返回A 条对角线以下部分,K=0为主对角线, 返回 K>0为主对角线以上,K<0为主对角线以下。 K>0为主对角线以上,K<0为主对角线以下。 返回A ●triu(A), triu(A,K)返回A的上三角部分,其它同上。 返回 的上三角部分,其它同上。 返回以向量v为主对角线的矩阵 ●diag(v)返回以向量 为主对角线的矩阵; 返回以向量 为主对角线的矩阵; diag(v,k) 若 v 是 n 个 元 素 的 向 量 , 则 它 返 回 一 个 大 小 为 n+abs(k)方阵,向量 位于第 条对角线上。K=0代表主对角线 方阵, 位于第k条对角线上 方阵 向量v位于第 条对角线上。 代表主对角线 为主对角线以上, 为主对角线以下。 , k>0为主对角线以上,k<0为主对角线以下。 diag(A)以向量 为主对角线以上 为主对角线以下 以向量 形式, 返回A 的主对角线元素; 对于矩阵A 形式 , 返回 A 的主对角线元素 ; diag(A,k)对于矩阵 A , 返回 对于矩阵 由第k条对角线构成的列向量 条对角线构成的列向量。 由第 条对角线构成的列向量。

第2章 MATLAB矩阵及其运算

第2章  MATLAB矩阵及其运算
C= 1 2 3 4 5 6 7 8 9 1 3 5 4 6 8 7 9 11 注意行和列数
1 4 7 1 4 7
3 5 6 8 9 11 2 3 5 6 8 9
2.2.2 矩阵的拆分
1.矩阵元素的引用方式
1)通过下标引用矩阵的元素,例如
A=[1,2,3;4,5,6;7,8,9] A(3,2)=200 注意 :如果给出的下标大于矩阵的行数和列数,则 自动扩展原有矩阵,没赋值的元素为0。
元素由1,2,3,…,n2共n2个整数组成。MATLAB提供
了求魔方矩阵的函数magic(n),其功能是生成一个 n阶魔方阵。 (2) 范得蒙矩阵 (3) 希尔伯特矩阵 (4) 托普利兹矩阵 (5) 伴随矩阵
(6) 帕斯卡矩阵
练习
1.利用clear命令清除工作空间的变量(若工作 空间没有变量,可先任意新建一个); 2.按下列方式对变量赋值 A=[pi,2*pi;4*pi,0;10*pi,0.5*pi]; B=[1+2i,3-5i,5;4,6-2i,8;7,9+3i,11]; 3.求出2题中A的正弦函数并赋给变量C,求出 2题中B的实部和虚部分别赋给变量Br和Bi。 4.将3题中的变量C, Br和Bi保存下来,保存 数据的文件名自己选取(英文名)
1.变量命名
可以改变, 重新赋值
在MATLAB 中,变量名是以字母开头,后接字母、
数字或下划线的字符序列(不能包含空格和标点
符号),最多63个字符。在MATLAB中,变量名 区分字母的大小写。关键字和函数名不能作为变 量名。
2.赋值语句 (1) 变量=表达式 (2) 表达式
其中表达式是用运算符将有关运算量连接起来的
e或E表示 10为底的 指数
e3,2e3, 1e, 1e-2, 1E2, 1E-2i, 2E-1-i, .....

MATLAB矩阵运算

MATLAB矩阵运算

MATLAB矩阵运算1. 矩阵的加减乘除和(共轭)转置(1) 矩阵的加法和减法 如果矩阵A和B有相同的维度(⾏数和列数都相等),则可以定义它们的和A+B以及它们的差A-B,得到⼀个与A和B同维度的矩阵C,其中C ij=A ij+B ij或A ij-B ij.另外Matlab还⽀持任意⼀个矩阵A与⼀个标量s相加,结果为矩阵的每⼀个元素加减标量,得到⼀个与A同维度的新的矩阵,即A+s的各个元素为A ij+s.(2) 矩阵的乘法 如果矩阵A的列数等于矩阵B的⾏数,则可以将A和B相乘,命令为A*B,得到⼀个新的矩阵C,C的⾏数等于A的⾏数,列数等于B的列数. 由于矩阵的乘法不满⾜交换律,所以⼀般A*B不等于B*A.(3) 矩阵的张量积(tensor product) 矩阵A和B的张量积A⊗B可以⽅便地⽤kron函数计算,即使⽤命令kron(A,B), 例如(4) 矩阵的除法 在MatLab中,有两个矩阵除法符号,左除\和右除/. 如果A是⼀个⾮奇异⽅阵(nonsingular square, 即满秩⽅阵),B的⾏数与A的⾏数相等,那么A\B=A-1B. 如果C的列数与A的列数相等,那么C/A=CA-1. 从另⼀个⾓度来看,X=A\B是矩阵⽅程AX=B的解,X=C/A是矩阵⽅程XA=C的解. 如果b是⼀个⾏数与A的⾏数相等的列向量,则向量x=A\b是线性⽅程组 Ax=b的解. 且在矩阵⽅程AX=B中,A可以是⼀个m×n的矩阵,如果m=n则有唯⼀解;如果m<n则有多个解,Matlab会返回⼀个基础解;如果m>n则会返回⼀个最⼩⽅阵解.(5) 矩阵的转置和共轭转置 在Matlab中,矩阵的共轭转置⽤撇号’表⽰,如果不需要对元素进⾏共轭运算,仅仅只对矩阵进⾏转置,则在撇号之前输⼊⼀个点号,即.’ . 对于实数矩阵A,A’和A.’是相同的.2. 矩阵元素操作运算 矩阵的运算既可以是如前所述的正常的整体运算,也可以是矩阵对应的元素依次进⾏标量运算,也叫数组运算,即把矩阵看做是⼆维数组. 对矩阵进⾏数组运算后得到的结果是⼀个与参与运算的矩阵维度相同的新矩阵,.这种元素间的算术运算的前提是参与运算的两个矩阵的维数要相同.对于加法和减法,元素操作运算和矩阵运算没有差别,⽽对于乘、除和幂运算符,相应的数组运算符是在⼀般的算术运算符前⾯加上⼀个点号,如+ - .* ./ .\ .^其中,A./B 是指A中的元素除以B中相应的元素,即A./B 的第i⾏第j列的元素(A./B)ij=A ij/B ij,⽽(A.\B)ij=B ij\A ij. 这些元素运算符的使⽤例⼦如下所⽰: 在Matlab中预定义的数学标准函数,如sin(x), abs(x)等都是基于对矩阵元素的运算. 如果函数f(x)是这样的⼀个函数,A是⼀个m×n的矩阵,其元素是a ij ,那么 f(A)也是⼀个m×n的矩阵,其第i⾏第j列的元素为f(a ij),例如其中pi是Matlab的预定义变量,值为π,i也是预定义变量,表⽰复数的单位.3. 常⽤的矩阵函数 矩阵函数是指参数为矩阵的函数,函数结果可能是⼀个标量值也可能是⼀个函数或者向量. Matlab中常⽤的矩阵函数包括: (1) rank(A): 求矩阵A的秩,即A中线性⽆关的⾏数或者线性⽆关的列数. (2) det(A): 求矩阵A的⾏列式值. (3) inv(A): 如果A是⼀个⾮奇异(nonsingular)矩阵,则inv(A)返回A的逆矩阵. 另外还可以⽤左除A\eye(n)或右除eye(n)/A来计算A的逆,且在Matlab中⽤左除或右除来计算逆所花的计算时间⽐⽤inv函数要少,也⽐inv具有更好的容错性(error-detection properties). (4) dot(x,y): 求同维度的向量x和y的内积/点积. 若A和B是两个具有相同维度的矩阵,则dot(A,B)是计算A和B对应列的内积,结果是⼀个⾏向量,这个⾏向量的列数等于A或B的列数. 例如 (5) cross(x,y): 计算同维度的向量x和y的叉积,结果是⼀个向量,其⽅向由右⼿定则决定,长度等于|x|*|y|sin<x,y>. 若A和B是两个具有相同维度的矩阵,则cross(A,B)是计算A和B对应列的叉积,结果是⼀个维度与A和B相等的矩阵. (6) kron(A,B): 得到矩阵A和B的张量积. (7) isequal(A,B): 如果矩阵A和B是相同的,即具有相同的维数和相同的内容,则返回1. (8) isreal(A): 判断A是否是⼀个实矩阵,如果是则返回1,否则返回0. (9) trace(A): 计算⽅阵A的迹,即对⾓线元素之和. (10) eig(A): 计算⽅阵A的特征值,结果是⼀个列向量,向量中元素的个数等于特征值的个数,即A的维度(A的⾏数或列数). (11) [U,D]=eig(A): 计算⽅阵A的特征值和特征向量,得到两个⽅阵U和D,其中D的对⾓线元素为A的特征值,U的列向量为A的特征向量(可能是未normalize的结果),例如 (12) length(V): 求向量V的长度,即V的元素数量. (14) size(A): 若A是m⾏n列的矩阵,则返回⾏向量[m,n].。

matlab矩阵运算

matlab矩阵运算
>> B=A’ >> C=A.’
矩阵操作
改变矩阵的形状: 改变矩阵的形状:reshape
reshape(A,m,n): 将矩阵元素按 列方向 进行重组 重组后得到的新矩阵的元素个数 必须与原矩阵元素个数相等! 必须与原矩阵元素个数相等!
矩阵操作
查看矩阵的大小: 查看矩阵的大小:size
size(A) 列出矩阵 A 的行数和列数 size(A,1) 返回矩阵 A 的行数 size(A,2) 返回矩阵 A 的列数
例: 解下列方程组
x + y =1 () 1 (定解方程组) x − y = 4 x + 2y + z =1 (2) (不定方程组) 3 x − 2 y + z = 4 x + 2y =1 (3) 3 x − 2 y = 4 (超定方程组) x− y =2 x + 2y =1 (4) (奇异方程组) 2 x + 4 y = 2
矩阵的 Kronecker 乘积
乘积的定义 矩阵 Kronecker 乘积的定义
设A是n×m矩阵,B是p×q矩阵,则A与B的kronecker乘积为: a11 B a12 B … a1m B a B a B … a B 22 2m C = A ⊗ B = 21 ⋯ ⋯ ⋯ ⋯ an1 B an 2 B … anm B
矩阵基本运算
矩阵的除法: 、 矩阵的除法:/、\ 右除和左除 除法
若 A 可逆方阵,则 B/A <==> A 的逆右乘 B <==> B*inv(A) A\B <==> A 的逆左乘 B <==> inv(A)*B 通常,矩阵除法可以理解为 X=A\B <==> A*X=B X=B/A <==> X*A=B 行数相等时即可进行 时即可进行左除 当 A 和 B 行数相等时即可进行左除 当 A 和 B 列数相等时即可进行右除 列数相等时即可进行右除 时即可进行
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab中常见数学函数 中常见数学函数
sin、cos、tan、cot、sec、csc、… 、 、 、 、 、 、 asin、acos、atan、acot、asec、acsc、… 、 、 、 、 、 、 exp、log、log2、log10、sqrt 、 、 、 、 abs、conj、real、imag、sign 、 、 、 、 fix、floor、ceil、round、mod、rem 、 、 、 、 、 max、min、sum、mean、sort、… 、 、 、 、 、 det、inv、eig、rank、… 、 、 、 、 …… 是自然对数, ① log 是自然对数,即以 e 为底数 同号, ② mod(x,y) 结果与 y 同号,rem(x,y) 则与 x 同号 等函数的参数是矩阵时, ③ max 等函数的参数是矩阵时,是作用在矩阵各列上
例:>> A=[1 2 3; 4 5 6]; B=[2 1; 3 4];
>> C=A*B
矩阵基本运算
矩阵的除法: 、 矩阵的除法:/、\ 右除和左除 除法
若 A 可逆方阵,则 B/A <==> A 的逆右乘 B <==> B*inv(A) A\B <==> A 的逆左乘 B <==> inv(A)*B 通常,矩阵除法可以理解为 X=A\B <==> A*X=B X=B/A <==> X*A=B
例:>> C=magic(3)
常见矩阵生成函数
zeros(m,n) 生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n) 列的零矩阵, ones(m,n) eye(m,n) diag(X) tril(A) triu(A) rand(m,n) 的矩阵, 生成一个 m 行 n 列的元素全为 1 的矩阵 m=n 时可写为 ones(n) 列矩阵, 生成一个主对角线全为 1 的 m 行 n 列矩阵 m=n 时可简写为 eye(n),即为 n 维单位矩阵 , 若 X 是矩阵,则 diag(X) 为 X 的主对角线向量 是矩阵, 是向量, 若 X 是向量,diag(X) 产生以 X 为主对角线的对角矩阵 提取一个矩阵的下三角部分 提取一个矩阵的上三角部分 产生 0~1 间均匀分布的随机矩阵 m=n 时简写为 rand(n) ~
向量与矩阵运算
向量与矩阵运算
向量与矩阵的生成
向量的生成 直接输入: 直接输入 a=[1,2,3,4] 冒号运 冒号运算符 从矩阵中抽取行或列
例:a=[1:4] ==> a=[1, 2, 3, 4]
b=[0:pi/3:pi] ==> b=[0, 1.0472, 2.0944, 3.1416] c=[6:-2:0] ==> c = [6, 4, 2, 0]
例:>> A=[1 2 3; 4 5 6]; B=[3 2 1; 6 5 4];
>> C=A.*B; D=A./B; E=A.\B; F=A.^B; 参与运算的对象必须具有相同的形状! 参与运算的对象必须具有相同的形状!
矩阵与数的运算
加减:矩阵的每个元素都与数作加减运算 加减: 数乘: 数乘:矩阵的每个元素都与数作乘法运算 矩阵除以一个数:每个元素都除以这个数 矩阵除以一个数: 点幂: 点幂:
矩阵操作
查看矩阵的大小: 查看矩阵的大小:size
size(A) 列出矩阵 A 的行数和列数 size(A,1) 返回矩阵 A 的行数 size(A,2) 返回矩阵 A 的列数
例:>> A=[1 2 3; 4 5 6]
>> size(A) >> size(A,1) >> size(A,2) length(x) length(A) 返回向量 返回向量 X 的长度 等价于 max(size(A))
randn(m,n) 产生均值为 ,方差为1的标准正态分布随机矩阵 产生均值为0,方差为 的标准正态分布随机矩阵 m=n 时简写为 randn(n) 其它特殊矩阵生成函数: 其它特殊矩阵生成函数:magic、hilb、pascal
矩阵操作
提取矩阵的部分元素: 提取矩阵的部分元素: 冒号运算符
A(:) A的所有元素 的所有元素 A(:,:) 二维矩阵 的所有元素 二维矩阵A的所有元素 A(:,k) A的第 k 列, A(k,:) A的第 k 行 的第 的第 A(k:m) A的第 k 到第 m 个元素 的第 A(:,k:m) A的第 k 到第 m 列组成的子矩阵 的第
矩阵操作ห้องสมุดไป่ตู้
矩阵的转置与共轭转置
共轭转置 .’ 转置,矩阵元素不取共轭 转置, ’ 点与单引号之间不能有空格! 点与单引号之间不能有空格!
例:>> A=[1 2;2i 3i]
>> B=A’ >> C=A.’
矩阵操作
改变矩阵的形状: 改变矩阵的形状:reshape
reshape(A,m,n): 将矩阵元素按 列方向 进行重组 重组后得到的新矩阵的元素个数 必须与原矩阵元素个数相等! 必须与原矩阵元素个数相等!
向量与矩阵运算
向量与矩阵的生成( 向量与矩阵的生成(续)
矩阵的生成 直接输入: 直接输入 A=[1, 2, 3; 4, 5, 6; 7, 8, 9] 由向量生成 通过编写m文件生成 通过编写 文件生成 由函数生成
例:>> x=[1,2,3];y=[2,3,4];
>> A=[x,y], B=[x;y]
矩阵基本运算
矩阵的加减: 矩阵的加减:对应分量进行运算
要求参与加减运算的矩阵具有 相同的维数
例:>> A=[1 2 3; 4 5 6]; B=[3 2 1; 6 5 4]
>> C=A+B; D=A-B;
矩阵的普通乘法
要求参与运算的矩阵满足线性代数中矩阵相乘的原则 要求参与运算的矩阵满足线性代数中矩阵相乘的
矩阵操作
矩阵的旋转
fliplr(A) 左右旋转 flipud(A) 上下旋转 rot90(A) 逆时针旋转 90 度; rot90(A,k) 逆时针旋转 k×90 度 ×
例:>> A=[1 2 3;4 5 6]
>> B=fliplr(A) >> C=flipud(A) >> D=rot90(A), E=rot90(A,-1)
底为矩阵,指数为标量 底为标量,指数为矩阵
数与数组的点幂
例:x=[1 2 3]; y=[4 5 6];
x.^y =[1^4,2^5,3^6]=[1,32,729] x.^2 =[1^2,2^2,3^2]=[1,4,9] 2 .^x = ? 2 .^[x;y]= ?
.^ 前面留个空格
Matlab中的所有 中的所有 标点符号必须在 英文状态下输入
矩阵的乘方
A 是方阵,p 是正整数 A^p 表示 A 的 p 次幂,即 p 个 A 相乘。
若 A 是方阵,p 不是正整数 A^p 的计算涉及到 A 的特征值分解,即若 的特征值分解, A = V*D*V-1 则 A^p=V*(D.^p)/V
矩阵的数组运算
数组运算: 数组运算:对应元素进行运算
数组运算包括:点乘、点除、 数组运算包括:点乘、点除、点幂 相应的数组运算符为: 相应的数组运算符为: “.* ” , “./ ” , “.\ ” 和 “ .^ ” 点与算术运算符之间不能有空格!
相关文档
最新文档