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

上传人:小飞机 文档编号:6512075 上传时间:2023-11-08 格式:PPT 页数:62 大小:340.99KB
返回 下载 相关 举报
MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第1页
第1页 / 共62页
MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第2页
第2页 / 共62页
MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第3页
第3页 / 共62页
MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第4页
第4页 / 共62页
MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt》由会员分享,可在线阅读,更多相关《MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt(62页珍藏版)》请在三一办公上搜索。

1、Matlab输入输出格式及矩阵运算,在运算式中常需要做数据的输入及输出,采用的方式可以是交谈式的或是指定格式。,输入及输出 交谈式的输入 输出格式,Matlab输入及输出格式,我们来看一个例子,计算面积 Area=可利用指令input在萤幕印出提示文字做为交谈式的输入。r=input(Type radius:)%在两个单引号 之间键入提示文字 Type radius:%现在键入 2 做为半径值 r=2 area=pi*r2;%键入面积算式,交谈式的输入,name=input(Your name please:,s)%要键入文字则须在加上s,s 是代表字串(string)Your name pl

2、ease:%键入名字 J.C.Wu name=J.C.Wu,输出格式,至于输出有二种格式:自由格式(disp)和格式化输出(fprintf)。要直接输出文字或是一数值,可使用disp,例如 temp=20;disp(temp);disp(degrees C);disp(度 C)%中文也接受呢!20 degrees C 度 C,而指令fprintf则是用来控制输出数据及文字的格式,它的基本格式如 fprintf(The area is%8.5fn,area)在二个单引号间包括输出的字串The area is,接著是输出数据的格式%8.5f,再来是跳行符号以避免下一个输出 数据或是提示符号也挤在同

3、一行,最后键入要输出的数据名area。The area is 12.56637%输出值为8位数含5位小数注意输出格式前须有%符号,跳行符号须有符号,在此要稍加说明的是输出数据的格式,以下的例子各说明了不同型态的输出格式 fprintf(f_form:%12.5fn,12345.2)%输出值为12位数,含5位小数 f_form:12345.20000 fprintf(f_form:%12.3fn,1.23452)%输出值为12位数,含3位小数 f_form:1.235,fprintf(e_form:%12.5en,12345.2)%输出值为指数格式的12位数,含5位小数 e_form:1.234

4、52e+004 fprintf(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):反超越正切函数,变数也可用来存放向量或矩阵,并进行各种运算,如下例的列向量(Row vector)运算:,

5、x=1 3 5 2;y=2*x+1 y=3 7 11 5,变数命名的规则 1.第一个字母必须是英文字母 2.字母间不可留空格3.最多只能有19个字母,MATLAB会忽略多余字母,Matlab矩阵运算,x=1 3 5 2;y=2*x+1 y=3 7 11 5,我们可以随意更改、增加或删除向量的元素:,y(3)=2%更改第三个元素,y=3 7 2 5,y(6)=10%加入第六个元素,y=3 7 2 5 0 10,y(4)=%删除第四个元素,y=3 7 2 0 10,MATLAB会忽略所有在百分比符号(%)之后的文字,因为百分比之后的文字为程式的注解(Comments)。,MATLAB亦可取出向量的

6、一个元素或一部份来做运算:,x(2)*3+y(4)%取出x的第二个元素和y的第四个元素来做运算 ans=9,y(2:4)-1%取出y的第二至第四个元素来做运算 ans=6 1-1 在上例中,2:4代表一个由2、3、4组成的向量,若对MATLAB函数用法有疑问,可随时使用help来寻求在线帮助(on-line help):,MATLAB的查询命令,help:用来查询已知命令的用法。例如已知inv是用来计算逆矩阵,键入help inv即可得知有关inv命令的用法。(键入help help则显示help的用法,请试看看!),lookfor:用来寻找未知的命令。例如要寻找计算逆矩阵的命令,可键入 lo

7、okfor inverse,MATLAB即会列出所有和关键字inverse相关的指令。找到所需的命令后,即可用help进一步找出其用法。(lookfor事实上是对所有在搜寻路径下的M档案进行关键字对第一注解行的比对。),A-3 MATLAB基本功能,我们下面给出一些MATLAB的常用的功能,这只是MATLAB及其众多TOOLBOX中的极少极少部分。用户可以参阅有关MATLAB的手册,或直接在MATLAB系统中用HELP命令查阅其它功能。,MATLAB的主要线性代数运算 如表A1所示为常用的矩阵和线性代数运算函数,用户可以用help matfun获得更多内容,表A1常用线性代数函数,上面所列的都

8、是有关矩阵的操作函数。如eig(A)可求出A的特征根及其特征向量,具体执行方法为:输入A矩阵A=0 1;-6-5 A=0 1-6-5E=eig(A)%求出方阵A的特征根EE=-2-3,%求出方阵A的特征向量V及其A的对角型DV,D=eig(A)V=0.4472-0.3162-0.8944 0.9487D=-2 00-3,考虑一个“数学问题”,该问题用半数学语言描述就是:如何生成一个 3x3 矩阵,并将自然数 1,2,.,9 分别置成这 9 个矩阵元素,才能使得每一行、每一列、且主、反对角线上元素相加都等于一个相同的数。,这样的矩阵称为“魔方矩阵”。用 MATLAB 的 magic()函数,我们

9、可以由下面的命令立即生成这样的矩阵:A=magic(3)A=8 1 6 3 5 7 4 9 2,还可以由 B=magic(10)一次生成 10 x10 的魔方矩阵。如果想求出矩阵的行列式和特征值,可以分别由 det(B)与 eig(B)立即得出结果,而同样的工作在 C 下并不是很简单就可以得出的,算法选择不好,还可能得出错误的结果。,Consider the system of linear equations given by,The solution to the system is given by,In Matlab there are two ways of solving this

10、 problem.,Calculate the inverse of A(A-1),then find x by left-multiplication of b with A-1.,Left-division of b with A,In the first case the function inv(A)is used to find the inverse.This is then multiplied by b.The Matlab code for this operation is,In the second case left-division is performed stra

11、ight away with the command,X=9.25004.2500 2.7500,A=rand(1000,1000);%Creates a random%matrix Ab=rand(1000,1);%Creates a random%vector bdet(A)%Calculates the determinant of Atic,%Starts the time-watchx=inv(A)*b;%Solves the systemtoc%Stops the watchtic,y=Ab;toc%Solves and times the system%with left div

12、ision,前一节提到阵列产生的方式须个别键入其元素,这方法只适用于阵列元素很少时。如果要建立的阵列的元素多 达数百个,则须采用以下的数种方式,a=1:5,b=1:2:9%这二种方式更直接 a=1 2 3 4 5 b=1 3 5 7 9,a=1:5,b=1:2:9%这二种方式更直接 a=1 2 3 4 5 b=1 3 5 7 9,c=b a%可利用先前建立的阵列 a 及阵列 b,组成新阵列,c=1 3 5 7 9 1 2 3 4 5,特殊矩阵,zeros函数是形成元素皆为0 的矩阵;ones函数是形成元素皆为 1 的矩阵;eye则是产生一个单位矩阵,之所以称为eye是取其发音与原来单位矩阵符号

