MATLAB简介.doc

上传人:hw****26 文档编号:3219921 上传时间:2019-05-26 格式:DOC 页数:28 大小:120.50KB
下载 相关 举报
MATLAB简介.doc_第1页
第1页 / 共28页
MATLAB简介.doc_第2页
第2页 / 共28页
MATLAB简介.doc_第3页
第3页 / 共28页
MATLAB简介.doc_第4页
第4页 / 共28页
MATLAB简介.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、1MATLAB 简介http:/ 1. MATLAB 的概况MATLAB 是矩阵实验室( Matrix Laboratory)之意。除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。MATLAB 的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用 MATLAB 来解算问题要比用 C,FORTRAN 等语言完相同的事情简捷得多.当前流行的 MATLAB 5.3/Simulink 3.0 包括拥有数百个内部函数的主包和三十几种工具包(Toolbox).工具包又可以分为功能性工具包和学科工具包.功能工具包用来扩充 MATLAB

2、 的符号计算,可视化建模仿真,文字处理及实时控制等功能.学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类.开放性使 MATLAB 广受用户欢迎 .除内部函数外,所有 MATLAB 主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包.2. MATLAB 产生的历史背景在 70 年代中期,Cleve Moler 博士和其同事在美国国家科学基金的资助下开发了调用EISPACK 和 LINPACK 的 FORTRAN 子程序库.EISPACK 是特征值求解的 FOETRAN 程序库,LINPACK 是解线性方程的程序

3、库.在当时,这两个程序库代表矩阵运算的最高水平.到 70 年代后期,身为美国 New Mexico 大学计算机系系主任的 Cleve Moler,在给学生讲授线性代数课程时,想教学生使用 EISPACK 和 LINPACK 程序库 ,但他发现学生用 FORTRAN 编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写 EISPACK 和 LINPACK 的接口程序.Cleve Moler 给这个接口程序取名为 MATLAB,该名为矩阵 (matrix)和实验室(labotatory)两个英文单词的前三个字母的组合.在以后的数年里,MATLAB 在多所大学里作为教学辅助软件使用,并作

4、为面向大众的免费软件广为流传.1983 年春天,Cleve Moler 到 Standford 大学讲学,MATLAB 深深地吸引了工程师 John Little.John Little 敏锐地觉察到 MATLAB 在工程领域的广阔前景.同年,他和 Cleve Moler,Steve Bangert 一起,用 C 语言开发了第二代专业版.这一代的 MATLAB 语言同时具备了数值计算和数据图示化的功能.1984 年,Cleve Moler 和 John Little 成立了 Math Works 公司,正式把 MATLAB 推向市场,并继续进行 MATLAB 的研究和开发 .在当今 30 多个

5、数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类.一类是数值计算型软件,如 MATLAB,Xmath,Gauss 等,这类软件长于数值计算,对处理大批数据效率高; 另一类是数学分析型软件,Mathematica,Maple 等,这类软件以符号计算见长 ,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低.MathWorks 公司顺应多功能需求之潮流 ,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件 MATLAB.经过多年的国际竞争,MATLAB 以经占据2了数值软

6、件市场的主导地位.在 MATLAB 进入市场前,国际上的许多软件包都是直接以 FORTRANC 语言等编程语言开发的。这种软件的缺点是使用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。MATLAB 的出现,为各国科学家开发学科软件提供了新的基础。在 MATLAB 问世不久的 80 年代中期,原先控制领域里的一些软件包纷纷被淘汰或在 MATLAB 上重建。MathWorks 公司 1993 年推出了 MATLAB 4。0 版,1995 年推出 4。2C 版(for win3。X)1997 年推出 5。0 版。1999 年推出 5。3 版。MATLAB

7、5。X 较 MATLAB 4。X 无论是界面还是内容都有长足的进展,其帮助信息采用超文本格式和 PDF 格式,在 Netscape 3。0 或 IE 4。0 及以上版本,Acrobat Reader 中可以方便地浏览。时至今日,经过 MathWorks 公司的不断完善,MATLAB 已经发展成为适合多学科,多种工作平台的功能强大大大型软件。在国外,MATLAB 已经经受了多年考验。在欧美等高校,MATLAB 已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生,硕士生,博士生必须掌握的基本技能。在设计研究单位和工业部门

8、,MATLAB 被广泛用于科学研究和解决各种具体问题。在国内,特别是工程界,MATLAB 一定会盛行起来。可以说,无论你从事工程方面的哪个学科,都能在MATLAB 里找到合适的功能。2MATLAB 的语言特点一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同 FORTRAN 和 C 等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的 MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB 最突出的特点就是简洁。 MATLAB 用更直观的,符合人们思维习惯的代码,代替了 C 和 FO

9、RTRAN 语言的冗长代码。MATLAB 给用户带来的是最直观,最简洁的程序开发环境。以下简单介绍一下 MATLAB 的主要特点。1) 。语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB 程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用 MATLAB 进行科技开发是站在专家的肩膀上。具有 FORTRAN 和 C 等高级语言知识的读者可能已经注意到,如果用 FORTRAN 或 C 语言去编写程序,尤其当涉及矩阵运算和画图时,编程会很麻烦。例如,如果用户想求解一个线性代数方程,就得

