MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第1页
MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第2页
MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第3页
MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第4页
MATLAB简介2MATLAB输入及输出格式与矩阵运算函数.ppt_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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 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.5fn, area) 在二个单引号间包括输出的字串The area is, 接著是输出数据的格式%8.5f,再来是跳行符号 以避免下一个输出 数据或是提示符号也挤在同 一行,最后键入要输出的数据名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.23452e+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)运算: 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的主要线性代数运算 如表A1所示为常用的矩阵和线性代数运算函 数,用户可以用help matfun获得更多内容 表A1常用线性代数函数 上面所列的都是有关矩阵的操作函数。如 eig(A)可求出A的特征根及其特征向量,具体执 行方法为: 输入A矩阵 A=0 1;-6 -5 A = 0 1 -6 -5 E=eig(A) %求出方阵A的特征根E E = -2 -3 %求出方阵A的特征向量V及其A的对角型D V,D=eig(A) V = 0.4472 -0.3162 -0.8944 0.9487 D = -2 0 0 -3 考虑一个考虑一个“ “数学问题数学问题” ”, , 该问题用半数学语言描述就是:该问题用半数学语言描述就是: 如何生成一个如何生成一个 3x3 3x3 矩阵矩阵, , 并将自然数并将自然数 1, 2, ., 9 1, 2, ., 9 分别置分别置 成这成这 9 9 个矩阵元素,才能使得每一行、每一列、且主个矩阵元素,才能使得每一行、每一列、且主 、反对角线上元素相加都等于一个相同的数。、反对角线上元素相加都等于一个相同的数。 这样的矩阵称为这样的矩阵称为“ “魔方矩阵魔方矩阵” ”。用。用 MATLAB MATLAB 的的 magic() magic() 函数,我们可以由下面的命令立即生成这样的函数,我们可以由下面的命令立即生成这样的 矩阵:矩阵: A=magic(3) A=magic(3) A = A = 8 1 6 8 1 6 3 5 7 3 5 7 4 9 2 4 9 2 还可以由还可以由 B=magic(10) B=magic(10) 一次生成一次生成 10x10 10x10 的魔方的魔方 矩阵。如果想求出矩阵的行列式和特征值,可矩阵。如果想求出矩阵的行列式和特征值,可 以分别由以分别由 det(Bdet(B) ) 与与 eig(Beig(B) ) 立即得出结果,而同立即得出结果,而同 样的工作在样的工作在 C 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 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 straight away with the command X=X= 9.25009.2500 4.25004.2500 2.7500 2.7500 A = rand(1000,1000); % Creates a randomA = rand(1000,1000); % Creates a random % matrix A% matrix A b = rand(1000,1); % Creates a randomb = rand(1000,1); % Creates a random % vector b% vector b det(Adet(A) % Calculates the determinant of A) % Calculates the determinant of A tic, % Starts the time-watchtic, % Starts the time-watch x = inv(A)*b; % Solves the systemx = inv(A)*b; % Solves the system toctoc % Stops the watch % Stops the watch tic, y = Ab; tic, y = Ab; toctoc % Solves and times the system % Solves and times the system % with left division% with left division 前一节提到阵列产生的方式须个别键入其元素前一节提到阵列产生的方式须个别键入其元素 ,这方法只适用于阵列元素很少时。如果要建,这方法只适用于阵列元素很少时。如果要建 立的阵列的元素多立的阵列的元素多 达数百个,则须采用以下达数百个,则须采用以下 的数种方式的数种方式 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是取其发音与原来单 位矩阵符号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(size(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 在许多运算皆是以阵列为对象,即是 以阵列的元素为对象。因此除了+, - 这二个运算 外,其余的运算符号(乘、除、次方)皆须加上. 来强调阵列之间的运算。以下几个例子可以说明 阵列运算的特色。如果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=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, C B = 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); % 将A矩阵改成 4x2 的矩阵 C=reshape(A,1,8); % 将A矩阵改成 8x1 的矩阵 B, C B = 2 6 3 10 5 -1 -2 0 C = 2 5 6 1 3 -2 10 0 B, C B = 2 6 3 10 5 -1 -2 0 C = 2 5 6 1 3 -2 10 0 我们如果要将矩阵内的特定元素读取出来,或 是将特定元素以其它值取代,以下的函数diag, triu, tril 提供了这方面的功能。diag是只保留原 矩阵的主对角线 (main diagonal) 的元素,其余 的元素以零取代。triu, tril 则是分别产生上三角 形及下三角形矩阵,其余的元素也以零取代。 以下的例子详细的说明这三个函数的用法: 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=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; 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 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论