




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Matlab用法简介绪 论Matlab是“Matrix Laboratory”的缩写,意为“矩阵实验室”,是当今美国很流行的科学计算软件信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用在许多诸如控制论、时间序列分析、系统仿真、图像信号处理等方面产生了大量的矩阵及其相应的计算问题自己去编写大量的繁复的计算程序,不仅会消耗大量的时间和精力,减缓工作进程,而且往往质量不高美国Mathwork软件公司推出的Matlab软件就是为了给人们提供一个方便的数值计算平台而设计的Matlab是一个交互式的系统,它的基本运算单元是不需指定维数的矩阵,按照IEEE的数值计算标准(能正确处理无穷数Inf(Infinity)、无定义数NaN(not-a-number)及其运算)进行计算系统提供了大量的矩阵及其它运算函数,可以方便地进行一些很复杂的计算,而且运算效率极高Matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握,还可利用它所提供的编程语言进行编程完成特定的工作除基本部分外,Matlab还根据各专门领域中的特殊需要提供了许多可选的工具箱,如应用于自动控制领域的Control System工具箱和神经网络中Neural Network工具箱等第一节Matlab的安装及使用1.1 Matlab的安装Matlab有各种版本,早期有Matlab 1.0 for 386的DOS版本,后来逐步发展这里介绍的版本是Matlab 6.x for Windows因为它使用方便,界面美观,我们选择它作为主要讲解版本Matlab还有许多附加的部分,最常见的部分称为Simulink,是一个用作系统仿真的软件包,它可以让您定义各种部件,定义各自对某种信号的反应方式及与其它部件的连接方式最后选择输入信号,系统会仿真运行整个模拟系统,并给出统计数据Simulink有时是作为Matlab的一部分提供的,称为Matlab with Simulink版本Matlab还有许多工具箱,它们是根据各个特殊领域的需要,用Matlab自身的语言编写的程序集,使用起来非常方便您可以视工作性质和需要购买相应的工具箱常见的工具箱有:Signal Process信号处理System Identification系统辨识Optimization优化Neural Network神经网络Control System自动控制Spline样条Symbolic Math符号代数Image Process图像处理Nonlinear Control非线性控制Statistics统计1.2 Matlab基本用法从Windows中双击Matlab图标,会出现Matlab命令窗口(Command Window),在一段提示信息后,出现系统提示符“”Matlab是一个交互系统,您可以在提示符后键入各种命令,通过上下箭头可以调出以前打入的命令,用滚动条可以查看以前的命令及其输出信息如果对一条命令的用法有疑问的话,可以用Help菜单中的相应选项查询有关信息,也可以用help命令在命令行上查询,您可以试一下help、help help和help eig(求特征值的函数)命令下面我们先从输入简单的矩阵开始掌握Matlab的功能1.2.1输入简单的矩阵输入一个小矩阵的最简单方法是用直接排列的形式矩阵用方括号括起,元素之间用空格或逗号分隔,矩阵行与行之间用分号分开例如输入:A=1 2 3 ; 4 5 6 ; 7 8 0系统会回答A =1 2 34 5 67 8 0表示系统已经接收并处理了命令,在当前工作区内建立了矩阵A大的矩阵可以分行输入,用回车键代替分号,如:A= 1 2 34 5 67 8 0 结果和上式一样,也是A =1 2 34 5 67 8 01.2.2矩阵元素Matlab的矩阵元素可以是任何数值表达式如:x= -1.3 sqrt(3) (1+2+3)*4/5结果:x = -1.30001.73214.8000在括号中加注下标,可取出单独的矩阵元素如:x(5)=abs(x(1)结果x = -1.30001.73214.8000 01.3000注:结果中自动产生了向量的第5个元素,中间未定义的元素自动初始为零大的矩阵可把小的矩阵作为其元素来完成,如:A=A; 10 11 12结果A =1 2 34 5 67 8 010 11 12小矩阵可用“:”从大矩阵中抽取出来,如:A=A(1:3,:);即从A中取前三行和所有的列,重新组成原来的A. (详细介绍参见第二节的相关内容)1.2.3语句和变量Matlab的表述语句、变量的类型说明由Matlab系统解释和判断Matlab语句通常形式为:变量=表达式或者使用其简单形式为:表达式表达式由操作符或其它特殊字符、函数和变量名组成表达式的结果为一个矩阵,显示在屏幕上,同时保存在变量中以留用如果变量名和“=”省略,则具有ans名(意思指回答)的变量将自动建立例如:键入1900/81结果为:ans =23.4568需注意的问题有以下几点:l 语句结束键入回车键,若语句的最后一个字符是分号,即“;”,则表明不输出当前命令的结果l 如果表达式很长,一行放不下,可以键入“”(三个点,但前面必须有个空格,目的是避免将形如“数2 ”理解为“数2.”与“.”的连接,从而导致错误),然后回车l 变量和函数名由字母加数字组成,但最多不能超过63个字符,否则系统只承认前63个字符l Matlab变量字母区分大小写,如A和a不是同一个变量,函数名一般使用小写字母,如inv(A)不能写成INV(A),否则系统认为未定义函数1.2.4 who和系统预定义变量输入who命令可检查工作空间中建立的变量,键入:who系统输出为:Your variables are:A ans x 这里表明三个变量已由前面的例子产生了但列表中列出的并不是系统全部的变量,系统还有以下内部变量:eps、pi、Inf、NaN变量eps在决定诸如矩阵的奇异性时,可作为一个容许差,容许差的初值为1.0到1.0以后计算机所能表示的下一个最大浮点数,IEEE在各种计算机、工作站和个人计算机上使用这个算法用户可将此值置为任何其它值(包括0值)Matlab的内部函数pinc和rank以eps为缺省的容许差变量pi是p,它是用imag(log(-1)建立的.Inf表示无穷大如果您想计算1/0S=1/0结果会是Warning:Divide by zeroS=Inf具有IEEE规则的机器,被零除后,并不引出出错条件或终止程序的运行,而产生一个警告信息和一个特殊值在计算方程中列出来变量NaN表示它是个不定值由Inf/Inf或0/0运算产生要了解当前变量的信息请键入whos,屏幕将显示: NameSizeBytesClass A4x396double array S1x1 8double array ans1x1 8double array x1x540double arrayGrand total is 19 elements using 152 bytes从size及bytes项目可以看出,每一个矩阵实元素需8个字节的内存43的矩阵使用96个字节,全部变量的使用内存总数为152个字节自由空间的大小决定了系统变量的多少,如计算机上有虚拟内存的话,其可定义的变量个数会大大增加1.2.5数和算术表达式Matlab中数的表示方法和一般的编程语言没有区别如:3-990.00019.639721.6021E-206.02252e23在计算中使用IEEE浮点算法其舍入误差是eps浮点数表示范围是10-30810308数学运算符有:+加-减*乘/右除左除幂这里1/4和41有相同的值都等于0.25(注意比较:14=4)只有在矩阵的除法时左除和右除才有区别1.2.6复数与矩阵在Matlab中输入复数首先应该建立复数单位:i=sqrt(-1)及j=sqrt(-1)之后复数可由下面语句给出:Z=3+4i (注意: 在4与i之间不要留有任何空间!) 输入复数矩阵有两个方便的方法,如:A=1 2; 3 4 + i*5 6; 7 8和 A=1+5i 2+6i; 3+7i 4+8i两式具有相等的结果但当复数作为矩阵的元素输入时,不要留有任何空间,如1+5i,如在“+”号左右留有空格,就会被认为是两个分开的数不过实际使用复数时并没有这么麻烦,系统有一个名为startup.m的Matlab命令文件,建立复数单位的语句也放在其中当Matlab启动时,此文件自动执行,i和j将自动建立1.2.7输出格式任何Matlab语句执行结果都可在屏幕上显示,同时赋给指定的变量,没有指定变量时赋给ans数字显示格式可由format命令来控制(Windows系统下的Matlab系统的数字显示格式可以由Option菜单中的Numerical Format菜单改变)format仅影响矩阵的显示,不影响矩阵的计算与存贮(Matlab以双精度执行所有的运算)首先,如果矩阵元素是整数则矩阵显示就没有小数,如x=-1 0 1,结果为:x=-101如果矩阵元素不是整数则输出形式有:(用命令:format 格式进行切换)格式中文解释说明format短格式(缺省格式)Default. Same as SHORTformat short短格式(缺省格式)Scaled fixed point format with 5 digits(只显示五位十进制数)format long长格式Scaled fixed point format with 15 digitsformat short e短格式e方式Floating point format with 5 digitsformat long e长格式e方式Floating point format with 15 digitsformat short g短格式g方式Best of fixed or floating point format with 5 digitsformat long g长格式g方式Best of fixed or floating point format with 15 digitsformat hex16进制格式Hexadecimal formatformat +格式The symbols +, - and blank are printed for positive, negative and zero elements. Imaginary parts are ignoredformat bank银行格式Fixed format for dollars and centsformat rat有理数格式Approximation by ratio of small integersformat compact压缩格式Suppress extra line-feedsformat loose自由格式Puts the extra line-feeds back in例如:x=4/3 1.2345e-6在不同的输出格式下的结果为:短格式1.33330.0000短格式e方式1.3333e+0001.234e-006长格式1.3333333333333330.000001234500000长格式e方式1.333333333333333e-0001.23450000000000e-006有理数格式4/31/81004516进制格式3ff55555555555553eb4b6231abfd271+格式+对于短格式,如果矩阵的最大元素比数999999999大,或者比数0.0001小,则在打印时,将加入一个普通的长度因数如y=1.e20*x,意为x被1020乘,结果为:y= 1.0e+020*1.33330.0000“+”格式是显示大矩阵的一种紧凑方法,“+”,“-”和空格显示正数、负数和零元素最后format compact命令压缩显示的矩阵,以允许更多的信息显示在屏幕上1.2.8 Help求助命令和联机帮助Help求助命令很有用,它对Matlab大部分命令提供了联机求助信息您可以从Help菜单中选择相应的菜单,打开求助信息窗口查询某条命令,也可以直接用help命令键入help得到help列表文件,键入“help 指定项目”,如:键入help eig则提供特征值函数的使用信息键入help 显示如何使用方括号等键入help help显示如何利用help本身的功能还有,键入lookfor :可以从m文件的help中查找有关的关键字1.2.9 退出和存入工作空间退出Matlab可键入quit或exit或选择相应的菜单中止Matlab运行会引起工作空间中变量的丢失,因此在退出前,应键入save命令,保存工作空间中的变量以便以后使用键入 save则将所有变量作为文件存入磁盘Matlab.mat中,下次Matlab启动时,键入load将变量从Matlab.mat中重新调出save和load后边可以跟文件名或指定的变量名,如仅有save时,则只能存入Matlab.mat中如save temp命令,则将当前系统中的变量存入temp.mat中去,命令格式为:save temp x 仅仅存入x变量save temp X Y Z 则存入X、Y、Z变量load temp可重新从temp.mat文件中提出变量,load也可读ASCII数据文件详细语法见联机帮助第二节向量与矩阵运算Matlab能处理数、向量和矩阵但一个数事实上是一个11的矩阵,1个n维向量也不过是一个1n或n1的矩阵从这个角度上来讲,Matlab处理的所有的数据都是矩阵Matlab的矩阵处理能力是非常灵活、强大的以下我们将从矩阵的产生、基本运算、矩阵函数等几个方面来说明2.1向量及矩阵的生成除了我们在上节介绍的直接列出矩阵元素的输入方法,矩阵还可以通过几种不同的方式输入到Matlab中2.1.1 通过语句和函数产生1. 向量的产生除了直接列出向量元素(即所谓的“穷举法”)外,最常用的用来产生相同增量的向量的方法是利用“:”算符(即所谓的“描述法”)在Matlab中,它是一个很重要的字符如:z=1:5 z = 1 2 3 4 5即产生一个15的单位增量是1的行向量,此为默认情况.用“:”号也可以产生单位增量不等于1的行向量,语法是把增量放在起始量和结尾量的中间如:x=0:pi/4:pi 即产生一个由0pi的行向量,单位增量是pi/4=3.1416/4=0.7854x = 00.78541.57082.35623.1416也可以产生单位增量为负数的行向量如:y=6:-1:1y = 6 5 4 3 2 12. 矩阵的产生Matlab提供了一批产生矩阵的函数:zeros产生一个零矩阵diag产生一个对角矩阵ones生成全1矩阵tril取一个矩阵的下三角eye生成单位矩阵triu取一个矩阵的上三角magic生成魔术方阵pascal生成PASCAL矩阵例如:ones(3)ans = 1 1 1 1 1 1 1 1 1eye(3)ans = 1 0 0 0 1 0 0 0 1除了以上产生标准矩阵的函数外,Matlab还提供了产生随机(向量)矩阵的函数rand和randn,及产生均匀级数的函数linspace、产生对数级数的函数logspace和产生网格的函数meshgrid等等详细使用请查阅随机文档“ : ”冒号可以用来产生简易的表格,为了产生纵向表格形式,首先用冒号“ : ”产生行向量,再进行转置,计算函数值的列,然后形成有二列的矩阵例如命令:x=(0.0:0.2:3.0);y=exp(-x).*sin(x);x y产生结果为:ans =0 00.20000.16270.40000.26100.60000.30990.80000.32231.00000.30961.20000.28071.40000.24301.60000.20181.80000.16102.00000.12312.20000.08962.40000.06132.60000.03832.80000.02043.00000.00702.1.2 通过后缀为.m的命令文件产生如有文件data.m,其中包括正文:A=1 2 3 4 5 67 8 0则用data命令执行data.m,可以产生名为A的矩阵2.2 矩阵操作在Matlab中可以对矩阵进行任意操作,包括改变它的形式,取出子矩阵,扩充矩阵,旋转矩阵等其中最重要的操作符为“:”, 它的作用是取出选定的行与列例如:A(:,:) 代表A的所有元素;试比较A(:), 将A按列的方向拉成长长的1列(向量);A(:,J) 代表A的第J列;A(J:K) 代表 A(J), A(J+1), , A(K),如同A(:)的第J到第K个元素;A(:,J:K) 代表A(:,J), A(:,J+1), , A(:,K),如此类推.对矩阵可以进行各种各样的旋转、变形、扩充:Matlab中有内部函数fliplr ( Flip matrix in the left/right direction),它对矩阵进行左右旋转.例 x = 123fliplr(x)为321456654同样有flipud:x =14flipud(x)为3625 2536 14矩阵的转置用符号“ ”表示:如A=1 2 3; 4 5 6 ; 7 8 0那么:计算B=AB = 1 4 7 2 5 8 3 6 0符号“ ”为矩阵的转置,如果Z为复矩阵,则Z为它的复数共轭转置,非共轭转置使用Z. 或conj(Z)求得reshape改变矩阵的形状,这是什么意思呢?可举一个例子来说明A=A;10 11 12A = 1 2 3 4 5 6 7 8 0 10 11 12则 reshape(A,2,6)ans = 1 7 2 8 3 0 4 10 5 11 6 12可见,reshape 是将矩阵元素以列为单位进行重组,原来43的矩阵变为了26的矩阵那么以下的语句也不难理解了,它将矩阵A按列打开(函数返回矩阵A的行数与列数)reshape(A,1,size(A,1)*size(A,2),它等价于A(:) .还有函数rot90,它可以将矩阵进行各种90度的旋转;tril及triu取出矩阵的下三角及上三角阵等详细的用法可以在需要使用时查阅手册第三节矩阵的基本运算3.1 加和减如矩阵A和B的维数相同,则A+B与A-B表示矩阵A与B的和与差如果矩阵A和B的维数不匹配,Matlab会给出相应的错误提示信息如:A=B=123147456258780360C =A+B返回:C = 2 6 10 6 10 14 10 14 0如果运算对象是个标量(即11矩阵),可和其它矩阵进行加减运算例如:x=-1y=x-1=-20-1213.2矩阵乘法Matlab中的矩阵乘法有通常意义上的矩阵乘法,也有Kronecker乘法,以下分别介绍3.2.1 矩阵的普通乘法矩阵乘法用“ * ”符号表示,当A矩阵列数与B矩阵的行数相等时,二者可以进行乘法运算,否则是错误的计算方法和线性代数中所介绍的完全相同如:A=1 2 ; 3 4; B=5 6 ; 7 8; C=A*B,结果为C=即Matlab返回:C = 19 22 43 50如果A或B是标量,则A*B返回标量A(或B)乘上矩阵B(或A)的每一个元素所得的矩阵3.2.2 矩阵的Kronecker乘法对nm阶矩阵A和pq阶矩阵B,A和B的Kronecher乘法运算可定义为:由上面的式子可以看出,Kronecker乘积AB表示矩阵A的所有元素与B之间的乘积组合而成的较大的矩阵,BA则完全类似AB和BA均为npmq矩阵,但一般情况下ABBA和普通矩阵的乘法不同,Kronecker乘法并不要求两个被乘矩阵满足任何维数匹配方面的要求Kronecker乘法的Matlab命令为C=kron(A,B),例如给定两个矩阵A和B:A=B=则由以下命令可以求出A和B的Kronecker乘积C:A=1 2; 3 4; B=1 3 2; 2 4 6; C=kron(A,B)C = 1 3 2 2 6 4 2 4 6 4 8 12 3 9 6 4 12 8 6 12 18 8 16 24作为比较,可以计算B和A的Kronecker乘积D,可以看出C、D是不同的:A=1 2; 3 4; B=1 3 2; 2 4 6; D=kron(B,A)D = 1 2 3 6 2 4 3 4 9 12 6 8 2 4 4 8 6 12 6 8 12 16 18 243.3 矩阵除法在Matlab中有两种矩阵除法符号:“”即左除和“”即右除如果A矩阵是非奇异方阵,则AB是A的逆矩阵乘B,即inv(A)*B;而B/A是B乘A的逆矩阵,即B*inv(A)具体计算时可不用逆矩阵而直接计算通常:x=AB就是A*x=B的解;x=B/A就是x*A=B的解. 当B与A矩阵行数相等可进行左除如果A是方阵,用高斯消元法分解因数解方程:A*x(:, j)=B(:, j),式中的(:, j)表示B矩阵的第j列,返回的结果x具有与B矩阵相同的阶数,如果A是奇异矩阵将给出警告信息如果A矩阵不是方阵,可由以列为基准的Householder正交分解法分解,这种分解法可以解决在最小二乘法中的欠定方程或超定方程,结果是mn的x矩阵m是A矩阵的列数,n是B矩阵的列数每个矩阵的列向量最多有k个非零元素,k 是A的有效秩右除B/A可由B/A=(AB)左除来实现3.4矩阵乘方AP意思是A的P次方如果A是一个方阵,P是一个大于1的整数,则AP表示A的P次幂,即A自乘P次如果P不是整数,计算涉及到特征值和特征向量的问题,如已经求得:V,D=eig(A),则:AP=V*D.P/V(注:这里的.表示数组乘方,或点乘方,参见后面的有关介绍)如果B是方阵, a是标量,aB就是一个按特征值与特征向量的升幂排列的B次方程阵 如果a和B都是矩阵,则aB是错误的3.5 矩阵的超越函数在Matlab中解释exp(A)和sqrt(A)时曾涉及到级数运算,此运算定义在A的单个元素上 Matlab可以计算矩阵的超越函数,如矩阵指数、矩阵对数等一个超越函数可以作为矩阵函数来解释,例如将“m”加在函数名的后边而成expm(A)和sqrtm(A),当Matlab运行时,有下列三种函数定义:expm 矩阵指数logm矩阵对数sqrtm 矩阵开方所列各项可以加在多种m文件中或使用funm请见应用库中sqrtm.m,1ogm.m,funm.m文件和命令手册3.6数组运算数组运算由线性代数的矩阵运算符“*”、“/”、“”、“”前加一点来表示,即为“.*”、“./”、“.”、“.”注意没有“.+”、“.-”运算3.6.1数组的加和减对于数组的加和减运算与矩阵运算相同,所以“+”、“-”既可被矩阵接受又可被数组接受3.6.2数组的乘和除数组的乘用符号.*表示,如果A与B矩阵具有相同阶数,则A.*B表示A和B单个元素之间的对应相乘例如 x=1 2 3; y= 4 5 6;计算z=x.*y结果z=4 10 18数组的左除(.)与数组的右除(./),由读者自行举例加以体会3.6.3 数组乘方数组乘方用符号.表示例如:键入:x= 1 2 3y= 4 5 6则z=x.y=14 25 36=1 32 729(1) 如指数是个标量,例如x.2,x同上,则:z=x.2=12 22 32= 1 4 9(2) 如底是标量,例如2 .x y ,x、y同上,则:z=2 .x y=21 22 23 24 25 26=2 4 8 16 32 64从此例可以看出Matlab算法的微妙特性,虽然看上去与其它乘方没什么不同,但在2和“”之间的空格很重要,如果不这样做,解释程序会把“”看成是2的小数点 Matlab看到符号“”时,就会当做矩阵的幂来运算,这种情况就会出错,因为指数矩阵不是方阵3.7 矩阵函数Matlab的数学能力大部分是从它的矩阵函数派生出来的,其中一部分装入Matlab本身处理中,它从外部的Matlab建立的M文件库中得到,还有一些由个别的用户为其自己的特殊的用途加进去的其它功能函数在求助程序或命令手册中都可找到手册中备有为Matlab提供数学基础的LINPACK和EISPACK软件包,提供了下面四种情况的分解函数或变换函数:(1)三角分解;(2)正交变换;(3) 特征值变换;(4)奇异值分解3.7.1三角分解最基本的分解为“LU”分解,矩阵分解为两个基本三角矩阵形成的方阵,三角矩阵有上三角矩阵和下三角矩阵计算算法用高斯变量消去法从lu函数中可以得到分解出的上三角与下三角矩阵,函数inv得到矩阵的逆矩阵,det得到矩阵的行列式解线性方程组的结果由方阵的“”和“/”矩阵除法来得到例如:A= 1 2 34 5 67 8 0LU分解,用Matlab的多重赋值语句L,U=lu(A)得出L =0.14291.000000.57140.50001.00001.000000U =7.00008.0000000.85713.0000004.5000注:L是下三角矩阵的置换,U是上三角矩阵的正交变换,分解作如下运算,检测计算结果只需计算L*U即可求逆由下式给出: x=inv(A)x =-1.77780.8889-0.11111.5556-0.77780.2222-0.11110.2222-0.1111从LU分解得到的行列式的值是精确的,d=det(U)*det(L)的值可由下式给出:d=det(A)d =27直接由三角分解计算行列式:d=det(L)*det(U)d =27.0000为什么两种d的显示格式不一样呢? 当Matlab做det(A)运算时,所有A的元素都是整数,所以结果为整数但是用LU分解计算d时,L、U的元素是实数,所以Matlab产生的d也是实数例如:线性联立方程取 b=135解Ax=b方程,用Matlab矩阵除得到x=Ab结果x=0.33330.33330.0000由于A=L*U,所以x也可以有以下两个式子计算:y=Lb,x=Uy得到相同的x值,中间值y为:y =5.00000.28570.0000Matlab中与此相关的函数还有rcond、chol和rref其基本算法与LU分解密切相关chol函数对正定矩阵进行Cholesky分解,产生一个上三角矩阵,以使R*R=Xrref用具有部分主元的高斯约当消去法产生矩阵A的化简梯形形式虽然计算量很少,但它是很有趣的理论线性代数为了教学的要求,也包括在Matlab中3.7.2正交变换“QR”分解用于矩阵的正交三角分解它将矩阵分解为实正交矩阵或复酉矩阵与上三角矩阵的积,对方阵和长方阵都很有用例如A=123456789101112是一个降秩矩阵,中间列是其它二列的平均,我们对它进行QR分解:Q,R=qr(A)Q =-0.0776-0.83310.54440.0605-0.3105-0.4512-0.77090.3251-0.5433-0.0694-0.0913-0.8317-0.77620.31240.31780.4461R =-12.8841-14.5916-16.29920-1.0413-2.0826000.0000000可以验证Q*R就是原来的A矩阵由R的下三角都给出0,并且R(3,3)=0.0000,说明矩阵R与原来矩阵A都不是满秩的下面尝试利用QR分解来求超定和降秩的线性方程组的解例如:b= 1357讨论线性方程组Ax=b,我们可以知道方程组是超定的,采用最小二乘法的最好结果是计算x=Ab结果为:Warning: Rank deficient, rank = 2 tol = 1.4594e-014x = 0.5000 0 0.1667我们得到了缺秩的警告用QR分解法计算此方程组分二个步骤:y=Q*bx=Ry求出的y值为y =-9.1586-0.34710.00000.0000x的结果为Warning: Rank deficient, rank = 2 tol = 1.4594e-014x = 0.5000 0 0.1667用A*x来验证计算结果,我们会发现在允许的误差范围内结果等于b这告诉我们虽然联立方程Ax=b是超定和降秩的,但两种求解方法的结果是一致的显然x向量的解有无穷多个,而“QR”分解仅仅找出了其中之一3.7.3奇异值分解在Matlab中三重赋值语句U,S,V=svd(A)在奇异值分解中产生三个因数:A=U*S*V U矩阵和V矩阵是正交矩阵,S矩阵是对角矩阵,svd(A)函数恰好返回S的对角元素,而且就是A的奇异值(其定义为:矩阵A*A的特征值的算术平方根)注意到A矩阵可以不是方的矩阵奇异值分解可被其它几种函数使用,包括广义逆矩阵pinv(A)、秩rank(A)、欧几里德矩阵范数norm(A,2)和条件数cond(A)3.7.4 特征值分解如果A是nn矩阵,若l满足Ax=lx,则称l为A的特征值,x为相应的特征向量函数eig(A)返回特征值列向量,如果A是实对称的,特征值为实数特征值也可能为复数,例如:A=01-10eig(A)产生结果ans =0 + 1.0000i0 - 1.0000i如果还要求求出特征向量,则可以用eig(A)函数的第二个返回值得到:x,D=eig(A)D的对角元素是特征值x的列是相应的特征向量,以使A*x=x*D计算特征值的中间结果有两种形式:Hessenberg形式为hess(A),Schur形式为schur(A)schur形式用来计算矩阵的超越函数,诸如sqrtm(A)和logm(A)如果A和B是方阵,函数eig(A,B)返回一个包含一般特征值的向量来解方程Ax=lBx双赋值获得特征向量X,D=eig(A,B)产生特征值为对角矩阵D满秩矩阵X的列相应于特征向量,使A*X=B*X*D,中间结果由qz(A,B)提供3.7.5秩Matlab计算矩阵A的秩的函数为rank(A),与秩的计算相关的函数还有:rref(A)、orth(A)、null(A)和广义逆矩阵pinv(A)等利用rref(A),A的秩为非0行的个数rref方法是几个定秩算法中最快的一个,但结果上并不可靠和完善pinv(A)是基于奇异值的算法该算法消耗时间多,但比较可靠其它函数的详细用法可利用Help求助第四节Matlab中的图形4.1二维作图绘图命令plot绘制x-y坐标图;loglog命令绘制对数坐标图;semilogx和semilogy命令绘制半对数坐标图;polor命令绘制极坐标图4.1.1 基本形式如果y是一个向量,那么plot(y)绘制一个y中元素的线性图假设我们希望画出y=0., 0.48, 0.84, 1., 0.91, 6.14 则用命令:plot(y)它相当于命令:plot(x, y),其中x=1,2,n或x=1;2;n,即向量y的下标编号, n为向量y的长度Matlab会产生一个图形窗口,显示如下图形,请注意:坐标x和y 是由计算机自动绘出的图4.1.1.1 plot(0.,0.48,0.84,1.,0.91,6.14)上面的图形没有加上x轴和y轴的标注,也没有标题用xlabel,ylabel,title命令可以加上如果x,y是同样长度的向量,plot(x,y)命令可画出相应的x元素与y元素的x-y坐标图例:x=0:0.05:4*pi; y=sin(x); plot(x,y)grid on, title( y=sin( x ) 曲线图 )xlabel( x = 0 : 0.05 : 4Pi )结果见下图图4.1.1.2 y=sin(x)的图形title图形标题xlabelx坐标轴标注ylabely坐标轴标注text标注数据点grid给图形加上网格hold保持图形窗口的图形表4.1.1.1 Matlab图形命令4.1.2 多重线在一个单线图上,绘制多重线有三种办法. 第一种方法是利用plot的多变量方式绘制:plot(x1,y1,x2,y2,.,xn,yn)x1,y1,x2,y2,.,xn,yn是成对的向量,每一对x, y在图上产生如上方式的单线多变量方式绘图是允许不同长度的向量显示在同一图形上第二种方法也是利用plot绘制,但加上hold on/off命令的配合:plot(x1,y1)hold onplot(x2,y2)hold off第三种方法还是利用plot绘制,但代入矩阵:如果plot用于两个变量plot(x,y),并且x,y是矩阵,则有以下情况:(1)如果y是矩阵,x是向量,plot(x,y)用不同的画线形式绘出y的行或列及相应的x向量,y的行或列的方向与x向量元素的值选择是相同的(2)如果x是矩阵,y是向量,则除了x向量的线族及相应的y向量外,以上的规则也适用(3)如果x,y是同样大小的矩阵,plot(x,y)绘制x的列及y相应的列还有其它一些情况,请参见Matlab的帮助系统4.1.3 线型和颜色的控制如果不指定划线方式和颜色,Matlab会自动为您选择点的表示方式及颜色您也可以用不同的符号指定不同的曲线绘制方式例如:plot(x,y,*)用*作为点绘制的图形plot(x1,y1,:,x2,y2,+)用:画第一条线,用+画第二条线线型、点标记和颜色的取值有以下几种:线型点标记颜色-实线 .点y黄:虚线o小圆圈m棕色-.点划线x叉子符c青色-间断线+加号r红色*星号g绿色s方格b蓝色d菱形w白色朝上三角k黑色v朝下三角朝右三角朝左三角p五角星h六角星表4.1.3.1线型和颜色控制符如果你的计算机系统不支持彩色显示,Matlab将把颜色符号解释为线型符号,用不同的线型表示不同的颜色颜色与线型也可以一起给出,即同时指定曲线的颜色和线型例如:t=-3.14:0.2:3.14;x=sin(t); y=cos(t);plot(t,x, +r,t,y, -b)图4.1.3.1不同线型、颜色的sin,cos图形4.1.4对数图、极坐标图及条形图loglog、semilogx、semilogy和polar的用法和plot相似这些命令允许数据在不同的graph paper上绘制,例如不同的坐标系统先介绍的fplot是扩展来的可用于符号作图的函数l fplot(fname,lims) 绘制fname指定的函数的图形l polar( theta, rho) 使用相角theta 为极坐标形式绘图,相应半径为rho,其次可使用grid命令画出极坐标网格l loglog 用log10-log10标度绘图l semilogx 用半对数坐标绘图,x轴是log10,y是线性的l semilogy 用半对数坐标绘图,y轴是log10,x是线性的l bar(x) 显示x向量元素的条形图,bar不接受多变量l hist 绘制统计频率直方图l histfit(data,nbins) 绘制统计直方图与其正态分布拟合曲线fplot函数的绘制区域为lims=xmin,xmax,也可以用lims=xmin,xmax,ymin,ymax指定y轴的区域函数表达式可以是一个函数名,如sin,tan等;也可以是带上参数x的函数表达式,如sin(x),diric(x,10);也可以是一个用方括号括起的函数组,如sin, cos例1:fplot(sin,0 4*pi)例2:fplot(sin(1 ./ x), 0.01 0.1)例3:fplot(abs(exp(-j*x*(0:9)*ones(10,1),0 2*pi,-o)例4:fplot(sin(x), cos(x) , tan(x),-2*pi 2*pi -2*pi 2*pi) %(图4.1.4.1)图4.1.4.1 sin,cos,tan函数图形图4.1.4.2半对数图下面介绍的是其它几个作图函数的应用例5:半对数坐标绘图t=0.001:0.002:20;y=5 + log(t) + t;semilogx(t,y, b)hold onsemilogx(t,t+5, r) % (图4.1.4.2)例6:极坐标绘图t=0:0.01:2*pi;polar(t,sin(6*t) % (图4.1.4.3) 图4.1.4.3 极坐标绘图 图4.1.4.4正态分布的统计直方图与其正态分布拟合曲线例7:正态分布图我们可以用命令normrnd生成符合正态分布的随机数normrnd(u,v,m,n)其中,u表示生成随机数的期望,v代表随机数的方差运行:a=normrnd(10,2,10000,1);histfit(a)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年综合类-血液病主治医师-神经内科-神经系统常见病历年真题摘选带答案(5卷100道合辑-单选题)
- 2025年综合类-船舶防火与灭火-火的蔓延历年真题摘选带答案(5卷100道集锦-单选题)
- 2025年综合类-职业病主治医师-职业病基础知识历年真题摘选带答案(5卷100道集锦-单选题)
- 2025年综合类-眼科住院医师-常见全身疾病的眼部表现历年真题摘选带答案(5卷100道合辑-单选题)
- 多媒体合同模板(2025版)
- 搭棚合同协议书2025年
- 2025业务居间协议合同范本
- 办公室采购合同范本2025年
- 房地产公司联营合同书模板2025年
- 办公设备购销合同(2025版)
- GB/T 9948-2025石化和化工装置用无缝钢管
- 厂区急救知识培训课件
- 企业食堂阳光管理办法
- 2025年高考语文真题《江上》批注式阅读
- 商场营销推广培训课件
- 证券机构面试题及答案
- SF∕T 0124-2021 录像过程分析技术规范
- 新版特种设备使用管理规则TSG08-2017
- 新概念英语第三册全部课后答案
- 施工单位工程质量 自检报告
- 中国q2签证邀请函
评论
0/150
提交评论