10、编写一个程序块读入数据,然后再使用一种求解线性方程的算法(例如追赶法)编写一个程序块来求解方程,最后再输出计算结果。在求解过程中,最麻烦的要算第二部分。解线性方程的麻烦在于要对矩阵的元素作循环,选择稳定的算法以及代码的调试动不容易。即使有部分源代码,用户也会感到麻烦,且不能保证运算的稳定性。解线性方程的程序用 FORTRAN 和 C 这样的高级语言编写,至少需要四百多行,调试这种几百行的计算程序可以说很困难。以下用 MATLAB 编写以上两个小程序的具体过程。MATLAB 求解下列方程,并求解矩阵 A 的特征值。Ax=b,其中:A= 32 13 45 67323 79 85 1243 23 5

11、4 6598 34 71 35b= 1234解为:x=Ab;设 A 的特征值组成的向量 e,e=eig(A ) 。可见,MATLAB 的程序极其简短。更为难能可贵的是,MATLAB 甚至具有一定的智能水平,比如上面的解方程,MATLAB 会根据矩阵的特性选择方程的求解方法,所以用户根本不用怀疑MATLAB 的准确性。2)运算符丰富。由于 MATLAB 是用 C 语言编写的,MATLAB 提供了和 C 语言几乎一样多的运算符,灵活使用 MATLAB 的运算符将使程序变得极为简短。3)MATLAB 既具有结构化的控制语句(如 for 循环,while 循环,break 语句和 if 语句) ,又有

12、面向对象编程的特性。4)程序限制不严格,程序设计自由度大。例如,在 MATLAB 里,用户无需对矩阵预定义就可使用。5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。6)MATLAB 的图形功能强大。在 FORTRAN 和 C 语言里,绘图都很不容易,但在 MATLAB里,数据的可视化非常简单。MATLAB 还具有较强的编辑图形界面的能力。7)MATLAB 的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于 MATLAB 的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。8)功能强大的工具箱是 MATLAB 的另一特色。MATLAB

13、包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学科。而学科性工具箱是专业性比较强的,如control,toolbox,signl proceessing toolbox,commumnication toolbox 等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高,精,尖的研究。9)源程序的开放性。开放性也许是 MATLAB 最受人们欢迎的特点。除

14、内部函数以外,所有MATLAB 的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。MATLAB 入门教程41MATLAB 的基本知识1-1、基本运算与函数 在 MATLAB 下进行基本数学运算,只需将运算式直接打入提示号()之後,并按入 Enter 键即可。例如: (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB 会将运算结果直接存入一变数 ans,代表 MATLAB 运算後的答案(Answer)并显示其数值於萤幕上。小提示: “是 MATLAB 的提示符号(Prompt) ,但在 PC 中文视窗系统下,由於编码方

15、式不同,此提示符号常会消失不见,但这并不会影响到 MATLAB 的运算结果。 我们也可将上述运算式的结果设定给另一个变数 x: x = (5*2+1.3-0.8)*102/25 x = 42 此时 MATLAB 会直接显示 x 的值。由上例可知,MATLAB 认识所有一般常用到的加(+ ) 、减(-) 、乘(*) 、除(/)的数学运算符号,以及幂次运算( ) 。 小提示: MATLAB 将所有变数均存成 double 的形式,所以不需经过变数宣告(Variable declaration) 。MATLAB 同时也会自动进行记忆体的使用和回收,而不必像 C 语言,必须由使用者一一指定.这些功能使

16、的 MATLAB 易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让 MATLAB 每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*42); 若要显示变数 y 的值,直接键入 y 即可: y y =-0.0045 在上例中,sin 是正弦函数, exp 是指数函数,这些都是 MATLAB 常用到的数学函数。下表即为 MATLAB 常用的基本数学函数及三角函数: 小整理:MATLAB 常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复 数 z 的相角(Phase angle) 5s

17、qrt(x):开平方 real(z):复数 z 的实部 imag(z):复数 z 的虚 部 conj(z):复数 z 的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数 x 化为分数表示 rats(x):将实数 x 化为多项分数展开 sign(x):符号函数 (Signum function)。 当 x0 时,sign(x)=1。 小整理:MATLAB 常用的三角函数 sin(x):正弦函数 cos(x):馀弦函数 tan(x)

18、:正切函数 asin(x):反正弦函数 acos(x):反馀弦函数 atan(x):反正切函数 atan2(x,y):四象限的反正切函数 sinh(x):超越正弦函数 cosh(x):超越馀弦函数 tanh(x):超越正切函数 6asinh(x):反超越正弦函数 acosh(x):反超越馀弦函数 atanh(x):反超越正切函数 变数也可用来存放向量或矩阵,并进行各种运算,如下例的列向量(Row vector )运算: x = 1 3 5 2; y = 2*x+1 y = 3 7 11 5 小提示:变数命名的规则 1.第一个字母必须是英文字母 2.字母间不可留空格 3.最多只能有 19 个字母

