目录 第一章 MATLAB简介 11 MATLAB产生的历史背景 12 MATLAB的语言特点… 13 MATLAB和其他数学类科技软件的关系…… 1.3.2 MathCAD 1.3.3 Mat 14 MATLAB集成环境的组成 15小结… 11255666788 第二章 MATLAB的基础知识 2 MATLAB4x和 MATLAB5x的安装 211 MATLAB5x的安装 2.1.2 MATLAB4X的安装 22 MATLAB的目录结构 23 MATLAB环境 12 231 MATLAB的工作空间… 232 MATLAB的命令窗口 2.33 MATLAB的程序编辑器 234 MATLAB的变量浏览器. 2.3. MATLAB的路径浏览器… 23.6 MATLAB的帮助系统 24小结 第三章 MATLAB的数值计算 31矩阵 3.11矩阵定义 1.2矩阵的加减运算 3l3向量乘积和转置… 314矩阵乘法 315单位矩阵 316矩阵的 Kronecker乘积 3L7线性方程组 318矩阵的逆和伪逆 3.19矩阵的LU、QR和 Cholesky分解……… 3110矩阵的幂和指数函数 311特征值分解和奇异值分解 32多项式
精通 MATLAB5 321关于多项式的常用函数 322卷积和解卷积 3.23多项式曲线的拟合 324多项式的展开… 325多项式插值 33数据分析和统计 444 33.1基本的统计函数 332数据预处理.… 333拟合曲线 3.34傅更叶分析 34双重函数 34.1函数的文件表示 342函数的绘制 343求函数的极值和根 344数值积分 3.5常徵分方程的初值问题 3.6稀疏矩阵 361稀疏矩阵的存储和生成 362稀疏矩阵的查看… 363稀疏矩阵的运算 37M文件的编写 371M文件 372全局变量和局部变量…… 373数据类型… 374运算符 ““ 3.75循环控制, 37,6子函数 388 377下标引用,… … 378字符串的求值…… 379空矩阵 3.7H0错误信息和警告信息 371日期和时间函数 3.712用广和程序的交互 3713外壳函数( Shell Escape Function 3714程序的优化 3.8字符数组 :守4h+++ 3.9多维数组 3.9多维数组的生成 392多维数组元素的引用利数组的变形
393多维数组的运算 3.10结构数组和细胞数组 3.0.1结构数组 0 3.102细胞数组 3.11类和对象 311l类和对象概述… 3]2运算符超载 126 3113对象优先级… 3114类和对象的继承 312文件 312I文件的打开和关闭 3122二进制文件 136 3.123格式文件 313M文件的调试和文件评述 40 3131用调试器调试 3132在命令窗口中调试, 145 3133文件评述 3.14小结 150 第四章数据的可视化 41图形窗口. 151 4.2二维图形 42.1基本的绘图命令…… 42.2基本的绘图控制… 157 423图形标注 159 43三维图形 43.1基本绘图命令… 432网线图和表面图的着色 …162 43三维图的光照效果 165 434视角的设置 44特殊图形 44.1面积图和直方图 166 44.2饼图 170 44.3统计数直方图 444火柴杆图 172 44.5阶梯图 44.6矢量图 44.7等高线图 48交互绘图 449动画制作
精通 MATLAB5 4.5句柄图形, 45.1句柄图形的组织 45.2对象创建函数 453图形对象句柄的获得和删除 454图形对象的属性 45.5函数set和get的使用 190 456属性的默认值. 457图形输出对象的设置… 458提高编程效率的方法 459改变图形对象的内部函数 46像对象 461像的类型 4628位型像 …204 4.63像对象的属性 4564图形文件的读写 4.7块对象… 210 47.基本块操作 472多面块 4.7.3块的着色 215 4.8图对象…… 218 481图对象定位 482图对象的颜色控制 483图的渲染方式 484图上光标的形状 223 485图对象的打印,… 4.8.6图和用户的交互 49轴对象…… 226 4.9.1标注和外观… 492用文本对象标注 230 49.3轴在图中的定位… 494单根轴的控制 235 49.5有关自动设置的属性… 38 496一个窗口中多个轴对象 239 和颜色有关的属性 4.10打印图形 410.1从菜单中打印… 24 4102从命令行打印 245 410.3在不同应用程序间拷贝图形 46 41l小结
第五章 MATLAB Notebook 51 Notebook的使用环境 11打开和创建 M-book 5L2 Notebook菜单简介… 249 52 Notebook的使用 52.1细胞的定义和使用 522计算区、循环运行…… 523输出的控制 53小结 第六章 MATLAB的符号计算 61获取帮助 62符号计算入门 62.1符号变量和符号表达式 62.2格式转换 623实变量、复变量和抽象函数… 624函数sym的使用… 625默认符号变量. 626生成符号函数 63微积分 631微分 63,2求极限… 633积分 634级数求和 64化简和替代 641化简 64.2替代 278 65指定精度计算 …279 66线性代数 661线性代数运算 662特征值分解 663若当标准形 664奇异值分解 6.7解方程 671代数方程求解. 672微分方程求解… 68特殊数学函数 69 Maple函数的使用 610小结… 295
精通 MATLAB5 第七章创建用户界面 296 7.1简单用户界示例 7.].阳属性编辑器修改属性偵 7.12用图形控制面板添加按钮 71.3用事作过程编辑器编写代码…… 7.14激活图形 7.2界面绘制 72.1界面设计原则… 7.22图形界面的绘制过程 303 73执行 73.1句柄图形和属性编轴器… 732利用界面编辑工具绘制界面 305 7.33用事件过程编辑器编写代码 312 74小结 附录1 MATLAB函数分类索引… 321 常用命令( General Purpose Commands) 运算符和特殊算符 Operators and Special Characters) 322 逻辑函数( Logical Functions) 编程和调试 Language Constructs and Debuggin) 基本矩阵和数组运算( Elementary Matrices and Matrix Manipulation 基本数学函数 Elementary Math Functions 特妹数学函数( Specialized Math Functions) 坐标系统转换 Coordinate System Conversion) 矩阵函数数值线性代数( Matrix Functions-Numerical Linear algebra) 数据分析和傅里叶变换 Data Analysis and FourierTransform Functions 多项式和插值函数( Polynomials and Interpolation Functions)………… 稀疏矩阵函数( Sparsc Matrix Functions)… 声音处理函数( Sound Processing Functions)… 1333 字符串函数( Character String Functions) 低级O和文件函数( Low-Level File I/O Functions) 位函数( Bitwise Functions ∴35 结构数组函数( Structure functiong 对象函数 Object Functions) 细胞数组函数( Cell Array Functions) 多维数组函数( Multidimensional Array Functions) 附景2图形对象属性 37
第一章 MATLAB简介 1.1 MATLAB产生的历史背景 在70年代中期, Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用 EISPACK和 LINPACK的 FORTRAN子程序库。 EISPACK是特征值求解的 FORTRAN程 序库, LINPACK是解线性方程的程序库。在当时,这两个程序库代表矩阵运算的最高水 平 到70年代后期,身为美国 New Mexico大学计算机系系主任的 Cleve Moler,在给学 生讲授线性代数课程时,想教学生使用EISPACK和 LINPACK程序库,但他发现学生用 FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写 EISPACK和 LINPACK的接口程序 Cleve Moler给这个接口程序取名为 MATLAB,该名 为矩阵(matrix)和实验室(laboratory)两个英文单词的前三个字母的组合。在以后的数年里, MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传。 1983年春天, Cleve Moler到 Stanford大学讲学, MATLAB深深地吸引了工程师John Little John Little敏锐地觉察到 MATLAB在工程领域的广阔前景。同年,他和 Cleve Moler Steve Bangert一起,用C语言开发了第二代专业版。这一代的 MATLAB语言同时具备了 数值计算和数据图示化的功能。 1984年, Cleve Moler和 John Little成立了 MathWorks公司,正式把 MATLAB推向 市场,并继续进行 MATLAB的研究和开发。 在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两 大类。一类是数值计算型软件,如 MATLAB Xmath、 Gauss等,这类软件长于数值计算, 对处理大批数据效率高;另一类是数学分析型软件,如 Mathematica、 Maple等,这类软件 以符号计算见长,能给出解析解和任意精度解,其缺点是处理大量数据时效率较低。 Math Works公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先 在专业水平上开拓了其符号计算、文字处理、可视化建模和实时控制能力,开发了适合多 学科、多部门要求的新一代科技应用软件 MATLAB.经过多年的国际竞争, MATLAB已 经占据了数值型软件市场的主导地位。 在 MATLAB进入市场前,国际上的许多应用软件包都是直接以 FORTRAN和C语言 等编程语言开发的。这种软件的缺点是使用面窄、接口简陋、程序结构不开放以及没有标 准的基库,很难适应各学科的最新发展,因而很难推广MATLAB的出现,为各国科学 家开发学科软件提供了新的基础。在 MATLAB问世不久的80年代中期,原先控制领域里 的一些软件包纷纷被淘汰或在 MATLAB上重建。 MathWorks公司1993年推出了 MATLAB4.0版,1995年推出4.2C版(for Win33x), 1997年推出5.0版MATLAB5x较 MATLAB4x无论是界面还是内容都有长足的进展, 其帮助信息采用超文本格式和PDF格式,在 Netscape3.0或3.0及以上版本、 Acrobat
精通 MATLAB5 Reader中可以方便地浏览。 时至今日,经过 MathWorks公司的不断完善, MATLAB已经发展成为适合多学科、 多种工作平台的功能强劲的大型软件。本书稿完成之时, MATLAB已经推出了52版。在 国外, MATLAB已经经受了多年考验。在欧美等高校, MATLAB已经成为线性代数、自 动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本 教学工具;成为攻读学位的大学生、硕士生、博士生必须掌握的基本技能。在设计研究单 位和工业部门, MATLAB被广泛用于科学研究和解决各种具体问题。在国内,特别是在 工程界,笔者坚信, MATLAB一定会盛行起来。可以说,无论您从事工程方面的哪个学 科,都能在 MATLAB里找到合适的功能。表1-1为 MATLAB适合的工作平台 表1 MATLAB适合的工作平台 系统平台 IBM-PC Windows3.x、 Windows95、 Windows NT, OS2 MAC PowerMac HP9000 70O HP-UX 9.05 HP9o0300 HP-UX 9.03 sGIR40008000 Irix52和60 BM RS/600C AIX 3.2.5 DEC R3000 Tix 4.4 Linux 1.2 Sun os41和 Solaris24 DEC Alpha aXP Digital Unix 3.0, VMS 6.1 DEC VAX VMS 6.1 12 MATLAB的语言特点 种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于 其他语言的特点。正如同 FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件 资源进行操作一样,被称作为第四代计算机语言的 MATLAB,利用其丰富的函数资源 使编程人员从繁琐的程序代码中解放出来。笔者认为, MATLAB的最突出的特点就是简 洁。 MATLAB用更直观的、符合人们思维习惯的代码,代替了C和 FORTRAN语言的冗 长代码。 MATLAB给用户带来的是最直观、最简洁的程序开发环境。以下简单介绍一下 MATLAB的主要特点。 ①语言简洁紧凑,使用方便灵活,库函数极其丰富。 MATLAB程序书写形式自由, 利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库 函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用 MATLAB进行科 技开发是站在专家的肩膀上 具有 FORTRAN和C等高级计算机语言知识的读者可能已经注意到,如果用 FORTRAN 或C语言去编写程序,尤其当涉及矩阵运算和画图时,编程会很麻烦。例如,如果用户想
第一章 MATLAB简介 求解一个线性代数方程,就得编写一个程序块读入数据,然后再使用一种求解线性方程的 算法(例如追赶法)编写一个程序块来求解方程,最后再输出计算结果。在求解过程中 最麻烦的要算第二部分。解线性方程的麻烦在于要对矩阵的元素作循环,选择稳定的算法 以及代码的调试都不容易。即使有部分源代码,用户也会感到麻烦,且不能保证运算的稳 定性。解线性方程的程序用 FORTRAN和C这样的高级语言编写至少需要好几十行。再如 用双步QR方法求解矩阵特征值,如果用 FORTRAN编写,至少需要四百多行,调试这种 几百行的计算程序可以说很困难。以下为用 MATLAB编写以上两个小程序的具体过程。 用 MATLAB求解下列方程,并求矩阵A的特征值。 32134567 Ax=b,其中:A=43235465,b=|3 9834735 解为:x=AWb;设A的特征值组成的向量为e,e=eigA) 可见, MATLAB的程序极其简短。更为难能可贵的是, MATLAB甚至具有一定的智 能水平,比如上面的解方程, MATLAB会根据矩阵的特性选择方程的求解方法,所以用 户根本不用怀疑 MATLAB的准确性。 ②运算符丰富。由于 MATLAB是用C语言编写的, MATLAB提供了和C语言几乎 样多的运算符,灵活使用 MATLAB的运算符将使程序变得极为简短,具体运算符见附 表 ③ MATLAB既具有结构化的控制语句(如for循环、 while循环、 break语句和if语 句),又有面向对象编程的特性。 ④语法限制不严格,程序设计自由度大。例如,在 MATLAB里,用户无需对矩阵预 定义就可使用。 ⑤程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上 运行。表1-1中列出的机型和操作系统都可以运行 MATLAB ⑥ MATLAB的图形功能强大。在 FORTRAN和C语言里,绘图都很不容易,但在 MATLAB里,数据的可视化非常简单。 MATLAB还具有较强的编辑图形界面的能力 ⑦ MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于 MATLAB 的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。 功能强劲的工具箱是 MATLAB的另一重大特色。 MATLAB包含两个部分:核心 部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又可分为两类 功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、图示建模仿 真功能、文字处理功能以及与硬件实时交互功能。功能性工具箱能用于多种学科。而学科 性工具箱是专业性比较强的,如 control、 toolbox、 signal processing toolbox, communication toolbox等。这些工具箱都是由该领域内的学术水平很高的专家编写的,所以用户无需编写 自己学科范围内的基础程序,而直接进行高、精、尖的研究。表1-2列出了 MATLAB的 核心部分及其工具箱等产品系列的主要应用领域
精通 MATLAB5 表12 MATLAB的工具箱及主要应用领域 应用领域 系数信通金工「土|图 工具箱名称 统据号信融程木形 控分处系系|数工可 制析|理统|统学程|视 化 MATLAB核心 Notebook MATLAB Complier :::::: MATLAB C Math Library Simulink dlic math ::::::: Simulink accelerator Communication Control System System identification Fuzzy logical High-order Spectral analys Hel predictive Control NGA Foundation MMLE3 Identification LMI Control Model Predictive Control QFT Control Design obust control Statistics 。f。f。 DSP Blockset Fixed-Point Blockset Nonlinear Control Design Blockset RtW Ada extention