
本书以MATLAB 7为版本,由浅入深地介绍MATLAB的工作环境、基本语法、数值运算、符号运算、二维和三维图像创建与编辑、高级图形图像处理、句柄图形、图形用户操作接口(GUI)、程序设计与调试、M文件的使用、MATLAB编译器、Simulink交互式仿真集成环境的应用,以及MATLAB的外围功能和应用程序接口等内容;并通过MATLAB在高等数学、信号处理及数字通信、数字图像处理方面的应用,介绍MATLAB在实际中的应用。 本书通俗易懂,内容由浅入深,并结合大量实例进行仿真和分析,可帮助读者快速理解与掌握MATLAB软件的使用方法和编程技巧。随书光盘中附有全部案例的源代码,并有大量教学视频,方便读者学习与提高。 读者对象:本书可作为高等学校MATLAB教学用书,其丰富的教学视频也适合作为读者的自学用书,还可供广大科研工作者、工程技术人员作为解决实际问题的参考书。
前 言 MATLAB是美国MathWorks公司出品的商业性数学应用软件,其强大的数值计算功能、简洁易学的语句、丰富的函数及工具箱获得了广大科研工作者和工程技术人员的一致认可。MATLAB语言俨然已经成为世界上最流行的计算语言之一,并被誉为第四代编程语言,它主要应用于算法研究、数据可视化、数据分析及数值计算等各个领域。 MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件,它在数学类科技应用软件中,特别是在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,广泛应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域,被认为是进行高效研究与开发的首选计算工具软件。近年来,MATLAB的应用领域已经拓展到了各个行业的很多学科,在各大公司、科研机构和高校日益普及,得到广泛应用,其自身也因此得到了迅速发展,功能不断扩充,现已发展至MATLAB 7.11版本。 当前市面上有很多种MATLAB书籍,书中的各自侧重点及所适合的读者都各不相同,存在一定的局限性。部分MATLAB书籍只讲解了最基本的入门操作及基础知识,还不能真正为读者在以后的工程实践中提供最好的帮助;有些书籍则主要是面向业内专业人士,内容相对晦涩难懂,而且往往仅限于在某个很窄的工程应用领域进行分析介绍,很难拓展到其他分支学科中;而从国外引入的部分书籍,在翻译的过程中,有的只是进行简单的字面翻译,甚至只是把所有的知识点罗列在一起,不便于读者的学习。在作者的教学实践中,深深体会到一本合适的MATLAB教材对于初学者甚至专业人士的重要性。因此,本书作者决心为MATLAB初学者甚至专业人士量身定做一本合适的教材。 本书由浅入深地讲述MATLAB语言的知识点,并以工程实例讲述科研和工程中常用算法的MATLAB编程实现。书中所有的知识点都以MATLAB 7.x为版本,内容新颖,裁减得当,兼顾教学与科研,基本覆盖了从事MATLAB工程研究所需要的知识点。全书分为三大部分,共12章,各部分内容简介如下。 第一部分为MATLAB基础篇,由第1章~第4章构成,各章内容分别如下所述。 【第1章 初识MATLAB】:本章主要向读者介绍MATLAB软件的知识背景和发展历程,着重阐述MATLAB软件的安装和启动操作,并简单描述MATLAB的主要窗口界面和基本的使用功能。 【第2章 MATLAB基础知识】:本章着重向读者介绍MATLAB软件中常用的数据类型和基本运算操作,在此基础上还介绍了系统路径的查找和设置,以及系统文件的相关操作。 【第3章 MATLAB数值运算】:本章向读者介绍MATLAB系统中矩阵的相关操作,如矩阵的运算、分解、特殊矩阵的生成和操作,以及数组、字符串和多项式的操作。在本章的最后,还介绍了有关数值逻辑运算的相关知识。 【第4章 MATLAB中的符号运算】:本章主要介绍MATLAB系统中符号对象的生成、与数值之间的转换,以及符号在数值运算、矩阵运算和图像运算中的基本应用。 第二部分为MATLAB提高篇,由第5章~第9章构成,各章内容分别如下所述。 【第5章 图形图像处理在MATLAB中的应用】:本章通过具体的图形图像处理实例,着重向读者介绍MATLAB系统中二维图形、三维图形和四维图形绘制的基本方法。 【第6章 高级图形图像处理】:本章将进一步介绍有关高级图形图像处理的相关知识,包括图形图像的色彩、视角、光照、打印输出,图形界面的相关操作,句柄图形的相关概念,以及图形用户接口GUI的基本操作。 【第7章 MATLAB程序设计】:本章主要介绍MATLAB系统中M文件的基本概念和结构,基本的控制语句,函数与变量,子函数及其调用,函数句柄和程序的调试与优化等基本编程知识。 【第8章 MATLAB编译器】:本章着重介绍有关MATLAB编译器的基本配置和它的基本使用方法。 【第9章 Simulink交互式仿真集成环境】:本章详细介绍有关Simulink在模型建立及系统仿真过程中的应用,包括系统模型的创建、子系统及其封装、模型的运行和仿真,最后,还介绍了有关S-函数的基本概念。 第三部分为MATLAB高级篇,由第10章~第12章构成,各章内容分别如下所述。 【第10章 MATLAB在高等数值分析中的应用】:本章详细介绍MATLAB系统中函数的插值与拟合,函数的数值积分,线性和非线性方程组的求解方法,常微分方程的求解,以及复变函数的处理。 【第11章 MATLAB在工程设计中的应用】:本章分两个模块,通过具体的实例分别介绍了MATLAB在数字信号处理及在图形图像处理中的工程实际应用。 【第12章 MATLAB应用程序接口】:本章主要介绍MATLAB系统分别在C语言和Fortran语言平台下MEX文件的基本应用;并介绍了MATLAB系统中的引擎技术,与Java软件的接口,以及DDE和ActiveX技术的基本概念。 本书的讲解深入浅出,工程实例选取得当,注重与专业知识的结合,有助于读者在学习书本知识的同时,能更深入透彻地理解专业知识。书中大部分的图形都是由MATLAB产生的,保留了MATLAB中的图形格式,使得读者在计算机中见到的图形与书中一致,为读者在阅读过程中提供参照比对。 国为MATLAB软件程序段中不能显示斜体变量符号,为便于统一识别,全书所有公式中的变量也用正体符号表示,特此说明。 在本书的撰写过程中,得到了很多同事、友人的帮助。他们不仅为本书的编写提供了珍贵的MATLAB参考资料,并且综合自身第一线的课堂讲授经验,为本书提供了不可多得的宝贵意见。本书还融合了作者自身在平时科研项目中遇到的实战经历,并把它从整个项目体系中抽出来,用于教材中知识点的示例讲解,这让读者能在学习书本知识的同时还可以亲身接触到一定的工程实践内容,从而能更好地提高自己的动手操作能力,为今后从事实际的科研工作打好扎实的基础。 本书从最初的酝酿、编写到最终的出版,得到了南京林业大学汽车与交通工程学院各位领导、老师的大力支持,同时他们也为书中的内容提出了很多宝贵建议,在此深表谢意。同时,更要感谢我的家人,如果没有他们在背后默默的支持,这本书也就不能如期完成。 本书主要由袁东、肖广兵编写。在编写过程中得到贾东永的热心指导,张玉兰、陈小亮、张国栋、张国华、李华、王林、李志国、陈晨、冯慧、徐红、吴文林、周建国、张建、刘海涛、姚琳、何武、周慧、林杰、陈兵、李建国等也参与了本书的编写。 由于时间紧迫,加之作者水平所限,书中难免会有疏漏和错误之处,我们真诚地恳请各位读者、同行提出批评和指正,同时也希望和大家一起学习与交流。 编 著 者 2011年5月
目 录 第1章 初识MATLAB 1 1.1 MATLAB 7.X简介 1 1.1.1 MATLAB的发展历程和应用 2 1.1.2 MATLAB 7.x的特性 3 1.1.3 MATLAB 7.x的工作环境 4 1.1.4 MATLAB 7.x的网络资源 5 1.2 MATLAB 7.X的安装与启动 6 1.2.1 MATLAB 7.x的硬件配置 6 1.2.2 MATLAB 7.x 的安装 7 1.2.3 MATLAB 7.x 的启动与退出 10 1.2.4 MATLAB 7.x 的异常处理 12 1.3 MATLAB 7.X桌面平台 14 1.3.1 MATLAB 7.x的主菜单 14 1.3.2 MATLAB 7.x的工具栏 15 1.3.3 MATLAB 7.x的主要窗口 15 1.3.4 MATLAB 7.x的帮助系统 19 第2章 MATLAB基础知识 26 2.1 MATLAB 7.X中的标号 26 2.1.1 MATLAB 7.x中的标号 26 2.1.2 MATLAB 7.x中的运算法则 29 2.1.3 MATLAB 7.x中的常见命令 30 2.2 MATLAB 7.X的基本数据类型 31 2.2.1 常量和变量 31 2.2.2 向量与矩阵 37 2.3 MATLAB 7.X的文件管理 47 2.3.1 文件的打开与关闭 47 2.3.2 文件的读/写操作 47 2.3.3 数据文件的定位 48 2.4 MATLBA 7.X的路径与搜索 49 2.5 MATLAB 7.X实例 51 2.6 MATLAB 7.X的学习方法 55 第3章 MATLAB数值运算 57 3.1 MATLAB 7.X中的矩阵运算 57 3.1.1 矩阵的函数运算 57 3.1.2 矩阵的分解 67 3.1.3 特殊矩阵的生成 73 3.1.4 特殊矩阵的操作 80 3.2 MATLAB 7.X中的数组 86 3.2.1 数组的生成 86 3.2.2 数组的基本运算 86 3.2.3 数组的其他操作 91 3.3 MATLAB 7.X中的字符串 93 3.3.1 字符串的生成 93 3.3.2 字符串的操作 95 3.3.3 字符串的运算 99 3.4 MATLAB 7.X中的多项式 108 3.4.1 多项式的生成 109 3.4.2 多项式的运算 111 3.5 MATLAB 7.X中的关系运算与逻辑运算 117 3.5.1 关系运算 118 3.5.2 逻辑运算 119 3.5.3 关系运算与逻辑运算的关系 120 3.6 MATLAB 7.X中的数值运算 120 第4章 MATLAB中的符号运算 125 4.1 符号运算的功能 125 4.2 符号对象的生成 126 4.2.1 创建符号对象 126 4.2.2 符号表达式的化简 131 4.2.3 符号表达式的替换 137 4.3 符号与数值之间的转换 140 4.3.1 digits函数 140 4.3.2 vpa函数 141 4.3.3 numeric函数 142 4.4 符号函数的运算 142 4.4.1 复合函数的运算 143 4.4.2 反函数的运算 144 4.5 符号矩阵 144 4.5.1 符号矩阵的运算 145 4.5.2 符号表达式的积分与微分 148 4.5.3 符号积分变换 156 4.6 符号运算在数值分析中的应用 160 4.6.1 代数方程组的符号求解法 161 4.6.2 常微分方程的符号求解法 163 4.7 符号函数的二维图形 164 4.7.1 绘图函数ezplot 164 4.7.2 绘图函数fplot 165 第5章 图形图像处理在 MATLAB中的应用 168 5.1 MATLAB中的基本绘图知识 168 5.1.1 MATLAB中的图形窗口 168 5.1.2 MATLAB绘图基础 169 5.2 二维图形图像处理 170 5.2.1 二维图形命令 171 5.2.2 特殊的二维图形 179 5.3 三维图形图像处理 200 5.3.1 三维图形命令 200 5.3.2 特殊的三维图形 210 5.4 四维图形图像处理 217 5.5 图形图像处理的基本命令 218 5.5.1 图形的标注 218 5.5.2 图形数据的截取 229 第6章 高级图形图像处理 232 6.1 高级图形图像处理 232 6.1.1 图形图像的色彩控制 232 6.1.2 图形图像的视角与光照 242 6.1.3 图形图像的整体处理 252 6.1.4 图形图像的打印和输出 256 6.2 MATLAB中的图形界面 257 6.2.1 图形窗口的创建与控制 257 6.2.2 图形窗口的菜单操作 258 6.2.3 图形窗口中的工具栏 276 6.3 MATLAB中的句柄图形 276 6.3.1 句柄图形的概念 277 6.3.2 句柄图形的对象 277 6.3.3 通用函数get与set 284 6.3.4 系统的默认属性 290 6.4 图形用户操作接口GUI 292 6.4.1 属性设计器 292 6.4.2 控件布置编辑器 294 6.4.3 网格标尺设置编辑器 295 6.4.4 菜单编辑器 295 6.4.5 对象浏览器 296 6.4.6 GUI应用属性设置编辑器 296 6.4.7 GUI向导编辑器 297 6.4.8 用户图形界面的设计 299 第7章 MATLAB程序设计 312 7.1 MATLAB中M文件的基础知识 312 7.1.1 M文件的特点 313 7.1.2 脚本形式的M文件 315 7.1.3 函数形式的M文件 318 7.1.4 子函数与私有目录 323 7.2 M文件中的控制语句 323 7.2.1 顺序结构程序 324 7.2.2 循环结构程序 324 7.2.3 选择语句 326 7.2.4 分支语句 330 7.2.5 其他控制流语句 332 7.3 变量与函数 337 7.3.1 函数变量的分类和作用域 337 7.3.2 全局变量 339 7.3.3 永久变量 339 7.4 子函数与函数调用 340 7.4.1 主函数 340 7.4.2 匿名函数 340 7.4.3 嵌套式函数 341 7.4.4 子函数 343 7.4.5 局部函数 343 7.5 函数句柄 344 7.5.1 函数句柄的创建 344 7.5.2 函数句柄的调用 345 7.5.3 函数句柄的操作 346 7.6 程序设计的辅助函数 347 7.6.1 执行函数 347 7.6.2 容错函数 349 7.6.3 时间控制函数 351 7.7 程序的调试和优化 359 7.7.1 程序的调试 359 7.7.2 程序的优化 361 第8章 MATLAB编译器 364 8.1 编译器概述 364 8.2 编译器的安装和配置 365 8.2.1 编译器的安装 366 8.2.2 编译器的配置 366 8.3 MATLAB编译器的使用方法 368 8.3.1 编译的过程 368 8.3.2 MCR的安装 369 8.3.3 编译命令mcc 369 8.3.4 创建独立的应用程序 370 第9章 SIMULINK交互式仿真集成环境 378 9.1 SIMULINK的实例 378 9.1.1 Simulink的基本概念 381 9.1.2 Simulink的工作环境 382 9.1.3 Simulink的工作原理 388 9.1.4 Simulink中的数据类型 389 9.1.5 Simulink系统中的模块和模块库 399 9.2 模型的创建 400 9.2.1 Simulink模块的基本操作 401 9.2.2 创建模型的基本步骤 402 9.2.3 模型文件的格式 403 9.3 子系统及其封装 403 9.3.1 创建子系统 404 9.3.2 封装子系统 407 9.3.3 定义用户自己的模块库 410 9.4 模型的运行和仿真 411 9.4.1 使用窗口运行模型的仿真 411 9.4.2 仿真参数的设置 411 9.4.3 改善仿真的性能和精度 415 9.5 S-函数 416 9.5.1 S-函数的概念 417 9.5.2 S-函数的功能描述 417 9.5.3 S-函数的工作原理 417 第10章 MATLAB在高等数值分析中的应用 427 10.1 函数的插值与拟合 427 10.1.1 最小二乘法实现曲线的拟合 428 10.1.2 曲线的插值 432 10.1.3 快速Fourier变换 440 10.2 函数的数值积分 442 10.2.1 一元函数的数值积分 443 10.2.2 二元及三元函数的数值积分 450 10.3 线性方程组的求解 453 10.3.1 直接法求解线性方程组 453 10.3.2 迭代法求解线性方程组 455 10.4 非线性方程组的求解 457 10.5 常微分方程的求解 459 10.5.1 普通2-3阶法求解ode 460 10.5.2 普通4-5阶法求解ode 461 10.6 复变函数的处理 463 10.6.1 复数和复矩阵的生成 463 10.6.2 复数的运算 463 10.6.3 留数 466 第11章 MATLAB在工程设计中的应用 469 11.1 MATLAB工程设计概述 469 11.2 MATLAB在数字信号处理中的应用 471 11.2.1 离散信号与系统 471 11.2.2 数字信号的处理 473 11.2.3 电路系统的分析 491 11.3 MATLAB在图形图像处理中的应用 497 11.3.1 MATLAB系统中的图像类型 498 11.3.2 图形图像的几何运算 499 11.3.3 图形图像的二维傅里叶变换 502 11.3.4 数字图像的离散余弦变换 505 11.3.5 图形图像灰度的调整 509 11.3.6 图形图像的分析 511 11.3.7 图形图像边界的提取 514 11.3.8 图形图像的编码与压缩 515 第12章 MATLAB应用程序接口 526 12.1 MATLAB应用程序接口介绍 526 12.1.1 MEX文件 527 12.1.2 MATLAB计算引擎 528 12.1.3 MAT文件 528 12.2 创建C语言MEX文件 529 12.3 创建FORTRAN语言MEX文件 531 12.4 MAT文件的使用 533 12.5 MATLAB引擎技术的应用 538 12.6 MATLAB的JAVA的接口 542 12.7 MATLAB系统中的DDE技术 547 12.7.1 有关DDE的概念 547 12.7.2 DDE中的MATLAB服务器 547 12.7.3 DDE中的MATLAB用户 548 12.8 MATLAB中的ACTIVEX技术 550 12.8.1 MATLAB ActiveX自动化控制器(客户) 551 12.8.2 MATLAB ActiveX自动化服务器 551 12.9 MATLAB与WORD的联机使用 551 12.9.1 Notebook的安装与使用环境 552 12.9.2 Notebook的具体应用 553 12.9.3 Notebook使用的注意点 557 12.10 MATLAB与EXCEL的联机使用 557 12.10.1 Excel Link的安装 558 12.10.2 设置Excel Link的启动方式 559 12.10.3 终止Excle Link的运行 560 12.10.4 Excel Link的具体应用 561 12.10.5 Excel Link使用的注意点 563