1、 1 第 1 章 MATLAB 教程 张志涌 杨祖樱 等编著 第 1 章 内 容 简 介 本书以 MATLAB R2008a 为编写基础,系统讲解 MATLAB 基本环境和操作要旨;分章阐述符号计算、数值计算、计算结果可视化及编程精要;选例展现 MATLAB 精华工具 SIMULINK 的功能级和元器件级仿真能力;简扼勾画 MATLAB 和 WORD 集成一体的 Notebook 环境。 全书包含 158 个多年凝炼的计算范例和 78 个开拓思路的习题。所有算例程序可靠、完整,读者可以完全准确地重现本书所提供的算例结果 。习题附有包含彩色图形的电子答案。 书后编有索引,本书所用全部指令及配套的
2、标点符号一览无遗。利用索引,读者很容易查阅演示各指令和标点使用方法的节次。 全书由印刷版和电子版结合而成。印刷版便于读者进行系统、全面、长时间连续阅读,便于随心的翻阅、浏览;而电子版则可方便教师制作电子讲稿,方便学生完成电子作业,向读者提供实践本书内容所需的全部可靠程序,色彩信息和动态交互环境,还能随 MATLAB 版本升级而及时地向读者提供新内容。 本书内容充实、篇幅紧凑,是专为理工科院校本科生系统学习 MATLAB 而撰写的,也可供 部分研究生使用。它既可用做教材,也可作为自学用书。 2 前 言 编写背景 MATLAB( MATrix LABoratory)自 1984 年问世以来,历经了
3、实践的检验、市场的筛选和时间的凝炼,它现在已经或正在成为广大科研技术人员、高校师生最常用和最可信赖的仿真软件。 MATLAB 的影响表现在两方面:一,传统分析方法、设计程式和教材内容在MATLAB 平台上可以处理得更为简捷、精确,生动多彩。二,新的分析方法、设计程式和教材内容正在 MATLAB 的推动下不断地萌发。 当今欧美高校的理工科教材与 MATLAB 的关联大致分为三个层面。第一层面,完全不改变原有教材,而把应 用 MATLAB 进行仿真试验的内容另编成册。这个层面的教材最早出现于上世纪 80 年代的中后期,现在仍有相当一些教材采用这种形式。第二层面,保留或稍许改变原教材内容,而把 MA
4、TLAB 处理教材内容的部分增添成专门的章节。这层面的教材最早在上世纪 90 年初出版。现今,它们已成为国外专业和专业基础教材的主流。第三层面,大幅度地摒弃了原教材中那些在计算尺时代建立起来的分析方法和设计程式,而新建了以MATLAB 为基础的现代分析方法和设计程式。这类教材较晚地出现在本世纪初,至今数量也不多。 至于我国,虽然 MATLAB 在高校已 经流传和应用了十多年,但就目前国内理工科专业和专业基础教材而言,包含 MATLAB 的教材还着实不多见。前不久,我国教育主管部门关于 MATLAB 作为平台计算软件的指导性意见,必将对我国高等理工科教学的发展产生重要影响,对提高我国后备人才在现
5、代化计算平台上的创新力有十分积极的意义。 编写宗旨 从 MATLAB 作为高等教学计算平台的基本点出发,融合作者本人近十来年在本科和研究生 MATLAB 教学、科研第一线积累的经验,本书编写宗旨定位于:面向本科,立足基础;注重教材内容稳定,而又兼顾 MATLAB 的时代特征。具体措施: 一,本版新书中将所涉数学内容控制在本科大纲水平。二,本书不涉及 MATLAB 专业工具包(如控制、信号处理、图像处理、通信、金融、生物信息等)的内容,而着力阐述 MATLAB 如何描述被解算问题、实施计算的指令及多指令相互配用、如何表达或表现计算所得的结果。三,本书特别强调MATLAB 面向复数、面向数组的运算
6、特点,强调向量化编程,与此同时还精心设计了若干算例向读者警示数值计算中的注意事项。四,本书还展示了依托 MATLAB建立的 SIMULINK的“模块 + 鼠标操作”的交互式建模能力,展示了 SIMULINK 在功能级和 元器件级两个层面上的仿真能力。 本书结构 全书由“目录”、“正文”、“习题”、“附录”、“索引”和“随书光盘”组成。正文共分八章,包含 158 个算例, 78 个习题。 章节内容基本上循由浅入深原则编排。数多量大的算例是本教材一大特色。每个算例都经过精心设计,它们从不同角度展示 MATLAB 的特点、规则和注意事项。习题分章安排在正文之后,习题答案被刻录在光盘中。本教材习题承载
7、两个功能:一,培养学生独立解决问题的能力;二,拓展学生对 MATLAB 的认识。 附录 A 简单介绍字符串数组、胞元数组和构架数组。附录 B 描述光盘的内容 和用法。索引中汇集了本教材所涉及的 MATLAB 指令。除标点符号在最前外,所有指令按英文字母次序罗列。每个符号或指令后,罗列着本书介绍或使用该指令的具体节次。 随书光盘 DOC 文件的主要功用:向教师提供制作本教程电子讲稿的基础文件;向学生提供完成电子作业的模板;向读者提供演练 Notebook 的良好环境。而光盘上的 M, MDL, 3 MAT 等文件为读者提供了所有算例在 MATLAB 环境运作必需的文件。 内容简介 全书共分八章。
8、 第 1 章 基础准备及入门 详细讲述 MATLAB 运行的基本条件、基本特征和使用方法、讲 授如何借助 MATLAB 的自带帮助系统解决所遇到的困难。任何 MATLAB“生手”借助本章都可以比较顺利地跨入 MATLAB 门槛。 第 2 章 符号计算 演绎数学问题的解析计算和任意精度解。该章介绍的解题理念、计算过程、计算结果与高校教科书中的理论内容十分相似,因此学生比较容易接受并应用。此外,在 MATLAB 中,由于符号计算和数值计算采用两个不同的“引擎”,所以本章内容相对独立。 第 3 章 数值数组及向量化运算 阐述数值计算特点、数组运算、向量化编程,以及解决一般数学问题所必需的各种基本函
9、数、逻辑关系表达和基本技法。应该指出,从本章起到第 7 章为止的全部内容是围绕 MATLAB 的“主流 数值建模及计算”展开的。 第 4 章 数值计算 分类讲述基本数学问题(如微积分、极值、微分方程、矩阵和代数方程、概率统计、多项式和卷积等)的数值解算指令和要领,帮助学生建立起正确的数值计算概念。 第 5 章 数据和函数可视化 阐释理论数学函数可视化的基本步骤、基本指令和协调使用,培养学生借助图形获知离散数据所隐含函数特征的能力。 第 6 章 M 文件和函数句柄 系统介绍 MATLAB程序中最常用的四种控制结构和构建函数调用关系的“函数句柄”。 M 文件的意义在于:综合使用前几章所介绍的各种基
10、本指令和基本方法,构造较复杂问题的仿真模型,并解算之。 第 7 章 SIMULINK 仿真集成环境 采用算例引导、纵向深入的方式描述SIMULINK 模型的交互式创建和仿真方法。四个典型算例分别是:基于微分方程的连续系统仿真、基于传递函数的连续系统分析、基于滤波模块的采样离散系统仿真、以及基于元器件级模块的电路瞬态分析。本章无意对 SIMULINK 解决信号与系统问题、电路分析问题进行全面阐述,而 着力于让学生通过举一反三体验 SIMULINK 崭新、强大的仿真能力。 第 8 章 Notebook 简扼介绍集 Word 及 MATLAB 于一体的Notebook 工作环境的创建和使用。 教材的
11、时新性和版本稳定性 软件书籍时新性的好坏标志:软件书籍及时反映升级软件最新变化能力的强弱。而版本稳定性的好坏标志:阐释该软件的书籍内容在时间推移过程中关于那不断升级软件的适配程度的高低。 出于“注重稳定兼顾时新”的理念,本教材内容的时新性、版本稳定性分析和应对措施具体如下: ( 1)版本稳定性的基础是 MATLAB 核心指令的高度稳定 MATLAB 问世已有 20 多年,已历经(大小)数十次版本升级,其自身容量已从几百 K膨胀到接近 2G,其数据结构已从单一扩展为多类型,其操作平台已从 DOS 迁移到 Windows,但其基本指令的使用规则、程序流控制却几乎没有任何变化。这完全归功于 Math
12、works 公司的远见卓识和精湛的兼容性处理技术。 ( 2)教材功能定位有利于增强版本稳定性 既与手册类软件书籍不同,也与专业类软件书籍不同,本教材的功能,定位于:阐释软件核心、强调基础应用、注重范例引导,适当展示软件最新功能。 基于这 种功能定位,本书除第 1、 7 章外的其余六章所阐释的就是 MATLAB 的核心指令和规则。因此,据 MATLAB 发展史不难预测,这六章内容将具有很高的版本稳定性。 ( 3)教材阐释的基本原则和程式具有较高的版本稳定性 SIMULINK 是 MATLAB 中与真实过程(系统)“距离”最近的仿真环境,是 MATLAB走向实时仿真的最主要途径,是当今 MATLA
13、B 中最具活力、变化最快的工具包。 MATLAB 教材若涉及 SIMULINK,那么这部分内容就必将是“版本敏感的”,如(适配于 MATLAB6.x 的) SIMULINK5.x 中建 立的模型在(适配于 MATLAB7.x 的)4 SIMULINK6.x 中就很可能无法运行。但从另一方面看, MATLAB 教材,如若舍弃 SIMULINK内容,那将大大局限受教者的视野, 大大障碍学习者对仿真发展趋势的感知。 权衡利弊后,本教材第 7 章纳入了 SIMULINK 的四种典型用法。算例的 MDL 文件是在(适配于 MATLAB R2008a,即 7.6 的) SIMULINK 7.1 环境中建立
14、的。由于 SIMULINK在版本升级中变化最为频繁,因此这些 MDL 文件有可能在 SIMULINK7.1 的以前或以后版中运行失败。此时,读 者通常只要参照本书提供的模型图、建模步骤和参数设置,利用您具体 SIMULINK环境中的模块重新勾画模型,那么所得的 MDL 就可以在您具体的 SIMULINK环境中成功运行。 ( 4) 逐年修订 保障教材的时新性 “教材 时新”是 本书作者和出版社尽心保障的 另一个 特点。这基于两方面的考虑:一,2006 年 MATLAB 的制造商宣布, MATLAB 将 每隔半年升级一次 ;二, 教材的 时新性有利于 增强 读者、学对 MATLAB 的“亲和 感
15、” 和“学习心态的愉悦” 。 本书作者和出版社将通力合作,对本教材进行逐年修订, 使印刷版 确保“时新”, 而 电子 版 又 向前兼容 。换句话说,本书的印刷版将随 MATLAB 的升级不断修订,而随书光盘将提供与以前各版适配的相关内容。 教学建议 ( 1)教学环境和形式 本教材内容应该在多媒体教室讲授。本教材中所有算例的计算结果(包括数据和图形)都应该在教学现场实时产生,以便学生亲眼目睹教师操作,感受计算过程和计算结果。 对于涉及 MATLAB 内容较多的课程,不宜采用 PowerPoint 写成的 ppt 幻灯片作为电子讲稿。本书作者建议采用( Word + MATLAB)构成的 M-bo
16、ok 模板编写电子讲稿。这样,通过本课程的潜移默化,学生很容 易掌握 M-book 的使用。光盘中的 DOC 文件可方便于教师制作电子讲稿。 学习本教材的每个学生都应该在计算机上亲自演练本教材中的算例。要特别重视算例指令的直接键入练习,只有这样才能加深对 MATLAB 的理解,纠正自己的误解和误操作。建议:学生采用光盘上的 M-book 模板解答本书习题。 ( 2)教学内容安排 作为入门内容的第 1 章必须最先讲授,但不必太细。除 MATLAB 及其工作界面的最基本特点和操作技法外,其余内容可以渗透在本教材以后的课程中介绍。 本书第 8 章内容不必使用单独的课时讲授。假若教师课堂教学采用 M-
17、book 写成的讲稿在Notebook 环境中进行,那么第 8 章内容将得到最好的传授。 本教材之所以把“符号计算”安排在第 2 章,是出于本章所涉计算推演模式相似于大学(数学、专业)教材的考虑。假如,摒弃以上考虑,那么本章内容安排在第 3、第 4 章以后讲授也是合适的。 假如教学课时有限,那么下列节次可以酌情少讲或不讲:第 2.7 节,第 2.8.2 节,第 4.3 节,第 4.4.2 节,第 5.3.4 节,第 5.4 节,第 7 章。 致谢 无论在本书的讲稿阶段,还是在成书阶段,得到了阮秀凯、刘莉等研究生的帮助和支持,得到南京邮电大学各级领导的鼓励和 关心。借本书出版之际,作者向他们表示
18、真诚的感谢。 最后还要感谢北京航空航天出版社,是他们一再鼓励作者结合讲稿和读者的反馈意见对前书 MATLAB 教程 进行修订、改编。 本书基本内容虽经多年教学的筛选提炼,但限于作者知识,赘病、错误和偏见仍难避免。在此,本 书作 者恳切 期望得 到各方 面专 家和广 大读者 的指教 。作 者电子 信箱: 。 作 者 5 2006 年 4 月于南京 2008a 适配版前言 与本书 2007a 版相比, 2008a 版在文字说明、指令、图标、图形、 M 文件等方面有 170多处不同。本书 2008a 的印刷版和电子版完全适配于 MATLAB 2008a。除此以外,在本书的 光盘 电子版中,还包含有
19、适配 于 MATLAB 2006a 及 2007a 的所有文件。 作 者 2008 年 5 月于 悉尼 6 第 1 章 基础准备及入门 本章有三个目的:一是讲述 MATLAB 正常运行所必须具备的基础条件;二是简明地介绍 MATLAB 及其操作桌面 Desktop 的基本使用方法;三是全面介绍 MATLAB 的帮助系统。 本章的前两节讲述: MATLAB 的正确安装方法和 MATLAB 环境的启动。因为指令窗是 MATLAB 最重要的操作界面,所以本章用第 1.3、 1.4 两节以最简单通俗的叙述、算例讲述指令窗的基本操作方法和规则。这部分内容几乎对 MATLAB 各种版本都适用。第 1.5到
20、第 1.8 节专门介绍 MATLAB 最常用的另五个交互界面:历 史指令窗、当前目录浏览器、工作空间浏览器、 变量编辑器 、 M 文件编辑器。 鉴于实际应用中,帮助信息和求助技能的重要性。本章专设第 1.9 节专门叙述 MATLAB 的帮助体系和求助方法。 作者建议:不管读者此前是否使用过 MATLAB,都不要忽略本章。 1.1 MATLAB 的安装和工具包选择 MATLAB 只有在适当的外部环境中才能正常运行。因此,恰当地配置外部系统是保证MATLAB运行良好的先决条件。 MATLAB本身可适应于许多机种和系统,如 PC机 和 Unix 工作站等。但本节只针对我国使用最广的 PC 机系统给予
21、介绍。 对 PC 机用户来说,常常需要自己安装 MATLAB。 MATLAB R2008a (即旧编号MATLAB7.6)版要求 Win2000 或 WinXP 平台。下面介绍从光盘上安装 MATLAB 的方法。 一般说来,当 MATLAB 光盘插入光驱后,会自启动“安装向导”。假如自启动没有实现,那么可以在 或 中双击 setup.exe 应用程序,使“安装向导”启动。安装过程中出现的所有界面都是标准的,用户只要按照屏幕提示操作,如输入用户名、单位名、口令等就行。 在安装 MATLAB.R2008a 时,会出现一个界面 ,该界面上有两个选项: Typical和 Custom。假如你不熟悉 M
22、ATLAB,或假如你机器的硬盘的自由空间远大于 3G,或假如你需要用到光盘上 MATLAB 的所有功能及工具包,那么你就点选“ Typical”。否则,点选“ Custom”。 在点选“ Custom”后,会引出如图 1.1-1 的界面。你可以根据需要,在“ Select products to install”栏中勾选相应的组件。注意: MATLAB 软件光盘总包含很多工具包,它们有的是通用的,有的则专业性很强。对一般用户来说,完全不必采取全部安装,而应根据需 要有所选择。否则将占据很多硬盘空间。表 1.1-1 对各组件的描述供用户选择时参考。 7 图 1.1-1 MATLAB 组件选择界面
23、 表 1.1-1 MATLAB 各组件的功用 组 件 名 称 功 用 1必须选择的本原性组件 MATLAB 这是最核心的部分。没有它就没有 MATLAB 环境。 有了它,就可以对各类数据(除符号类数据以外)进行操作、运算和可视化。 2最常选的通用性工具包组件 Symbolic Math Toolbox 符号类数据 的操作和计算。 Extended Symbolic Math Toolbox 更丰富的符号计算函数和指令 3其他通用性工具包组件 Simulink 不用编写程序,利用方块图实现建模和仿真;主要用于研究微分和差分方程描写的非线性动态系统。 Optimization Toolbox 包含
24、求函数零点、极值、规划等优化程序。 Matlab Compiler 把 MATLAB 的 M 文件编译成独立应用程序。 Matlab builder for Excel 与 MATLAB Compiler 配合使用,生成 Excel 插件。 4常用专业性工具包组件 Control System Toolbox MATLAB 涉及控制的工具包有 10 多个,而本栏工具包是最基本的,是解决控制问题所必选的。至于其他控制工具包则是用户根据需要选择的。 Signal Processing Toolbox 是 MATLAB 信号处理中的基本工具包。 Spline Toolbox 内含样条和插值函数。 S
25、tatistics Toolbox 包含进行复杂统计分析所需的程序。 5其他专业性工具包组件 (举例) Stateflow 与 Simulink 配合使用,主要用于较大型、复杂的(离散事件)动态系统的建模、分析、仿真。 System Identification Toolbox 动态系统辨识。 1.2 Desktop 操作桌面的启动 8 1.2.1 MATLAB 的启动 ( 1)方法一 当 MATLAB 安装到硬盘上以后,一般会在 Windows 桌面上自动生成 MATLAB 程序图标。在这种情况下,只要直接点击那图标即可启动 MATLAB,打开如图 1.2-1 的 MATLAB操作桌面( D
26、esktop)。注意:本书作者建议用户优先采用启动“方法一”。 ( 2)方法二 假如 Windows 桌面上没有 MATLAB 图标,那么点击 matlab 文件夹下的快捷方式图标。 1.2.2 Desktop 操作桌面简介 MATLAB R2008a 版的 Desktop 操作桌面,是一个高度集成的 MATLAB 工作界面。其默认形式,如图 1.2-1 所示。该桌面的上层铺放着三个最常用的界面:指令窗( Command Window)、当前目录( Current Directory)浏览器、历史指令( Command History)窗。在当前目录窗的 后 面还铺放一个 MATLAB 内存工
27、作 空间( Workspace)浏览器。 图 1.2-1 Desktop 操作桌面的默认外貌 指令窗 该窗是进行各种 MATLAB 操作的最主要窗口。在该窗内,可键入各种送给MATLAB 运作的指令、函数、表达式;显示除图形外的所有运算结果;运行错误时,给出相关的出错提示。 历史指令窗 该窗记录已经运作过的指令、函数、表达式,及它们运行的日期、时间。该窗中的所有指令、文字都允许复制、重运行及用于产生 M 文件。 当前目录浏览器 在该浏览器中,展示着子目录、 M 文件、 MAT 文件和 MDL 文件 等。对该界面上的 M 文件,可直接进行复制、编辑和运行;界面上的 MAT 数据文件,可直接送入M
28、ATLAB 工作内存。此外,对该界面上的子目录,可进行 Windows 平台的各种标准操9 作。 工作空间浏览器 该浏览器默认地位于当前目录浏览器的后台。该窗口罗列出 MATLAB 工作空间中所有的变量名、大小、字节数;在该窗中,可对变量进行观察、图示、编辑、提取和保存。 捷径( Start)键 引出通往本 MATLAB 所包含的各种组件、模块库、图形用户界面、帮助分类目录、演示算例等的捷径,以及向用户提供自建快捷操作的环境。 1.3 Command Window 运行入门 MATLAB 的使用方法和界面有多种形式。但最基本的,也是入门时首先要掌握的是:MATLAB 指令窗( Command
29、Window)的基本表现形态和操作方式。本书作者相信,通过本节的文字解释,读者将对 MATLAB 使用方法有一个良好的初始感受。 1.3.1 Command Window 指令窗简介 MATLAB 指令窗默认地位于 MATLAB 桌面的右方(见图 1.2-1)。假如,用户希望得到脱离操作桌面的几何独立指令窗,只要点击该指令窗右上角的 键,就可 获得如图 1.3-1所示的指令窗。 图 1.3-1 几何独立的指令窗 说明 图 1.3-1 指令窗表现了例 1.3-1 运行的情况。 若用户希望让独立指令窗嵌放回桌面,则只要点击 Command Window 右上角的 按钮,或选中指令窗菜单 Deskt
30、op: Dock Command Window 便可。 1.3.2 最简单的计算器使用法 为易于学习,本节以算例方式叙述,并通过算例归纳一些 MATLAB 最基本的规则和语法结构。建议读者,在深入学习 之前,先读一读本节。 【例 1.3-1】 求 23)47(212 的算术运算结果。本例演示:最初步的指令输入形式和必需的操作步骤。 ( 1)用键盘在 MATLAB 指令窗中输入以下内容 (12+2*(7-4)/32 ( 2)在上述表达式输入完成后,按 Enter 键,该指令被执行,并显示如下结果。 10 ans = 2 说明 本例在指令窗中实际运行的情况参见图 1.3-1。 指令行“头首”的“
31、”是“指令输入提示符”,它是自动生成的。本书在此后的输入指令前将不再带提示符“ ”。理由是:( A)为使本书简洁;( B)本书用 MATLAB的 M-book 写成,而在 M-book 中运行的指令前是没有提示符的。 MATLAB 的运算符(如 +、 - 等)都是各种计算程序中常见的习惯符号。 一条指令输入结束后,必须按 Enter 键,那指令才被执行。 由于本例输入指令是“不含赋值号的表达式”,所以计算结果被赋给 MATLAB 的一个默认变量“ ans”。它是英文“ answer”的缩写。 【例 1.3-2】“续行输入”法。本例演示:或由于指令太长,或出于某种需要,输入指令行必 须多行书写时
32、,该如何处理。 S=1-1/2+1/3-1/4+ . 1/5-1/6+1/7-1/8 S = 0.6345 说明 MATLAB 用 3 个或 3 个以上的连续黑点表示“续行”,即表示下一行是上一行的继续。 本例指令中包含“赋值号”,因此表达式的计算结果被赋给了变量 S。 指令执行后,变量 S 被保存在 MATLAB 的工作空间( Workspace)中,以备后用。如果用户不用 clear 指令清除它,或对它重新赋值,那么该变量会一直保存在工作空间中,直到本 MATLAB 指令窗被关闭为止 。 1.3.3 数值、变量和表达式 前节算例只是表演了“计算器”功能,那仅是 MATLAB 全部功能中小小
33、一角。为深入学习 MATLAB,有必要系统介绍一些基本规定。本节先介绍关于变量的若干规定。 一 数值的记述 MATLAB 的数值采用习惯的十进制表示,可以带小数点或负号。以下记述都合法。 3 -99 0.001 9.456 1.3e-3 4.5e33 在采用 IEEE 浮点算法的计算机上,数值通常采用“占用 64 位内存的双精度”表示。其相对精度是 eps ( MATLAB 的一个预定义变量),大约保持有效数字 16 位 。数值范围大致从 30810 到 30810 。 二 变量命名规则 变量名、函数名是对字母大小写敏感的 。如变量 myvar 和 MyVar 表示两个不同的变量。sin 是
34、MATLAB 定义的正弦函数名,但 SIN,Sin 等都不是。 变量名的第一个字符必须是英文字母,最多可包含 63 个字符(英文、数字和下连符) 。如 myvar201 是合法的变量名。 变量名中不得包含空格、标点、运算符,但可以包含下连符 。如变量名 my_var_201 是合法的,且读起来更方便。而 my,var201 由于逗号的分隔,表示的就不是一个变量名。 三 MATLAB 默认的预定义变量 在 MATLAB 中有一些所谓的预定义变量( Predefined Variable),见表 1.3-1。每当MATLAB 启动,这些变量就被产生。这些变量都有特殊含义和用途。建议:用户在编写指令
35、和程序时,应尽可能不对表 1.3-1 所列预定义变量名重新赋值,以免产生混淆。 11 表 1.3-1 MATLAB 中最常用的预定义变量 预定义变量 含 义 预定义变量 含 义 ans 计算结果的默认变量名 NaN 或 nan 不是一个数( Not a Number),如 0/0, / eps 机器零阈值 Inf 或 inf 无穷大,如 1/0 nargin 函数输入宗量数目 i 或 j 虚单元 1 ji nargout 函数输出宗量数目 pi 圆周率 realmax 最大正实数 realmin 最小正实数 说明 假如用户对表中任何一个预定义变量中进行赋值,则那个变量的默认值将 被用户新赋的值
36、“临时”覆盖。所谓“临时”是指:假如使用 clear 指令清除 MATLAB 内存中的变量,或 MATLAB 指令窗被关闭后重新启动,那么所有的预定义变量将被重置为默认值,不管这些预定义变量曾被用户赋过什么值。 在遵循 IEEE 算法规则的机器上,被 0 除是允许的。它不会导致程序执行的中断,只是在给出警告信息的同时,用一个特殊名称(如 Inf, NaN)记述。这个特殊名称将在以后的计算中以合理的形式发挥作用。 【例 1.3-3】运用以下指令,以便初步了解预定义变量。本例演示:预定义变量已经存在的事实;若干预定义 变量的数量级概念。 format long realmax ans = 1.79
37、7693134862316e+308 realmin ans = 2.225073858507201e-308 eps ans = 2.220446049250313e-016 pi ans = 3.141592653589793 四 运算符和表达式 ( 1)经典教科书上的算术运算符在 MATLAB 中的表达方式,见表 1.3-2。 表 1.3-2 MATLAB 表达式的基本 运算符 数学表达式 矩阵运算符 数组运算符 加 ba a + b a + b 减 ba a - b a - b 乘 ba a * b a .* b 除 ba a / b 或 b a a ./ b 或 b . a 幂 ba
38、 a b a . b 圆括号 ( ) ( ) ( ) 说明 因为 MATLAB 面向复数设计,其所有运算定义在复数域上。所以对于方根问题,运算只返还一个“主解”。要得复数的全部方根,必须专门编写程序(见例 1.3-6)。 因为 MATLAB 面向矩阵 /数组设计,标量被看作 )11( 的矩阵 /数组。 数组运算的“乘、除、幂”规则与相应矩阵运算根本不同。前者的算符比后者多一个“小12 黑点”。(参见例 1.3-9,例 1.3-10。更详细说明请看第 3 章) MATLAB 用左斜杠或右斜杠分别表示“左除”或“右除”运算。对标量而言,“左除”和“右除”的作用结果相同。但对矩阵来说,“左除”和“右
39、除”将产生不同的结果。 ( 2) MATLAB 书写表达式的规则与“手写算式”几乎完全相同。 表达式由变量名、运算符和函数名组成。 表达式将按与常规相同的优先级自左至右执行运算。 优先级的规定是:指数运算级别最高,乘除运算次之,加减运算级别最低。 括号可以改变运算的次序。 书写表达式时,赋值符“ =”和运算符两侧允许有空格,以增加可读性。 五 面向复数设计的运算 MATLAB 特点之一 MATLAB 的所有运算都是定义在复数域上的。这样设计的好处是:在进行运算时, 不必像其他程序语言那样把实部、虚部分开处理。为描述复数,虚数单位用预定义变量 i 或 j 表示。 复数 irebiaz 直角坐标表
40、示和极坐标表示之间转换的 MATLAB 指令如下。 real(z) 给出复数 z 的实部 cosra 。 imag(z) 给出复数 z 的虚部 sinrb 。 abs(z) 给出复数 z 的模 22 ba 。 angle(z) 以弧度为单位给出复数 z 的幅角 abarctan 。 【例 1.3-4】复数 ieziziz 6321 2,21,34 表达,及计算321zzzz 。本例演示:正确的复数输入法;涉及复数表示方式的基本指令。 ( 1)经典教科书的直角坐标表示法 z1= 4 + 3i %合法,但建议少用或不用 z1 = 4.0000 + 3.0000i 说明 本书建议读者不要使用这种输入
41、格式。因为这种书写格式,只适用于“数值标量”复数,而不适用于“数值矩阵”。 在这种书写格式中, 4i 是一个完整的虚数,在 4 和 i 之间不许“空格”存在。 ( 2)采用运算符构成的直角坐标表示法和极坐标表示法 z2 = 1 + 2 * i %运算符构成的直角坐标表示法 z3=2*exp(i*pi/6) %运算符构成的极坐标表示法 z=z1*z2/z3 z2 = 1.0000 + 2.0000i z3 = 1.7321 + 1.0000i z = 1.8840 + 5.2631i ( 3)复数的实虚部、模和幅角计算 real_z=real(z) image_z=imag(z) magnitu
42、de_z=abs(z) angle_z_radian=angle(z) %弧度单位 angle_z_degree=angle(z)*180/pi %度数单位 real_z = 13 1.8840 image_z = 5.2631 magnitude_z = 5.5902 angle_z_radian = 1.2271 angle_z_degree = 70.3048 【例 1.3-5】图示复数 iziz 21,34 21 的和(配图 1.3-2)。本例演示: MATLAB 的运算在复数域上进行;指令后“分号”的作用;复数加法的几何意义;展示 MATLAB 的可视化能力(让读者感受,但不要求理解
43、)。 z1=4+3*i;z2=1+2*i; %在一个物理行中,允许输入多条指令。 %但各指令间要用“分号”或“逗号”分开。 %指令后采用“分号”,使运算结果不显示。 z12=z1+z2 %以下用于绘图 clf,hold on %clf清空图形窗。逗号用来分隔两个指令。 plot(0,z1,z12,-b,LineWidth,3) plot(0,z12,-r,LineWidth,3) plot(z1,z12,ob,MarkerSize,8) hold off,grid on, axis equal axis(0,6,0,6) text(3.5,2.3,z1) text(5,4.5,z2) text
44、(2.5,3.5,z12) xlabel(real) ylabel(image) shg z12 = 5.0000 + 5.0000i 图 1.3-2 两个复数相加 【例 1.3-6】 用 MATLAB 计算 3 8 能得到 2 吗(配图 1.3-3)?本例演示: MATLAB 运算定义在复数域的实质;指令后“分号”抑制运算结果的显示; MATLAB 的方根运算规则;更复杂指令的表示方式;展现 MATLAB 的图形表现力。(对于本例指令,读者能有体验就0 1 2 3 4 5 60123456z1z2z 1 2r e a limage14 可,不必强求理解。) ( 1)直接计算时, 得到处于第一
45、象限的方根。 a=-8; r_a=a(1/3) %求 3次根 r_a = 1.0000 + 1.7321i ( 2) 3 8 的全部方根计算如下 % 先构造一个多项式 arrp 3)( p=1,0,0,-a; %p是多项式 )(rp 的系数向量 %指令末尾的“英文状态分号”使该指令运行后,不显示结果。 R=roots(p) %求多项式的根 R = -2.0000 1.0000 + 1.7321i 1.0000 - 1.7321i ( 3)图形表示 MR=abs(R(1); %计算复根的模 t=0:pi/20:2*pi; %产生参变量在 0到 2*pi间的一组采样点 x=MR*sin(t); y
46、=MR*cos(t); plot(x,y,b:),grid on %画一个半径为 R的圆 %注意“英文状态逗号”在不同位置的作用 hold on plot(R(2),.,MarkerSize,30,Color,r) %画第一象限的方根 plot(R(1,3),o,MarkerSize,15,Color,b) %画另两个方根 axis(-3,3,-3,3),axis square %保证屏幕显示呈真圆 hold off 图 1.3-3 ( -8)的全部三次方根分布 说明 本例有助于理解 MATLAB 的计算特点。 对复数进行方根运算时, MATLAB 只给出处于“第一象限”的那个根。 六 面向数
47、组设计的运算 MATLAB 特点之二 在 MATLAB 中,标量数据被看作 )11( 的数组( Array)数据。所有的数据都被存放在-3 -2 -1 0 1 2 3-3-2-1012315 适当大小的数组中。为加快计算速度(运算的向量化处理), MATLAB 对以数组形式存储的数据设计了两种基本运算:一种是所谓的数组运算;另一种是所谓的矩阵运算。在此仅以算例展示 MATLAB 的计算特点,更详细的叙述请见第 3 章。 【例 1.3-7】实数数组 42 31AR的“一行”输入法。本例演示:二维数组的最基本、最常用输入法;二维数组输入的三大要素。 ( 1)在键盘上输入下列内容 AR= 1,3;2
48、,4 ( 2)按 Enter 键,指令被执行。 ( 3)在指令执行后, MATLAB 指令窗中将显示以下结果: AR = 1 3 2 4 说明 在 MATLAB 中,不必事先对数组维数及大小做任何说明,内存将自动配置。 二维数组输入的三大要素:数组标识符“ ”;元素分隔符空格或逗号“ ,”;数组行间分隔符分号“ ;”或“回车键”。注意:所有标点符号都是“英文状态的符号”。 MATLAB 对字母大小写是敏感的。比如本例中的数组赋给了变量 AR,而不是 Ar, aR, 或 ar 。 在全部键入一个指令行内容后,必须按下 Enter 键,该指令才会被执行。请读者务必记住此点。出于叙述简明的考虑,本书此后将不再重复提及此操作。 【例 1.3-8】实数数组 86 75AI的“分行”输入法。 AI=5,7 6,8 AI = 5 7 6 8 说明 本例采用这种输入法是为了视觉习惯。当然,对于较大的数组也可采用此法。 在这种输入方法中,“回车”符用来分隔数组中的行。 【例 1.3-9】对复数数 组 ii ii 8462 7351A进行求实部、虚部、模和幅角的运算。本例演示: