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

(62页)

'matlab简介2matlab输入及输出格式与矩阵运算函数.ppt'
Matlab输入输出格式及矩阵运算在运算式中常需要做数据的输入及输出,采用的方式可以是交谈式的或是指定格式。 输入及输出 交谈式的输入 输出格式 Matlab输入及输出格式我们来看一个例子,计算面积 Area= 可利用指令input在萤幕印出提示文字做为交谈式的输入。 >> r = input('Type radius:') % 在两个单引号 ' 之间键入提示文字 Type radius: % 现在键入 2 做为半径值 r = 2 >> area=pi*r^2; % 键入面积算式交谈式的输入 >> name = input('Your name please: ','s') % 要键入文字则须在加上's',s 是代表字串(string) Your name please: % 键入名字 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.5f\n', area) 在二个单引号间包括输出的字串The area is,接著是输出数据的格式%8.5f,再来是跳行符号以避免下一个输出 数据或是提示符号也挤在同一行,最后键入要输出的数据名area。The area is 12.56637 % 输出值为8位数含5位小数注意输出格式前须有%符号,跳行符号须有\符号 在此要稍加说明的是输出数据的格式,以下的例子各说明了不同型态的输出格式 >> fprintf('f_form: %12.5f\n',12345.2) % 输出值为12位数,含5位小数 f_form: 12345.20000 >> fprintf('f_form: %12.3f\n',1.23452) % 输出值为12位数,含3位小数 f_form: 1.235 >> fprintf('e_form: %12.5e\n',12345.2) % 输出值为指数格式的12位数,含5位小数 e_form: 1.23452e+004 >> fprintf('f_form: %12.0f\n',12345.2) % 输出值为整数格式的12位数 f_form: 12345MATLAB常用的三角函数 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)运算: 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亦可取出向量的一个元素或一部份来做运算: 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:用来寻找未知的命令。例如要寻找计算逆矩阵的命令,可键入 lookfor inverse,MATLAB即会列出所有和关键字inverse相关的指令。找到所需的命令后 ,即可用help进一步找出其用法。(lookfor事实上是对所有在搜寻路径下的M档案进行关键字对第一注解行的比对。) A-3 MATLAB基本功能我们下面给出一些MATLAB的常用的功能,这只是MATLAB及其众多TOOLBOX中的极少极少部分。用户可以参阅有关MATLAB的手册,或直接在MATLAB系统中用HELP命令查阅其它功能。MATLAB的主要线性代数运算 如表A-1所示为常用的矩阵和线性代数运算函数,用户可以用help matfun获得更多内容表A-1常用线性代数函数上面所列的都是有关矩阵的操作函数。如eig(A)可求出A的特征根及其特征向量,具体执行方法为: 输入A矩阵>>A=[0 1;-6 -5] A = 0 1-6 -5E=eig(A)   %求出方阵A的特征根E E =-2-3%求出方阵A的特征向量V及其A的对角型D[V,D]=eig(A) V =0.4472 -0.3162-0.8944 0.9487D =-2 00 -3考虑一个“数学问题”, 该问题用半数学语言描述就是:如何生成一个 3x3 矩阵, 并将自然数 1, 2, ..., 9 分别置成这 9 个矩阵元素,才能使得每一行、每一列、且主、反对角线上元素相加都等于一个相同的数。 这样的矩阵称为“魔方矩阵”。用 MATLAB 的 magic() 函数,我们可以由下面的命令立即生成这样的矩阵:>>  A=magic(3)  A =     8   1   6     3   5   7     4   9   2 还可以由 B=magic(10) 一次生成 10x10 的魔方矩阵。如果想求出矩阵的行列式和特征值,可以分别由 det(B) 与 eig(B) 立即得出结果,而同样的工作在 C 下并不是很简单就可以得出的,算法选择不好,还可能得出错误的结果。 Consider the system of linear equations given byThe solut。省略部分。 4 >> D=triu(A,3) D = 0 0 0 7 0 0 0 0 0 0 0 0 0 0 0 0>> B=tril(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; 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>> A=[2 1; 4 3]; >> A^2 % 矩阵次方 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 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]; >> 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.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
关 键 词:
matlab 输入 输出 格式 矩阵 2matlab 运算 简介 函数
 天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:matlab简介2matlab输入及输出格式与矩阵运算函数.ppt
链接地址: https://www.wenku365.com/p-48121248.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给天天文库发消息,QQ:1290478887 - 联系我们

本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。本站是网络服务平台方,若您的权利被侵害,侵权客服QQ:1290478887 欢迎举报。

1290478887@qq.com 2017-2027 https://www.wenku365.com 网站版权所有

粤ICP备19057495号 

收起
展开