19、,MATLAB 会忽略多馀字母 我们可以随意更改、增加或删除向量的元素: 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 的第二至第四个

20、元素来做运算 ans = 6 1 -1 在上例中,2:4 代表一个由 2、3、4 组成的向量若对 MATLAB 函数用法有疑问,可随时使用 help 来寻求线上支援(on-line help):help linspace 小整理:MATLAB 的查询命令 7help:用来查询已知命令的用法。例如已知 inv 是用来计算反矩阵,键入 help inv 即可得知有关 inv命令的用法。 (键入 help help 则显示 help 的用法,请试看看!) lookfor:用来寻找未知的命令。例如要寻找计算反矩阵的命令,可键入 lookfor inverse,MATLAB 即会列出所有和关键字 inv

21、erse相关的指令。找到所需的命令後 ,即可用 help 进一步找出其用法。 (lookfor 事实上是对所有在搜寻路径下的 M 档案进行关键字对第一注解行的比对,详见後叙。 ) 将列向量转置(Transpose)後,即可得到行向量( Column vector): z = x z = 4.0000 5.2000 6.4000 7.6000 8.8000 10.0000 不论是行向量或列向量,我们均可用相同的函数找出其元素个数、最大值、最小值等: length(z) % z 的元素个数 ans = 6 max(z) % z 的最大值 ans = 10 min(z) % z 的最小值 ans =

22、 4 小整理:适用於向量的常用函数有: min(x): 向量 x 的元素的最小值 max(x): 向量 x 的元素的最大值 mean(x): 向量 x 的元素的平均值 median(x): 向量 x 的元素的中位数 std(x): 向量 x 的元素的标准差 diff(x): 向量 x 的相邻元素的差 sort(x): 对向量 x 的元素进行排序(Sorting ) 8length(x): 向量 x 的元素个数 norm(x): 向量 x 的欧氏(Euclidean)长度 sum(x): 向量 x 的元素总和 prod(x): 向量 x 的元素总乘积 cumsum(x): 向量 x 的累计元素总

23、和 cumprod(x): 向量 x 的累计元素总乘积 dot(x, y): 向量 x 和 y 的内 积 cross(x, y): 向量 x 和 y 的外积 (大部份的向量函数也可适用於矩阵,详见下述。 ) 若要输入矩阵,则必须在每一列结尾加上分号(;) ,如下例: A = 1 2 3 4; 5 6 7 8; 9 10 11 12; A = 1 2 3 4 5 6 7 8 9 10 11 12 同样地,我们可以对矩阵进行各种处理: A(2,3) = 5 % 改变位於第二行,第三列的元素值 A = 1 2 3 4 5 6 5 8 9 10 11 12 B = A(2,1:3) % 取出部份矩阵

24、B B = 5 6 5 A = A B % 将 B 转置後以列向量并入 A A = 91 2 3 4 5 5 6 5 8 6 9 10 11 12 5 A(:, 2) = % 删除第二列(:代表所有行) A = 1 3 4 5 5 5 8 6 9 11 12 5 A = A; 4 3 2 1 % 加入第四行 A = 1 3 4 5 5 5 8 6 9 11 12 5 4 3 2 1 A(1 4, :) = % 删除第一和第四行(:代表所有列) A = 5 5 8 6 9 11 12 5 这几种矩阵处理的方式可以相互叠代运用,产生各种意想不到的效果,就看各位的巧思和创意。 小提示:在 MATLA

25、B 的内部资料结构中 ,每一个矩阵都是一个以行为主(Column-oriented )的阵列(Array)因此对於矩阵元素的存取,我们可用一维或二维的索引(Index)来定址。举例来说,在上述矩阵 A 中,位於第二列、第三行的元素可写为 A(2,3) (二维索引)或 A(6)(一维索引,即将所有直行进行堆叠後的第六个元素) 。 此外,若要重新安排矩阵的形状,可用 reshape 命令: B = reshape(A, 4, 2) % 4 是新矩阵的列数,2 是新矩阵的行数 B = 5 8 9 12 105 6 11 5 小提示: A(:)就是将矩阵 A 每一列堆叠起来,成为一个行向量,而这也是

26、MATLAB 变数的内部储存方式。以前例而言,reshape(A, 8, 1)和 A(:)同样都会产生一个 8x1 的矩阵。 MATLAB 可在同时执行数个命令,只要以逗号或分号将命令隔开: x = sin(pi/3); y = x2; z = y*10,z = 7.5000 若一个数学运算是太长,可用三个句点将其延伸到下一行: z = 10*sin(pi/3)* . sin(pi/3); 若要检视现存於工作空间(Workspace)的变数,可键入 who: who Your variables are: testfile x 这些是由使用者定义的变数。若要知道这些变数的详细资料,可键入: whos Name Size Bytes Class A 2x4 64 double array B 4x2 64 double array ans 1x1 8 double array x 1x1 8 double array y 1x1 8 double array z 1x1 8 double array Grand total is 20 elements using 160 bytes 使用 clear 可以删除工作空间的变数: clear A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。