13、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=0 0 0 0,B=zeros(2,3)B=0 0 0 0 0 0,C=1 2;3 4;5 6;size(C)%使用 size 指令得到C矩阵的大小 ans=3 2,D=zeros(s

14、ize(C)%加上size指令将矩阵C 原来的元素全部以 0 取代 A=ones(2),B=ones(2,3)%1 的矩阵,B=1 1 1 1 1 1,A=1 1 1 1,C=1 2;3 4;5 6;D=ones(size(C);A=eye(2),B=eye(2,3)%单位矩阵 A=1 0 0 1 B=1 0 0 0 1 0 C=1 2;3 4;5 6;D=eye(size(C);,阵列运算的特色,MATLAB 在许多运算皆是以阵列为对象,即是以阵列的元素为对象。因此除了+,-这二个运算外,其余的运算符号(乘、除、次方)皆须加上.来强调阵列之间的运算。以下几个例子可以说明 阵列运算的特色。如果

15、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矩阵运算函数

16、,先介绍几个与矩阵转角有关的函数:rot90,fliplr,flipud,它们的用法及说明请参考以下的例子。,A=2 1 0;-2 5-1;3 4 6;B=rot90(A)%将A矩阵逆时针转90度 B=0-1 6 1 5 4 2-2 3,A=1 2;4 8;-2 0;B=fliplr(A);%将A矩阵从左向右翻 C=flipud(A);%将A矩阵从上向下翻 B,CB=2 1 8 4 0-2 C=-2 0 4 8 1 2,另外函数 reshape 则是用来调整矩阵改形,即是在矩阵的元素总数不变下,改变其列及行的大小。见以下范例。A=2 5 6-1;3-2 10 0;B=reshape(A,4,2

17、);%将A矩阵改成 4x2 的矩阵 C=reshape(A,1,8);%将A矩阵改成 8x1 的矩阵,B,C B=2 6 3 10 5-1-2 0C=2 5 6 1 3-2 10 0,B,C B=2 6 3 10 5-1-2 0C=2 5 6 1 3-2 10 0,我们如果要将矩阵内的特定元素读取出来,或是将特定元素以其它值取代,以下的函数diag,triu,tril 提供了这方面的功能。diag是只保留原矩阵的主对角线(main diagonal)的元素,其余的元素以零取代。triu,tril 则是分别产生上三角形及下三角形矩阵,其余的元素也以零取代。以下的例子详细的说明这三个函数的用法:,

18、V=1 2 3;A=diag(V)A=1 0 0 0 2 0 0 0 3,A=1:2:7;3:3:12;4:-1:1;1:4 A=1 3 5 7 3 6 9 12 4 3 2 1 1 2 3 4 B=triu(A)B=1 3 5 7 0 6 9 12 0 0 2 1 0 0 0 4,A=1:2:7;3:3:12;4:-1:1;1:4 A=1 3 5 7 3 6 9 12 4 3 2 1 1 2 3 4 C=triu(A,-1)C=1 3 5 7 3 6 9 12 0 3 2 1 0 0 3 4,D=triu(A,3)D=0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0,B=tri

19、l(A)B=1 0 0 0 3 6 0 0 4 3 2 0 1 2 3 4 C=tril(A,-1)C=0 0 0 0 3 0 0 0 4 3 0 0 1 2 3 0,D=tril(A,3)D=1 3 5 7 3 6 9 12 4 3 2 1 1 2 3 4,我们在前面已说明过 MATLAB 的运算是以阵列(array)及矩阵(matrix)方式在做运算,而这二者在MATLAB的 基本运算性质不同,阵列强调元素对元素的运算,而矩阵则采用线性代数的运算方式。我们就来说明矩阵运算 的特点。以下将阵列及矩阵的运算符号及其意义列出,利用这些运算符号即可进行以下的矩阵运算。,A=2 5 1;7 3 8;

20、4 5 21;16 13 0;A%A的转置矩阵 A=2 7 4 16 5 3 5 13 1 8 21 0 A=4-1 3;B=-2 5 2;dot_prod=sum(A.*B)%二个阵列做内积 dot_prod=-7 c=dot(A,B)%以dot函数也可做内积运算 c=-7,A=4;-1;3;dot_prod=sum(A.*B);%如果A是行阵列则先做转置,再做内积 F=2 5-1;G=0 1-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=2 22-5-8 10-7,

21、A=2 1;4 3;A2%矩阵次方 ans=4 1 16 9,A=2,5,1;0,3,-1;B=1,0,2;-1,4,-2;5,2,1;C=A*B%矩阵相乘,注意二个矩阵的大小须相容 C=2 22-5-8 10-7,A=2 1;4 3;expm(A)logm(A)sqrtm(A),函数polyvalm是以矩阵方式做多项式函数计算,有别于polyval是以阵列方式计算函数值。它的语法为 polyvalm(a,X),其中X为一矩阵而a则是一多项式。以下的例子可说明其用法。X=1 1 1;2 2 2;3 3 3;a=1 1 1;%注意a=X*X+X+I f=polyvalm(a,X)f=8 7 7

22、14 15 14 21 21 22,MATLAB的逆矩阵函数和秩函数语法分别为inv(A),rank(A),:例如:,逆矩阵、矩阵秩与行列式,A=2 1;4 3;rank(A)2%表示A秩数为2且等于矩阵的列数 inv(A)%逆矩阵 ans=1.5000-0.5000-2.0000 1.0000,B=2 1;3 2;4 5;%B为奇异矩阵 rank(B)ans=2%表示B秩数为2,但是其列数为3 inv(B)?Error using=inv Matrix must be square.,MATLAB提供 计算行列式的函数,其语法为det(A),例如:A=1 3 0;-1 5 2;1 2 1;d

23、et(A)%矩阵之行列式值 ans=10,本征值与本征向量,假设 A为一个 矩阵,而 X 为一个有n列的栏向量,为一纯量。考虑以下的数学式 如果X由不为零的元素所组成,其中 要满足上式称为矩阵A的本征值(eigenvalue),而X称为矩阵A的本征向量(eigenvector)。本征向量代表一个正交归一(orthonormal)的向量组,所谓的正交归一向量,是指这向量与自身做 内积的值为一单位向量;在几何关系上是指二量相互垂直且此其内积值再做归一化(normalization)。,本征值与本征向量,上式也可改写为,其中 I 为 单位矩阵。则eigenvalue可以用本征方程式计算 上述的二次方

24、程式可求解二个根分别为 即为A的本征值。,本征值与本征向量,而A的本征向量求法如下,分别将任一本征值代入 例如,另一个本征值 代入,可以得到另一个本征向量为。我们可找到无限多个向量,满足上述的本征向量,例如,因此要得到唯一的本征向量,即是正交(orthonormal)本征向量组Q,利用其特性 求解上式可得。所以对应的正交本征向量组Q为,在上述例子中,矩阵A很简单大小为,可以用手做演算。一但矩阵大小增加,以MATLAB内建函数做运 算,就很轻松。相关函数的语法为eig(A),得到一栏向量代表A的本征值;而Q,d=eig(A),其中Q代表A的本征向量,d为一对角矩阵其元素代表A的本征值。,在此示范上述例子,A=0.5 0.25;0.25 0.5;Q,d=eig(A)Q=0.7071 0.7071-0.7071 0.7071 d=%注意在对角线上的值才是特徵值 0.2500 0 0 0.7500 Q*Q%Q*Q=I ans=1 0 0 1,A*Q(:,1);0.25*Q(:,1)%验证,注意X=Q(:,1)为第一个特徵向量 ans=%为A*X的结果 0.1768-0.1768 ans=%为 的结果 0.1768-0.1768,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号