




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2.4矩阵分析·
矩阵是线性代数研究的基本元素,实际上相当于MATLAB中的普通二维数组。矩阵分析主要是研究矩阵的各种特性及其表征方法。·
2.4.1矩阵的行列式·
矩阵的行列式是一个数值,它可以用来表示矩阵是否奇异(矩阵行列式等于0),这主要用在线性方程组特性分析上。MATLAB中求解矩阵行列式的函数是det.·例如:A=magic(3)·
det(A)2.4.2
矩阵的转置与旋转1.矩阵的转置转置运算符是单撇号(‘)。
2.矩阵的旋转利用函数rot90(A,k)将矩阵A旋转90º的k倍,当k为1时可省略。3.矩阵的左右翻转对矩阵实施左右翻转是将原矩阵的第一列和最后一列调换,第二列和倒数第二列调换,…,依次类推。
MATLAB对矩阵A实施左右翻转的函数是fliplr(A)。
4.矩阵的上下翻转MATLAB对矩阵A实施上下翻转的函数是flipud(A)。2.4.3
矩阵的逆与伪逆1.矩阵的逆对于一个方阵A,如果存在一个与其同阶的方阵B,使得:A*B=B*A=I
(I为单位矩阵)则称B为A的逆矩阵,当然,A也是B的逆矩阵。求一个矩阵的逆是一件非常烦琐的工作,容易出错,但在MATLAB中,求一个矩阵的逆非常容易。求方阵A的逆矩阵可调用函数inv(A)。例用求逆矩阵的方法解线性方程组。Ax=b其解为:x=A-1b2.矩阵的伪逆如果矩阵A不是一个方阵,或者A是一个非满秩的方阵时,矩阵A没有逆矩阵,但可以找到一个与A的转置矩阵A’同型的矩阵B,使得:
A*B*A=AB*A*B=B此时称矩阵B为矩阵A的伪逆,也称为广义逆矩阵。在MATLAB中,求一个矩阵伪逆的函数是
pinv(A)。2.4.4
矩阵的秩与迹矩阵的秩矩阵线性无关的行数与列数称为矩阵的秩。在MATLAB中,求矩阵秩的函数是rank(A)。矩阵的迹矩阵的迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和。在MATLAB中,求矩阵的迹的函数是trace(A)。2.4.5
向量和矩阵的范数矩阵或向量的范数用来度量矩阵或向量在某种意义下的长度。范数有多种方法定义,其定义不同,范数值也就不同。向量的3种常用范数及其计算函数在MATLAB中,求向量范数的函数为:norm(V)或norm(V,2):计算向量V的2—范数。norm(V,1):计算向量V的1—范数。norm(V,inf):计算向量V的∞—范数。矩阵的范数及其计算函数MATLAB提供了求3种矩阵范数的函数,其函数调用格式与求向量的范数的函数完全相同。2.4.6
矩阵的条件数矩阵条件数是用来刻画矩阵病态程度的关键表征量。矩阵的条件数越大,代表矩阵病态程度越严重。线性方程组
A*X=b中,如果系数矩阵A严重病态,其精确求解将是很困难的。在MATLAB中,计算矩阵A的3种条件数的函数是:cond(A,1)计算A的1—范数下的条件数。cond(A)或cond(A,2)计算A的2—范数数下的条件数。cond(A,inf)计算A的∞—范数下的条件数。2.4.7
矩阵的特征值与特征向量在MATLAB中,计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有3种:E=eig(A):求矩阵A的全部特征值,构成向量E。[V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。[V,D]=eig(A,‘nobalance’):与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。例 用求特征值的方法解方程。3x5-7x4+5x2+2x-18=0p=[3,-7,0,5,2,-18];%A的伴随矩阵%求A的特征值%直接求多项式p的A=compan(p);x1=eig(A)x2=roots(p)零点2.4.8矩阵的标准正交基一个矩阵通过其每一列向量的线性运算,可以派生出一个向量空间,这称之为矩阵的线性空间。每一个矩阵的线性空间下所有的向量,实际上只需要通过一组基向量的线性运算就可以产生。这样的最少个数的一组基向量称为该空间的基,如果这些向量正好长度为1,则称为标准正交基。MATLAB中可以通过orth函数产生矩阵A的线性空间的一组标准正交基,即若B=orth(A),则B的列向量组成了矩阵A的线性空间的一组标准正交基,于是B*B=eye(rank(A).2.4.9
对角阵与三角阵1.对角阵只有对角线上有非0元素的矩阵称为对角矩阵,对角线上的元素相等的对角矩阵称为数量矩阵,对角线上的元素都为1的对角矩阵称为单位矩阵。(1)提取矩阵的对角线元素设A为m×n矩阵,diag(A)函数用于提取矩阵A主对角线元素,产生一个具有min(m,n)个元素的列向量。diag(A)函数还有一种形式diag(A,k),其功能是提取第k条对角线的元素。(2)构造对角矩阵设V为具有m个元素的向量,diag(V)将产生一个m×m对角矩阵,其主对角线元素即为向量V的元素。diag(V)函数也有另一种形式diag(V,k),其功能是产生一个n×n(n=m+k)对角阵,其第k条对角线的元素即为向量V的元素。例先建立5×5矩阵A,然后将A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,2111,18,25,2,19];D=diag(1:5);D*A %用D左乘A,对A的每行乘以一个指定常数2.三角阵三角阵又进一步分为上三角阵和下三角阵,所谓上三角阵,即矩阵的对角线以下的元素全为0的一种矩阵,而下三角阵则是对角线以上的元素全为0的一种矩阵。上三角矩阵求矩阵A的上三角阵的MATLAB函数是triu(A)。triu(A)函数也有另一种形式triu(A,k),其功能是求矩阵A的第k条对角线以上的元素。例如,提取矩阵A的第2条对角线以上的元素,形成新的矩阵B。下三角矩阵在MATLAB中,提取矩阵A的下三角矩阵的函数是tril(A)和tril(A,k),其用法与提取上三角矩阵的函数triu(A)和
triu(A,k)完全相同。·
2.4.10矩阵分解处理各种矩阵的相关问题是,经常会利用矩阵分解的方法。MATLAB中对各种经典的矩阵分解都提供了相关的
函数。1、LU分解LU分解是把矩阵A分解为两个矩阵的乘积,其中一个是下三角矩阵置换后的矩阵,另一个是上三角矩阵。MATLAB中通过函数lu可以实现矩阵的LU分解。(1)[L,U]=lu(A)把矩阵A分解为下三角矩阵的置换矩阵L和上三角矩阵U,满足A=L*U;(2)[L,U,P]=lu(A)把矩阵A分解结果中,L是一个下三角矩阵,U是一个上三角矩阵,P是一个置换矩阵,满足满足L*U=P*A;·
2、Cholesky分解一个对称正定矩阵,可以分解为一个下三角矩阵和一个上三角矩阵的乘积,这种分解称为Cholesky分解。MATLAB中通过chol函数实现矩阵的Cholesky分解。R=chol9A)得到一个上三角矩阵,满足R’*R=A。因为chol只能分解对称正定矩阵,因此使用chol之前最好通过eig命令检查矩阵A的所有特征值是否为正(矩阵是否正定)·
3、QR分解QR分解是把矩阵分解为一个正交矩阵和一个上三角矩阵的乘积。MATLAB中实现QR分解的命令是qr.[Q,R]=qr(A)把矩阵A分解为正交矩阵Q和上三角矩阵R,满足A=Q*R.QR分解不仅适用于分解方阵,也可分解长方形矩阵。例如,对3*3随机分布矩阵进行QR分解。A=rand(3)[Q,R]=qr(A)Q’*Q,Q*R·
4、SVD分解(奇异值分解)奇异值分解也是常用的矩阵分解之一。MATLAB中通过svd函数实现矩阵的奇异值分解。(1)s=svd[A],返回A的奇异值组成的列向量。[u,s,v]=svd(A)将矩阵分解为三个矩阵的乘积,即A=U*S*V’:其中U和V是正交矩阵,S是一个对角矩阵,其对角元素为矩阵A奇异值的降序排列。·
5、Schur分解MATLAB中实现Schur分解的命令是schur。其语法格式为:[U,T]=schur(A)其中U是一个正交矩阵,T是一个上三角矩阵,称为A的schur矩阵,并且满足A=U*T*U’.2.5矩阵的超越函数1、矩阵平方根sqrtmsqrtm(A)计算矩阵A的平方根。2、矩阵对数logmlogm(A)计算矩阵A的自然对数。此函数输入参数的条件与输出结果间的关系和函数sqrtm(A)完全一样3、矩阵指数expm、expm1、expm2、expm3expm(A)、expm1(A)、expm2(A)、expm3(A)的功能都求矩阵指数eA。4、普通矩阵函数funmfunm(A,‘fun’)用来计算直接作用于矩阵A的由‘fun’指定的超越函数值。当fun取sqrt时,funm(A,‘sqrt’)可以计算矩阵A的平方根,与sqrtm(A)的计算结果一样。2.6
字符串在MATLAB中,字符串是用单撇号括起来的字符序列。
MATLAB将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向量相同。也可以建立多行字符串矩阵。2.6.1、单行字符串创建创建单行的字符串很方便,只需要把字符内容用单引号(‘)括起来即可,还可以用方括号([])连接多个字符串组成的较长的字符串,或者用strcat函数降多个字符串横向连接成更长的字符串。需要注意的是,用方括号连接的时候,字符串中所有的空格都会保留下来,而用strcat函数连接字符串的时候,被连接的每一个字符串最右边的所有空格将被裁切。·
2.6.2、多行字符串创建·二维字符数组是最简单的多行字符串,相当于把多个字符串纵向连接起来。这种连接也可以用方括号,只是个航字符串之间要用分号分隔,而不再是横向连接时用的逗号或者空格了。·另外,MATLAB还提供了strvcat函数和char函数用于纵向连接多个字符串。用方括号纵向连接的每一行字符串,要求长度相等,否则必须换用函数方法连接。·
Strvcat函数连接多行字符串时,不要求每行长度相等,MATLAB会自动把非最长行的字符串最右边补空格,使所有行和最长的字符串具有相同长度。·
2.6.3.字符串操作1、字符串比较(1)比较两个字符串是否完全相同:strcmp(2)比较两个字符串的前n个字符是否相同。strncmp(3)比较两个字符串是否完全相同,不区分大小写。Strcmpi两个字符串还可以逐个字符的比较,MATLAB中用关系运算符等于(==)实现这一比较。需要注意的是,待比较的两个字符串必须长度相等,或者其中之一为单个字符。在实际处理字符串时,经常还会遇到确定字符串的某个字符属于英文字母、数字还是空格等格式字符的问题。(1)isletter可以检测字符串中的每一个字符是否属于英文字母。(2)isspace可以检测字符串中的字符是否属于格式字符。(3)isstrprop函数可以逐个检测字符是否属于指定的范围。·
2、字符串的替换和查找strrep(str1,str2,str3),它把str1中所有的str2子串str3来替换。需要注意的是,strrep对字母的大小写敏感,只能替换str1中与str2完全一致的字符串。strfind(str,pattern),查找str中是否具有pattern子串返回子串出现的位置,没有出现返回空数组。findstr(str1,str2),查找str1和str2中,较短字符串在长字符串中出现的位置。strmatch(pattern,str),检查pattern是否和str最左侧部分一致,加’exact’,是否完全一致,相当于strcmpstrok(str,char),返回str中由char指定的字符前的部分和之后的部分·
3、其他blanks(n)创建由n个空格组成的字符串deblank(str)裁切字符串str的尾部空格strtrim(str)裁切字符串str的开头和尾部的空格lower(str)将str中的字母全部转换成小写upper(str)将str中的字母全部转换成大写strjust(strarray,’right’),将字符数组starray的每行右对齐。strjust(strarray,’left’),将字符数组starray的每一左对齐。strjust(strarray,’center’),将字符数组starray的每行居中对齐,其他位置用空格补齐。Sort(str),按照字符的ASCII值对字符串str排序。字符串是以ASCII码形式存储的。abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。相反,char函数可以把ASCII码矩阵转换为字符串矩阵。例2-13建立一个字符串向量,然后对该向量做如下处理:取第1~5个字符组成的子字符串。将字符串倒过来重新排列。将字符串中的小写字母变成相应的大写字母,其余字符不变。统计字符串中小写字母的个数。命令如下:ch=‘ABc123d4e56Fg9’;subch=ch(1:5) %取子字符串revch=ch(end:-1:1) %将字符串倒排%找小写字母的位置%将小写字母变成相应k=find(ch>=‘a’&ch<=‘z’);ch(k)=ch(k)-(‘a’-‘A’);的大写字母char(ch)length(k) %统计小写字母的个数与字符串有关的另一个重要函数是eval,其调用格式为:eval(t)其中t为字符串。它的作用是把字符串的内容作为对应的MATLAB语句来执行。2.7
结构数据和单元数据结构数据结构矩阵的建立与引用结构矩阵的元素可以是不同的数据类型,它能将一组具有不同属性的数据纳入到一个统一的变量名下进行管理。建立一个结构矩阵可采用给结构成员赋值的办法。具体格式为:结构矩阵名.成员名=表达式其中表达式应理解为矩阵表达式。另外,可以采用struct函数创建结构体。strarray=struct(‘field1’,val1,’field2’,val22.结构成员的修改可以根据需要增加或删除结构的成员。例如要给结构矩阵a增加一个成员x4,可给a中任意一个元素增加成员x4:a(1).x4=‘410075’;但其他成员均为空矩阵,可以使用赋值语句给它赋确定的值。要删除结构的成员,则可以使用rmfield函数来完成。例如,删除成员x4:a=rmfield(a,‘x4’);3.关于结构的函数除了一般的结构数据的操作外,MATLAB还提供了部分函数来进行结构矩阵的操作。deal,fieldnames,isfield
isstruct,rmfield,struct2cell2.7.2
单元数据单元矩阵的建立与引用建立单元矩阵和一般矩阵相似,只是矩阵元素用大括号括起来。可以用带有大括号下标的形式引用单元矩阵元素。例如b{3,3}。单元矩阵的元素可以是结构或单元数据。可以使用celldisp函数来显示整个单元矩阵,如celldisp(b)还可以删除单元矩阵中的某个元素。关于单元的函数MATLAB还提供了部分函数用于单元的操作。deal,cell,celldisp,cellplot,cell2struct,num2cell,is2.8稀疏矩阵矩阵存储方式MATLAB的矩阵有两种存储方式:完全存储方式和稀疏存储方式。完全存储方式完全存储方式是将矩阵的全部元素按列存储。以前讲到的矩阵的存储方式都是按这个方式存储的,此存储方式对稀疏矩阵也适用。2.稀疏存储方式稀疏存储方式仅存储矩阵所有的非零元素的值及其位置,即行号和列号。在MATLAB中,稀疏存储方式也是按列存储的。注意,在讲稀疏矩阵时,有两个不同的概念,一是指矩阵的0元素较多,该矩阵是一个具有稀疏特征的矩阵,二是指采用稀疏方式存储的矩阵。2.8.2
稀疏存储方式的产生1.将完全存储方式转化为稀疏存储方式函数A=sparse(S)将矩阵S转化为稀疏存储方式的矩阵A。当矩阵S是稀疏存储方式时,则函数调用相当于A=S。sparse函数还有其他一些调用格式:sparse(m,n):生成一个m×n的所有元素都是0的稀疏矩阵。
sparse(u,v,S):u,v,S是3个等长的向量。S是要建立的稀疏矩阵的非0元素,u(i)、v(i)分别是S(i)的行和列下标,该函数建立一个max(u)行、max(v)列并以S为稀疏元素的稀疏矩阵。此外,还有一些和稀疏矩阵操作有关的函数。例如[u,v,S]=find(A):返回矩阵A中非0元素的下标和元素。这里产生的u,v,S可作为sparse(u,v,S)的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新课标导向下培养语文阅读思维的策略研究-以统编版三年级语文阅读教学为例
- 代购合同范例中日文
- 光伏验收合同范例
- 个人临街商铺租赁合同范例
- 修建村委围墙合同范本
- 亚马逊仓库转让合同范例
- 乡村道路承包维修合同范例
- 农村买卖房屋合同范例
- 晚期肺癌患者预期性悲伤影响因素及干预方案构建研究
- 公司ceo合同范例
- 模具费支付合同模板
- 餐饮部总监述职报告
- 辽宁省沈阳市第七中学2024-2025学年九年级上学期期中英语试题
- 小学金融普及
- 2024电力建设工程绿色建造评价规范
- 安宁疗护课件
- 中小学-珍爱生命拒绝毒品-课件
- 价值观考核评定表
- 振动筛施工技术方案
- 急救药品课件教学课件
- 学术英语智慧树知到答案2024年南开大学
评论
0/150
提交评论