1.1 矩阵的表示 1.2 矩阵运算 1.2.14 特殊运算 1.矩阵对角线元素的抽取 函数 diag 格式 X = diag(v,k) %以向量v的元素作为矩阵X的第k条对角线元素,当k=0时,v为X的主对角线;当k>0时,v为上方第k条对角线;当k<0时,v为下方第k条对角线。
X = diag(v) %以v为主对角线元素,其余元素为0构成X。 v = diag(X,k) %抽取X的第k条对角线元素构成向量v。
k=0:抽取主对角线元素;k>0:抽取上方第k条对角线元素;k<0抽取下方第k条对角线元素。 v = diag(X) %抽取主对角线元素构成向量v。
2.上三角阵和下三角阵的抽取 函数 tril %取下三角部分 格式 L = tril(X) %抽取X的主对角线的下三角部分构成矩阵L L = tril(X,k) %抽取X的第k条对角线的下三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。 函数 triu %取上三角部分 格式 U = triu(X) %抽取X的主对角线的上三角部分构成矩阵U U = triu(X,k) %抽取X的第k条对角线的上三角部分;k=0为主对角线;k>0为主对角线以上;k<0为主对角线以下。
3.矩阵的变维 矩阵的变维有两种方法,即用“:”和函数“reshape”,前者主要针对2个已知维数矩阵之间的变维操作;而后者是对于一个矩阵的操作。 (1)“:”变维 (2)Reshape函数变维 格式 B = reshape(A,m,n) %返回以矩阵A的元素构成的m*n矩阵B B = reshape(A,m,n,p,…) %将矩阵A变维为m*n*p*… B = reshape(A,[m n p…]) %同上 B = reshape(A,siz) %由siz决定变维的大小,元素个数与A中元素个数 相同。
(5)复制和平铺矩阵 函数 repmat 格式 B = repmat(A,m,n) %将矩阵A复制m*n块,即B由m*n块A平铺而成。 B = repmat(A,[m n]) %与上面一致 B = repmat(A,[m n p…]) %B由m*n*p*…个A块平铺而成 repmat(A,m,n) %当A是一个数a时,该命令产生一个全由a组成的m*n矩阵。
1.3 矩阵分解 1.3.1 Cholesky分解 函数 chol 格式 R = chol(X) %如果X为n阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足R'*R = X;若X非正定,则产生错误信息。 [R,p] = chol(X) %不产生任何错误信息,若X为正定阵,则p=0,R与上相同;若X非正定,则p为正整数,R是有序的上三角阵。
1.3.2 LU分解 矩阵的三角分解又称LU分解,它的目的是将一个矩阵分解成一个下三角矩阵L和一个上三角矩阵U的乘积,即A=LU。 函数 lu 格式 [L,U] = lu(X) %U为上三角阵,L为下三角阵或其变换形式,满足LU=X。
[L,U,P] = lu(X) %U为上三角阵,L为下三角阵,P为单位矩阵的行变换矩阵,满足LU=PX。 1.3.3 QR分解 将矩阵A分解成一个正交矩阵与一个上三角矩阵的乘积。
函数 qr 格式 [Q,R] = qr(A) %求得正交矩阵Q和上三角阵R,Q和R满足A=QR。 [Q,R,E] = qr(A) %求得正交矩阵Q和上三角阵R,E为单位矩阵的变换形式,R的对角线元素按大小降序排列,满足AE=QR。
[Q,R] = qr(A,0) %产生矩阵A的“经济大小”分解 [Q,R,E] = qr(A,0) %E的作用是使得R的对角线元素降序,且Q*R=A(:, E)。 R = qr(A) %稀疏矩阵A的分解,只产生一个上三角阵R,满足R'*R = A'*A,这种方法计算A'*A时减少了内在数字信息的损耗。
[C,R] = qr(A,b) %用于稀疏最小二乘问题:minimize||Ax-b||的两步解:[C,R] = qr(A,b),x = R\c。 R = qr(A,0) %针对稀疏矩阵A的经济型分解 [C,R] = qr(A,b,0) %针对稀疏最小二乘问题的经济型分解 函数 qrdelete 格式 [Q,R] = qrdelete(Q,R,j) %返回将矩阵A的第j列移去后的新矩阵的qr分解 函数 qrinsert 格式 [Q,R] = qrinsert(Q,R,j,x) %在矩阵A中第j列插入向量x后的新矩阵进行qr分解。
若j大于A的列数,表示在A的最后插入列x。 1.3.6 特征值分解 函数 eig 格式 d = eig(A) %求矩阵A的特征值d,以向量形式存放d。
d = eig(A,B) %A、B为方阵,求广义特征值d,以向量形式存放d。 [V,D] = eig(A) %计算A的特征值对角阵D和特征向量V,使AV=VD成立。
[V,D] = eig(A,'nobalance') %当矩阵A中有与截断误差数量级相差不远的值时,该指令可能更精确。'nobalance'起误差调节作用。
[V,D] = eig(A,B) %计算广义特征值向量阵V和广义特征值阵D,满足AV=BVD。 [V,D] = eig(A,B,flag) % 由flag指定算法计算特征值D和特征向量V,flag的可能值为:'chol' 表示对B使用Cholesky分解算法,这里A为对称Hermitian矩阵,B为正定阵。
'qz' 表示使用QZ算法,这里A、B为非对称或非Hermitian矩阵。 说明 一般特征值问题是求解方程: 解的问题。
广义特征值问题是求方程: 解的问题。 1.3.7 奇异值分解 函数 svd 格式 s = svd (X) %返回矩阵X的奇异值向量 [U,S,V] = svd (X) %返回一个与X同大小的对角矩阵S,两个酉矩阵U和V,且满足= U*S*V'。
若A为m*n阵,则U为m*m阵,V为n*n阵。奇异值在S的对角线上,非负且按降序排列。
[U,S,V] = svd (X,0) %得到一个“有效大小”的分解,只计算出矩阵U的前n列,矩阵S的大小为n*n。 1.4 线性方程的组的求解 我们将线性方程的求解分为两类:一类是方程组求唯一解或求特解,另一类是方程组求无穷解即通解。
可以通过系数矩阵的秩来判断: 若系数矩阵的秩r=n(n为方程组中未知变量的个数),则有唯一解; 若系数矩阵的秩r 矩阵分析是解决很多问题的好方法,但是很多时候矩阵的运算比较繁琐,特别是高阶矩阵运算。 这时候如果用matlab来计算就方便快捷得多。下面我将介绍一些基本的矩阵运算方法。 如加,减,乘,除,转置,求逆。 约定: a=[1,3,5;2,4,6;7,9,8] b=[9,6,4;3,4,5;2,3,4] 工具/原料 matlab方法/步骤 加和减: 加减法的命令很简单,直接用加或者减号就可以了。 如: c=a+b d=a-b 乘法: 一般乘法:c=a*b,要求a的列数等于b的行数。 如果a,b是一般的向量,如a=[1,2,3] b=[3,4,5] 点积: dot(a,b), 叉积: cross(a,b) 卷积: conv(a,b) 除法:一般在解线性方程组时会用到。 x=a\b 如果ax=b,则 x=a\b是矩阵方程的解。 x=b/a 如果xa=b, 则x=b/a是矩阵方程的解。 转置: 转置时,矩阵的第一行变成第一列,第二行变成第二列,。 。 x=a.' 求逆: 要求矩阵为方阵。 这在矩阵运算中很常用。 x=inv(a) 。 MATLAB概论 MATLAB是世界流行的优秀科技应用软件之一。 具有功能强大(数值计算、符号计算、图形生成、文本处理及多种专业工具箱)、界面友好,可二次开发等特点。在国内外,已有许多高等院校将其列为本科生、研究生和博士生必须掌握的基本技能。 1起源与发展 自1984年由美国MathWorks公司推向市场以来,先后发布了多个版本,1993年发布4.0版,1995年发布4.2c版,1996年发布5.0版,1997年发布5.1版,1999年发布5.3版,2000年发布6.0版,目前发布的为6.5版。 2基本组成 MATLAB主要由MATLAB主程序、Simulink动态仿真系统和MATLAB工具箱三大部分组成。 其中MATLAB主程序包括MATLAB语言、工作环境、句柄图形、数学函数库和应用程序接口五个部分;Simulink是用于动态系统仿真的交互式系统,允许用户在屏幕上绘制框图来模拟系统并能动态地控制该系统;工具箱则是MATLAB的基本语句编写的各种子程序集和函数库,用于解决某一方面的特定问题或实现某一类的新算法,是开放的,可以根据需要扩充。 3通用命令 通用命令是在MATLAB命令窗口中直接键入并执行。 常见的如下表所列。 名称 功能说明 clear 清除内存中所有的或指定的变量和函数 cd 显示和改变当前工作目录 clc 擦除MATLAB工作窗口中所有显示的内容 clf 擦除MATLAB工作窗口中的图形 dir 列出当前或指定目录中的文件清单 disp 在运行中显示变量或文字内容 echo 控制运行的文字命令是否显示 hold 控制当前的图形窗口对象是否被刷新 home 擦除命令窗口中的全部内容 pack 收集内存碎片以扩大内存空间 quit 关闭并退出MATLAB type 显示所指定文件的全部内容 exit 退出MATLAB 4帮助文件 MATLAB为用户提供了非常详尽的帮助文件,最常见的帮助命令是help,直接输入help则列出全部信息,help后加对象则提示对象帮助信息。 MATLAB的基本矩阵运算 1 简单矩阵输入 MATLAB最基本、也是最重要的功能就是进行实数矩阵或者复数矩阵的运算。由于向量可作为矩阵的一行或者一列,标量(一个数)则可以作为只含有一个元素的矩阵,故向量和标量都可以作为特殊矩阵来处理。 MATLAB的操作和命令对于矩阵而言,和我们平时使用的形式很相似,但它还有自己的一些规定。 一、键盘输入 对于比较小的简单矩阵,可以使用键盘直接输入,例如: a=1;b=2;c=3 x=[5 b c;a*b a+c c/b] x = 5.0000 2.0000 3.0000 2.0000 4.0000 1.5000 矩阵生成不但可以使用纯数字,也可以使用变量。 矩阵的元素直接排列在方括号内,每行内的元素使用空格或者逗号分开,行与行之间使用分号隔开。大的矩阵可以分行输入,用回车键代替分号,这和我们平时使用的矩阵形式很相近。 例如 a=[1 2 3 4 5 6] 大部分的试验数据使用上面的形式给出的,在处理试验数据中,可以简单的将数据前后加入左右括号,就可以得到矩阵的表示。这种处理可以在脚本文件中进行。 二、矩阵生成 MATLAB提供了很多生成和操作矩阵的函数。下面给出几个创建矩阵的例子。 如果是线性等间距格式生成矩阵,可以使用from:step:to方式。from、step、to分别表示开始值、步长和结束值。 例如 a=1:2:10 a = 1 3 5 7 9 还可以使用linspace命令,如: a=linspace(1,10,5) a = 1.0000 3.2500 5.5000 7.7500 10.0000 linespace的三个参数表示开始值、结束值和数据个数。数据个数可以省略,缺省值为100。 在画Bode图等应用中,需要使用对数等间隔的数据,可以使用logspace命令生成。Logspace和linspace的参数相同,只是结果不同。 2 矩阵运算 矩阵运算是MATLAB的基础,MATLAB的矩阵运算功能十分强大,并且运算的形式和一般的数学表示十分相似。 一、矩阵的转置 矩阵的转置用符号 ' a=[1 2 3;4 5 6] a = 1 2 3 4 5 6 b=a' b = 1 4 2 5 3 6 如果矩阵a为复数矩阵,则a'为共轭转置。 a=[1 2;4 5], d=a+a*i,c1=d',c2=conj(d),。 加和减: 加减法的命令很简单,直接用加或者减号就可以了。如: c=a+b d=a-b 乘法: 一般乘法:c=a*b,要求a的列数等于b的行数。 如果a,b是一般的向量,如a=[1,2,3] b=[3,4,5] 点积: dot(a,b), 叉积: cross(a,b) 卷积: conv(a,b) 除法:一般在解线性方程组时会用到。 x=a\b 如果ax=b,则 x=a\b是矩阵方程的解。 x=b/a 如果xa=b, 则x=b/a是矩阵方程的解。 转置: 转置时,矩阵的第一行变成第一列,第二行变成第二列,。 x=a.' 求逆: 要求矩阵为方阵。这在矩阵运算中很常用。 x=inv(a) 一、矩阵的表示方法 1、矩阵元素必须在”[]”内; 2、矩阵的同行元素之间用空格(或”,”)隔开; 3、矩阵的行与行之间用”;”(或回车符)隔开; 4、矩阵的元素可以是数值、变量、表达式或函数; 5、矩阵的尺寸不必预先定义。 二、矩阵的运算 1、算术运算 MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)、'(转置)。运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。 (1)矩阵加减运算假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算。运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。 如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。 (2)矩阵乘法假定有两个矩阵A和B,若A为m*n矩阵,B为n*p矩阵,则C=A*B为m*p矩阵。 (3)矩阵除法在MATLAB中,有两种矩阵除法运算:\和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。 A\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。对于含有标量的运算,两种除法运算的结果相同。 对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系,一般A\B≠B/A。 (4)矩阵的乘方一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。 (5)矩阵的转置对实数矩阵进行行列互换,对复数矩阵,共轭转置,特殊的,操作符.'共轭不转置(见点运算); (6)点运算在MATLAB中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有.*、./、.\和.^。 两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。 2、关系运算 MATLAB提供了6种关系运算符:<;(小于)、<;=(小于或等于)、>;(大于)、>;=(大于或等于)、==(等于)、~=(不等于)。 关系运算符的运算法则为: (1)当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0; (2)当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。 最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成; (3)当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。 3、逻辑运算 MATLAB提供了3种逻辑运算符:&(与)、|(或)和~(非)。逻辑运算的运算法则为: (1)在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示; (2)设参与逻辑运算的是两个标量a和b,那么,a&b a,b全为非零时,运算结果为1,否则为0。 a|b a,b中只要有一个非零,运算结果为1。~a当a是零时,运算结果为1;当a非零时,运算结果为0。 (3)若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成; (4)若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。 最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成; (5)逻辑非是单目运算符,也服从矩阵运算规则; (6)在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。 扩展资料:1.获取矩阵元素 可以通过下标(行列索引)引用矩阵的元素,如Matrix(m,n)。 也可以采用矩阵元素的序号来引用矩阵元素。 矩阵元素的序号就是相应元素在内存中的排列顺序。 在MATLAB中,矩阵元素按列存储。 序号(Index)与下标(Subscript)是一一对应的,以m*n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。 其相互转换关系也可利用sub2ind和ind2sub函数求得。 2.矩阵拆分 利用冒号表达式获得子矩阵: (1)A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。 (2)A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素。 此外,还可利用一般向量和end运算符来表示矩阵下标,从而获得子矩阵。 end表示某一维的末尾元素下标。 利用空矩阵删除矩阵的元素: 在MATLAB中,定义[]为空矩阵。 给变量X赋空矩阵的语句为X=[]。注意,X=[]与clear X不同,clear是将X从工作空间中删除,而空矩阵则存在于工作空间中,只是维数为0。 3、特殊矩阵 (1)魔方矩阵魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,…,n2共n2个整数组成。 MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。 (2)范得蒙矩阵范得蒙(Vandermonde)矩阵最后。 1、打开matlab,在命令行窗口中输入a=[2 4;6 9],b=[1 5;5 8],创建2行2列的a,b矩阵,如下图所示。 2、使用矩阵点乘,两个矩阵的对应位置元素相乘,在命令窗口中输入“a.*b”,如下图所示。 3、按回车键之后,可以看到得到的结果是a和b矩阵对应项相乘的结果,一般两个矩阵相乘的话,都使用点乘。 4、我们也可以看一下一般乘法,a*b。 5、按回车键,得到的结果是两个矩阵相乘的结果。 用matlab解矩阵一般方法
matlab中将如何将矩阵改变 比如a=【123:456:789】改变成b=[369:258:
怎么用matlab进行矩阵运算
matlab 矩阵各种表示方法是什么
matlab计算两矩阵点乘