MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt

上传人:tia****nde 文档编号:12806174 上传时间:2020-05-25 格式:PPT 页数:62 大小:219.01KB
返回 下载 相关 举报
MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第1页
第1页 / 共62页
MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第2页
第2页 / 共62页
MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第3页
第3页 / 共62页
点击查看更多>>
资源描述
Matlab输入输出格式及矩阵运算,在运算式中常需要做数据的输入及输出,采用的方式可以是交谈式的或是指定格式。,输入及输出交谈式的输入输出格式,Matlab输入及输出格式,我们来看一个例子,计算面积Area=可利用指令input在萤幕印出提示文字做为交谈式的输入。r=input(Typeradius:)%在两个单引号之间键入提示文字Typeradius:%现在键入2做为半径值r=2area=pi*r2;%键入面积算式,交谈式的输入,name=input(Yournameplease:,s)%要键入文字则须在加上s,s是代表字串(string)Yournameplease:%键入名字J.C.Wuname=J.C.Wu,输出格式,至于输出有二种格式:自由格式(disp)和格式化输出(fprintf)。要直接输出文字或是一数值,可使用disp,例如temp=20;disp(temp);disp(degreesC);disp(度C)%中文也接受呢!20degreesC度C,而指令fprintf则是用来控制输出数据及文字的格式,它的基本格式如fprintf(Theareais%8.5fn,area)在二个单引号间包括输出的字串Theareais,接著是输出数据的格式%8.5f,再来是跳行符号以避免下一个输出数据或是提示符号也挤在同一行,最后键入要输出的数据名area。Theareais12.56637%输出值为8位数含5位小数注意输出格式前须有%符号,跳行符号须有符号,在此要稍加说明的是输出数据的格式,以下的例子各说明了不同型态的输出格式fprintf(f_form:%12.5fn,12345.2)%输出值为12位数,含5位小数f_form:12345.20000fprintf(f_form:%12.3fn,1.23452)%输出值为12位数,含3位小数f_form:1.235,fprintf(e_form:%12.5en,12345.2)%输出值为指数格式的12位数,含5位小数e_form:1.23452e+004fprintf(f_form:%12.0fn,12345.2)%输出值为整数格式的12位数f_form:12345,MATLAB常用的三角函数sin(x):正弦函数asin(x):反正弦函数cos(x):余弦函数acos(x):反余弦函数tan(x):正切函数atan(x):反正切函数sinh(x):超越正弦函数asinh(x):反超越正弦cosh(x):超越余弦函数acosh(x):反超越馀弦函数tanh(x):超越正切函数函数atanh(x):反超越正切函数,变数也可用来存放向量或矩阵,并进行各种运算,如下例的列向量(Rowvector)运算:,x=1352;y=2*x+1y=37115,变数命名的规则1.第一个字母必须是英文字母2.字母间不可留空格3.最多只能有19个字母,MATLAB会忽略多余字母,Matlab矩阵运算,x=1352;y=2*x+1y=37115,我们可以随意更改、增加或删除向量的元素:,y(3)=2%更改第三个元素,y=3725,y(6)=10%加入第六个元素,y=3725010,y(4)=%删除第四个元素,y=372010,MATLAB会忽略所有在百分比符号(%)之后的文字,因为百分比之后的文字为程式的注解(Comments)。,MATLAB亦可取出向量的一个元素或一部份来做运算:,x(2)*3+y(4)%取出x的第二个元素和y的第四个元素来做运算ans=9,y(2:4)-1%取出y的第二至第四个元素来做运算ans=61-1在上例中,2:4代表一个由2、3、4组成的向量,若对MATLAB函数用法有疑问,可随时使用help来寻求在线帮助(on-linehelp):,MATLAB的查询命令,help:用来查询已知命令的用法。例如已知inv是用来计算逆矩阵,键入helpinv即可得知有关inv命令的用法。(键入helphelp则显示help的用法,请试看看!),lookfor:用来寻找未知的命令。例如要寻找计算逆矩阵的命令,可键入lookforinverse,MATLAB即会列出所有和关键字inverse相关的指令。找到所需的命令后,即可用help进一步找出其用法。(lookfor事实上是对所有在搜寻路径下的M档案进行关键字对第一注解行的比对。),A-3MATLAB基本功能,我们下面给出一些MATLAB的常用的功能,这只是MATLAB及其众多TOOLBOX中的极少极少部分。用户可以参阅有关MATLAB的手册,或直接在MATLAB系统中用HELP命令查阅其它功能。,MATLAB的主要线性代数运算如表A1所示为常用的矩阵和线性代数运算函数,用户可以用helpmatfun获得更多内容,表A1常用线性代数函数,上面所列的都是有关矩阵的操作函数。如eig(A)可求出A的特征根及其特征向量,具体执行方法为:输入A矩阵A=01;-6-5A=01-6-5E=eig(A)%求出方阵A的特征根EE=-2-3,%求出方阵A的特征向量V及其A的对角型DV,D=eig(A)V=0.4472-0.3162-0.89440.9487D=-200-3,考虑一个“数学问题”,该问题用半数学语言描述就是:如何生成一个3x3矩阵,并将自然数1,2,.,9分别置成这9个矩阵元素,才能使得每一行、每一列、且主、反对角线上元素相加都等于一个相同的数。,这样的矩阵称为“魔方矩阵”。用MATLAB的magic()函数,我们可以由下面的命令立即生成这样的矩阵:A=magic(3)A=816357492,还可以由B=magic(10)一次生成10 x10的魔方矩阵。如果想求出矩阵的行列式和特征值,可以分别由det(B)与eig(B)立即得出结果,而同样的工作在C下并不是很简单就可以得出的,算法选择不好,还可能得出错误的结果。,Considerthesystemoflinearequationsgivenby,Thesolutiontothesystemisgivenby,InMatlabtherearetwowaysofsolvingthisproblem.,CalculatetheinverseofA(A-1),thenfindxbyleft-multiplicationofbwithA-1.,Left-divisionofbwithA,Inthefirstcasethefunctioninv(A)isusedtofindtheinverse.Thisisthenmultipliedbyb.TheMatlabcodeforthisoperationis,Inthesecondcaseleft-divisionisperformedstraightawaywiththecommand,X=9.25004.25002.7500,A=rand(1000,1000);%Createsarandom%matrixAb=rand(1000,1);%Createsarandom%vectorbdet(A)%CalculatesthedeterminantofAtic,%Startsthetime-watchx=inv(A)*b;%Solvesthesystemtoc%Stopsthewatchtic,y=Ab;toc%Solvesandtimesthesystem%withleftdivision,前一节提到阵列产生的方式须个别键入其元素,这方法只适用于阵列元素很少时。如果要建立的阵列的元素多达数百个,则须采用以下的数种方式,a=1:5,b=1:2:9%这二种方式更直接a=12345b=13579,a=1:5,b=1:2:9%这二种方式更直接a=12345b=13579,c=ba%可利用先前建立的阵列a及阵列b,组成新阵列,c=1357912345,特殊矩阵,zeros函数是形成元素皆为0的矩阵;ones函数是形成元素皆为1的矩阵;eye则是产生一个单位矩阵,之所以称为eye是取其发音与原来单位矩阵符号I相同,而又避免与定义复数中的虚部所用的符号i雷同,所以改以eye替代。,上述三个函数的使用语法都相似,如zeros(m)可以产生一个mm的正方矩阵,而zeros(m,n)产生的是mn的矩阵。也可以使用这三个函数将一mn矩阵原来元素全部取代成0,1或是单位矩阵的值,不过要加上size指令来指出其矩阵大小是m,n,所以语法为zeros(size(A),其中A是原来矩阵。,A=zero(2)%0的矩阵A=0000,B=zeros(2,3)B=000000,C=12;34;56;size(C)%使用size指令得到C矩阵的大小ans=32,D=zeros(size(C)%加上size指令将矩阵C原来的元素全部以0取代A=ones(2),B=ones(2,3)%1的矩阵,B=111111,A=1111,C=12;34;56;D=ones(size(C);A=eye(2),B=eye(2,3)%单位矩阵A=1001B=100010C=12;34;56;D=eye(size(C);,阵列运算的特色,MATLAB在许多运算皆是以阵列为对象,即是以阵列的元素为对象。因此除了+,-这二个运算外,其余的运算符号(乘、除、次方)皆须加上.来强调阵列之间的运算。以下几个例子可以说明阵列运算的特色。如果a,b各代表二个不同的阵列,a与b之间的运算是元素对元素的方式,例如,x=1.5;%x是纯量y=exp(x2);%exp(x2)是纯量运算y1=x/y%x/y是纯量运算x=1:0.1:2;%x是阵列y=exp(x.2);%exp(x.2)是阵列运算y1=x./y%x./y是阵列运算,x=2.0%x是一纯量nume=x3-2*x2+x-6.3;deno=x2+0.05*x-3.14;f=nume/deno,x=1:5;%注意x是一阵列nume=x.3-2*x.2+x-6.3;deno=x.2+0.05*x-3.14;f=nume./deno,Matlab矩阵运算函数,先介绍几个与矩阵转角有关的函数:rot90,fliplr,flipud,它们的用法及说明请参考以下的例子。,A=210;-25-1;346;B=rot90(A)%将A矩阵逆时针转90度B=0-161542-23,A=12;48;-20;B=fliplr(A);%将A矩阵从左向右翻C=flipud(A);%将A矩阵从上向下翻B,CB=21840-2C=-204812,另外函数reshape则是用来调整矩阵改形,即是在矩阵的元素总数不变下,改变其列及行的大小。见以下范例。A=256-1;3-2100;B=reshape(A,4,2);%将A矩阵改成4x2的矩阵C=reshape(A,1,8);%将A矩阵改成8x1的矩阵,B,CB=263105-1-20C=25613-2100,B,CB=263105-1-20C=25613-2100,我们如果要将矩阵内的特定元素读取出来,或是将特定元素以其它值取代,以下的函数diag,triu,tril提供了这方面的功能。diag是只保留原矩阵的主对角线(maindiagonal)的元素,其余的元素以零取代。triu,tril则是分别产生上三角形及下三角形矩阵,其余的元素也以零取代。以下的例子详细的说明这三个函数的用法:,V=123;A=diag(V)A=100020003,A=1:2:7;3:3:12;4:-1:1;1:4A=13573691243211234B=triu(A)B=13570691200210004,A=1:2:7;3:3:12;4:-1:1;1:4A=13573691243211234C=triu(A,-1)C=13573691203210034,D=triu(A,3)D=0007000000000000,B=tril(A)B=1000360043201234C=tril(A,-1)C=0000300043001230,D=tril(A,3)D=13573691243211234,我们在前面已说明过MATLAB的运算是以阵列(array)及矩阵(matrix)方式在做运算,而这二者在MATLAB的基本运算性质不同,阵列强调元素对元素的运算,而矩阵则采用线性代数的运算方式。我们就来说明矩阵运算的特点。以下将阵列及矩阵的运算符号及其意义列出,利用这些运算符号即可进行以下的矩阵运算。,A=251;738;4521;16130;A%A的转置矩阵A=274165351318210A=4-13;B=-252;dot_prod=sum(A.*B)%二个阵列做内积dot_prod=-7c=dot(A,B)%以dot函数也可做内积运算c=-7,A=4;-1;3;dot_prod=sum(A.*B);%如果A是行阵列则先做转置,再做内积F=25-1;G=01-3;out_prod=F*G;%二矩阵做外积A=2,5,1;0,3,-1;B=1,0,2;-1,4,-2;5,2,1;C=A*B%矩阵相乘,注意二个矩阵的大小须相容C=222-5-810-7,A=21;43;A2%矩阵次方ans=41169,A=2,5,1;0,3,-1;B=1,0,2;-1,4,-2;5,2,1;C=A*B%矩阵相乘,注意二个矩阵的大小须相容C=222-5-810-7,A=21;43;expm(A)logm(A)sqrtm(A),函数polyvalm是以矩阵方式做多项式函数计算,有别于polyval是以阵列方式计算函数值。它的语法为polyvalm(a,X),其中X为一矩阵而a则是一多项式。以下的例子可说明其用法。X=111;222;333;a=111;%注意a=X*X+X+If=polyvalm(a,X)f=877141514212122,MATLAB的逆矩阵函数和秩函数语法分别为inv(A),rank(A),:例如:,逆矩阵、矩阵秩与行列式,A=21;43;rank(A)2%表示A秩数为2且等于矩阵的列数inv(A)%逆矩阵ans=1.5000-0.5000-2.00001.0000,B=21;32;45;%B为奇异矩阵rank(B)ans=2%表示B秩数为2,但是其列数为3inv(B)?Errorusing=invMatrixmustbesquare.,MATLAB提供计算行列式的函数,其语法为det(A),例如:A=130;-152;121;det(A)%矩阵之行列式值ans=10,本征值与本征向量,假设A为一个矩阵,而X为一个有n列的栏向量,为一纯量。考虑以下的数学式如果X由不为零的元素所组成,其中要满足上式称为矩阵A的本征值(eigenvalue),而X称为矩阵A的本征向量(eigenvector)。本征向量代表一个正交归一(orthonormal)的向量组,所谓的正交归一向量,是指这向量与自身做内积的值为一单位向量;在几何关系上是指二量相互垂直且此其内积值再做归一化(normalization)。,本征值与本征向量,上式也可改写为,其中I为单位矩阵。则eigenvalue可以用本征方程式计算上述的二次方程式可求解二个根分别为即为A的本征值。,本征值与本征向量,而A的本征向量求法如下,分别将任一本征值代入例如,另一个本征值代入,可以得到另一个本征向量为。我们可找到无限多个向量,满足上述的本征向量,例如,因此要得到唯一的本征向量,即是正交(orthonormal)本征向量组Q,利用其特性求解上式可得。所以对应的正交本征向量组Q为,在上述例子中,矩阵A很简单大小为,可以用手做演算。一但矩阵大小增加,以MATLAB内建函数做运算,就很轻松。相关函数的语法为eig(A),得到一栏向量代表A的本征值;而Q,d=eig(A),其中Q代表A的本征向量,d为一对角矩阵其元素代表A的本征值。,在此示范上述例子,A=0.50.25;0.250.5;Q,d=eig(A)Q=0.70710.7071-0.70710.7071d=%注意在对角线上的值才是特徵值0.2500000.7500Q*Q%Q*Q=Ians=1001,A*Q(:,1);0.25*Q(:,1)%验证,注意X=Q(:,1)为第一个特徵向量ans=%为A*X的结果0.1768-0.1768ans=%为的结果0.1768-0.1768,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!