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

上传人:sh****n 文档编号:8621276 上传时间:2020-03-30 格式:PPT 页数:62 大小:219.05KB
返回 下载 相关 举报
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 2 area pi r 2 键入面积算式 交谈式的输入 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 5f n area 在二个单引号间包括输出的字串Theareais 接著是输出数据的格式 8 5f 再来是跳行符号以避免下一个输出数据或是提示符号也挤在同一行 最后键入要输出的数据名area Theareais12 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 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的主要线性代数运算如表A 1所示为常用的矩阵和线性代数运算函数 用户可以用helpmatfun获得更多内容 表A 1常用线性代数函数 上面所列的都是有关矩阵的操作函数 如eig A 可求出A的特征根及其特征向量 具体执行方法为 输入A矩阵 A 01 6 5 A 01 6 5E eig A 求出方阵A的特征根EE 2 3 求出方阵A的特征向量V及其A的对角型D V 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 A b 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 可以产生一个m m的正方矩阵 而zeros m n 产生的是m n的矩阵 也可以使用这三个函数将一m n矩阵原来元素全部取代成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 100010 C 12 34 56 D eye size C 阵列运算的特色 MATLAB在许多运算皆是以阵列为对象 即是以阵列的元素为对象 因此除了 这二个运算外 其余的运算符号 乘 除 次方 皆须加上 来强调阵列之间的运算 以下几个例子可以说明阵列运算的特色 如果a b各代表二个不同的阵列 a与b之间的运算是元素对元素的方式 例如 x 1 5 x是纯量 y exp x 2 exp x 2 是纯量运算 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 x 3 2 x 2 x 6 3 deno x 2 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 4 A 13573691243211234 B triu A B 13570691200210004 A 1 2 7 3 3 12 4 1 1 1 4 A 13573691243211234 C triu A 1 C 13573691203210034 D triu A 3 D 0007000000000000 B tril A B 1000360043201234 C tril A 1 C 0000300043001230 D tril A 3 D 13573691243211234 我们在前面已说明过MATLAB的运算是以阵列 array 及矩阵 matrix 方式在做运算 而这二者在MATLAB的基本运算性质不同 阵列强调元素对元素的运算 而矩阵则采用线性代数的运算方式 我们就来说明矩阵运算的特点 以下将阵列及矩阵的运算符号及其意义列出 利用这些运算符号即可进行以下的矩阵运算 A 251 738 4521 16130 A A的转置矩阵A 274165351318210 A 4 13 B 252 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 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 A 2 矩阵次方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 I f 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 但是其列数为3 inv 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 7500 Q 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交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!