您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 理论文章 > 第三节矩阵基本函数运算与矩阵元素的提取(第二章)
1实验三第三节矩阵基本函数运算与矩阵元素的提取(第二章)一、矩阵基本函数运算此运算是矩阵运算中最实用的部分,其基本命令如下:命令集9矩阵的大小、行列式、逆、特征值、秩、迹、范数size(A)给出包含A的维数的一个行向量.在这个返回向量中的第一个元素是行数,随后是列数.[m,n]=size(A)给出A的维数、m行数和n列数,即两个标量.length(x)给出一个向量的长度,即x分量个数.sum(A)若A是矩阵,给出一个行向量,其每个分量表示A相应的列和;若A是向量,给出此向量的分量和.det(A)求矩阵A的行列式.eig(A)求包含矩阵A的特征值的向量.[X,D]=eig(A)求包含矩阵A的特征值对应的对角阵D和以相应特征向量为列的矩阵.inv(A)或A^(-1)求矩阵A的逆矩阵.rank(A)求矩阵A的秩.trace(A)求矩阵A的迹(对角线元素之和).norm(A,1)矩阵A的1—范数或列和范数,定义如下.norm(A,2)矩阵A的2—范数.norm(A,inf)矩阵A的∞—范数.norm(x,1)向量x的1—范数或列和范数,定义如下.norm(x,2)向量x的2—范数.norm(x,inf)向量x的∞—范数.2范数定义如下:设'12(,,,)nxxxx,()ijnmAa,则相应范数定义如下11niixx;221niixx;maxiixx11maxnijjiAa,1maxnijijAa,2maxA'AiiiA,其中为的最大特征值二、矩阵元素的提取在MATLAB中还有利用已存在的矩阵建立新矩阵的命令.以下假设矩阵A是m×n的矩阵,x是个有n个元素的向量.1.对角阵与三角阵的生成命令集10diag(A)生成一个由矩阵A主对角线元素组成的列向量.主对角线总是从矩阵左上角开始.对于方阵来说它结束于矩阵的右下角.diag(x)生成一个n维的方阵,它的主对角线元素值取自向量x,其余元素的值都为0.diag(A,k)生成一个由矩阵A第k条对角线的元素组成的列向量.k=0为主对角线;k0为下第k对角线;k0为上第k对角线.diag(x,k)生成一个(n+abs(k))×(n+abs(k))维的矩阵,该矩阵的第k条对角线元素取自向量x,其余元素都为零.关于参数k可参考上个命令.triu(A)生成一个和A大小相同的上三角矩阵.该矩阵的主对角线及以上元素取自A中相应元素,其余元素都为零.triu(A,k)生成一个和A大小相同的上三角矩阵.该矩阵的第k条对角线及以上元素取自A中相应元素,其余元素都为零.命令triu(A,0)等同于命令triu(A).3tril(A)生成一个和A大小相同的下三角矩阵.该矩阵的主对角线及以下元素取自A中相应元素,其余元素都为零.tril(A,k)生成一个和A大小相同的下三角矩阵.该矩阵的第k条对角线及以下元素取自A中相应元素,负数k表示主对角线下的对角线.其余元素都为零.命令tril(A,0)等同于命令tril(A).2.向量和子矩阵的生成在MATLAB中可以使用冒号‘:’来代表一系列数值.有时也使用它来定义一个子矩阵.命令集11i:k创建从i开始、步长为1、到k结束的数字序列,即i,i+1,i+2,...,k.如果ik,MATLAB则返回一个空矩阵,也就是[].数字i和k不必是整数,该序列的最后一个数是小于或等于k.i:j:k创建从i开始、步长为j、到k结束的数字序列,即i,i+j,i+2j,...,k.对于j=0,则返回一个空矩阵.数字i、j和k不必是整数,该序列的最后一个数是小于或等于k.linspace(a,b)在区间[a,b]上创建一个有100个元素的向量,这100个数把整个区间线性分隔.其中a是第一个元素,b是最后一个.linspace(a,b,n)在区间[a,b]上创建一个有n个元素的向量.这个命令和冒号表示形式相近,但是它直接定义了数据的个数,其步长为(b-a)/(n-1).命令集12定义子阵A(i,j)返回矩阵A中第ij元素的值.A(:,j)返回矩阵A中第j列列向量.A(i,:)返回矩阵A中第i行行向量.A(:,j:k)返回由矩阵A中的第j列,第j+1列,直到第k列列向量组成的子阵.A(i:k,:)返回由矩阵A中的第i行,第i+1行,直到第k行行向量组成的子阵.4A(i:k,j:l)返回由二维矩阵A中的第i行到第k行行向量和第j列到第l列列向量组成的子阵.A(:)将矩阵A中的每列合并成一个长的列向量.A(j:k)返回一个行向量,其中的元素为A(:)中的从第j个元素到第k个元素.A([j1j2...])返回一个行向量,其中的元素为A(:)中的第j1、j2元素.A(:,[j1j2...])返回矩阵A的第j1列、第j2列等的列向量.A([i1i2...]:,)返回矩阵A的第i1行、第i2行等的行向量.A([i1i2...],[j1j2...])返回矩阵第i1行、第i2行等和第j1列、第j2列等的元素.二、矩阵元素的增减在MATLAB中可以通过增加元素、行和列将一个矩阵或者向量进行扩展.由于MATLAB可以自动地改变矩阵的大小,所以使用已存在的矩阵的一部分来创建一个新矩阵是很容易的这在许多应用中都很有用.从已存在的矩阵中建立一个矩阵就和定义一个新矩阵一样.元素用空格或逗号分隔,行用分号或回车分隔.■例1假设下列矩阵已经定义为:125611,,,,13143412ABxyz(a)有几种方式可以将向量x扩展成1×4.假设想要的新向量是:xnew=(91005)下列的三种方法都可以给出想要的结果:①xnew=x;xnew(3)=0;xnew(4)=5;②xnew=[x05];③t=[05];xnew=[xt];5(b)以下两种方法可以对矩阵A扩展一个新行,如向量z:①Anew1=[A;z],②Anew1=[A;[1314]].它们在屏幕上显示的结果如下:Anew1=12241314有时还可以对矩阵添加多个新行:Anew2=[A;x;z;[00]](c)对矩阵A扩展一个新列,如y,可以这样做:Anew3=[Ay]或者Anew3=[A[11;12]](d)对矩阵A扩展一个矩阵的操作是相似的,输入命令:Anew4=[A;B],Anew5=[AB]对于Anew4来说,它的列数一定等于矩阵A和B的列数;而对于Anew5来说,它的行数一定等于矩阵A和B的行数.(e)改变矩阵的元素①A(3,3)=15矩阵A的(3,3)元素变为15②A(2,:)=[10]矩阵A的第2行变为[10]③A(2,:)=[]矩阵A变为一个行向量(f)为了生成规则的矩阵块可以下列的方式使用命令repmat.6■例2①repmat([10;01],3,3)返回一个由[10;01]组成的6阶矩阵②repmat([10],1,5)得到:返回一个由[10]组成的10维行向量③如果要创建一个所有元素都是同一个值的矩阵,可以使用命repmat(42,[22])返回一个由42组成的2阶矩阵第四节字符串(第二章)在MATLAB中可能会遇到对字符和字符串的操作.字符串能够显示在屏幕上,也可以用来构成一些命令,这些命令在其他的命令中用于求值或者被执行.一个字符串是存储在一个行向量中的文本,这个行向量中的每一个元素代表一个字符.实际上,元素中存放的是字符的内部代码,也就是ASCII码.当在屏幕上显示字符变量的值时,显示出来的是文本,而不是ASCII数字.由于字符串是以向量的形式来存储的,所以可以通过它的下标对字符串中的任何一个元素进行访问.字符矩阵也可以这样,但是它的每行字符数必须相同.一、输入格式MATLAB中的字符串用单引号来定义:NameOfVariable='text'这里的text可以是字母、数字和特殊字符7(a)简单的分配方法,如name='JohnSmith',在屏幕上就会有如下显示:name=JohnSmith(b)分配一个字符.如果(a)中变量name已存在,令name(3)='a',则会给出:name=JoanSmith(c)将上例中的字符串name的元素前后互换位置,可以输入:fori=length(name):-1:1enam(i)=name(length(name)+1-i);endenam下面显示出字符串eman的值:eman=htimSnaoJ(d)在字符串中用两个单引号来表示一个单引号:whoscat='Joanscat'显示结果为:whoscat=Joan'scat(e)字符串的组成可以象数字矩阵一样:name1='Joan';name2='John';heart='isinlovewith';sentence=[name1,'',heart,'',name2]显示的结果为:sentence=JoanisinlovewithJohn8(f)冒号表达式的使用和在数字矩阵中的使用情况一样:name='CharlesJohnson';firstname=name(1:7)firstname=Charles二、字符串求值MATLAB命令可以以字符串的形式进行输入和存储.这些命令字符串通过eval命令来求值.命令集13字符串求值eval(str)执行st中包含的MATLAB命令并返回结果.eval(str1,str2)执行str1中的MATLAB命令,如果没有错误就和执行eval(str1)一样;如果在对str1求值中第一个字符串是一个错误,则对字符串str2进行求值,给出一个错误信息或者其他内容.g=inline(str,arg1,arg2)从字符串str中建立一个叫内联的函数g,如存储在工作内存中的函数,可以用g(val1,val2)来调用.函数中参数的名字可以在字符串arg1,arg2,中给出,如果没有给出,MATLAB将从str中找出小写字母作为参数的名字.■例3b=[123];k=[222];x=[1.21.51.2];str1='b.*sin(k.*x)';y=eval(str1)y=0.67550.28222.0264g=inline('3*sin(x)+5*cos(y)','x','y');g(pi,2*pi)ans=59练习题1.建立新矩阵已知(5)Amagic,求①(),(()),((),2),(,2),(,2)diagAdiagdiagAdiagdiagAdiagAdiagA②(),(),(,1),(,2),(,2)triuAtrilAtriuAtriuAtrilA③(3,2),(:,2),(4,:)AAA④(2:3,3:4),(:),(:,:)AAA2.计算下列各题,已知(4)Amagic,(1234)x①A的行和、列和,A的迹、秩,A的大小②A的特征值、特征向量及1AA③12,,AAA④12,,xxx3.已知(4)Amagic,(4)Bones,'(1234),(5678)xy,建立下列矩阵:①在A的左边增加一列y,A的右边增加一列y;②在A的上面增加一行x,A的下面增加一行x;③在A的左边增加矩阵B变为矩阵C,A的下面增加矩阵B变为矩阵D;④由矩阵D的第1、2、5、8行组成矩阵F;由矩阵C的第1、3、5、7列组成矩阵G;⑤由矩阵D的第1、2、5、8行及C第1、3、5、7列组成矩阵H;⑥删除C的第二行,删除D的第三列;10第3章MATLAB程序设计Matlab作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算能力和丰富的绘图功能;可以人机交互式的命令行的方式工作;作为一种高级语言,同时也可以与C、FORTRAN等高级语言一样进行程序设计.利用Matlab的程序控制功能,将相关Matlab命令编成程序存储在一个文件中(M文件),然后在命令窗口中运行该文件,Matlab就会自动
本文标题:第三节矩阵基本函数运算与矩阵元素的提取(第二章)
链接地址:https://www.777doc.com/doc-2183738 .html