MATLAB/Simulink系统仿真超级学习手册

978-7-115-34916-3
作者: MATLAB技术联盟 石良臣
译者:
编辑: 王峰松
分类: Matlab

图书目录:

详情

本书以最新版软件为基础,讲述了Simulink系统仿真的主要内容,具体包括Simulink基础知识、模块操作、信号操作、创建Simulink模型、Simulink仿真设置、Simulink系统仿真原理、Simulink子系统技术、编写M语言S函数等基础知识,同时给出了Simulink在模拟与数字控制、神经网络的仿真与分析、信号处理的仿真与分析、模糊逻辑控制、电力系统模块集与电子线路仿真的综合应用。

图书摘要

工程软件应用精解

MATLAB/Simulink系统仿真超级学习手册
MATLAB技术联盟 石良臣 编著
人民邮电出版社

北京

图书在版编目(CIP)数据

MATLAB/Simulink系统仿真超级学习手册/石良臣编著.--北京:人民邮电出版社,2014.5

ISBN 978-7-115-34916-3

Ⅰ.①M… Ⅱ.①石… Ⅲ.①自动控制系统—系统仿真—Matlab软件—手册 Ⅳ.①TP273-62

中国版本图书馆CIP数据核字(2014)第053386号

内容提要

本书基于MATLAB R2013a 版由浅入深地全面讲解了MATLAB/Simulink 的知识。本书涉及面广,涵盖了一般用户需要使用的各种功能,并详细介绍了MATLAB/Simulink的使用。本书按逻辑编排,自始至终采用实例描述;内容完整且每章相对独立,是一本详细的MATLAB/Simulink参考书。

全书共分为12章,首先介绍了MATLAB的基础知识。Simulink是本书的重点,从Simulink的仿真基础,到Simulink高级仿真技术,以及Simulink仿真应用,都是读者应该掌握的知识点。其中,Simulink仿真基础知识主要包含Simulink模块库、模块基本操作以及系统的建模与仿真。同时,本书也对各种动态系统,如简单系统、离散系统、连续系统、混合系统的Simulink仿真进行了介绍。Simulink子系统、命令行方式仿真以及S-Function的运用则是Simulink高级仿真技术的内容。最后5章为Simulink在工程上的应用,包括通信系统仿真、电力系统仿真、控制系统仿真、模糊控制仿真、神经网络仿真。本书从这些系统的基本概念出发,对其仿真的方法及应用加以说明。

本书以实用为目标,深入浅出,实例引导,讲解翔实,既适合作为理工科高等院校研究生、本科生的教学用书,也可作为广大科研工程技术人员的参考用书。

◆编著 MATLAB技术联盟 石良臣

责任编辑 王峰松

责任印制 彭志环 杨林杰

◆人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

北京艺辉印刷有限公司印刷

◆开本:787×1092 1/16

印张:27

字数:640千字  2014年5月第1版

印数:1-3500册  2014年5月北京第1次印刷

定价:59.00元

读者服务热线:(010)81055410 印装质量热线:(010)81055316

反盗版热线:(010)81055315

广告经营许可证:京崇工商广字第0021号

前言

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB在以商品形式出现后的短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包纷纷被淘汰,而改在MATLAB平台上重建。

Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。Simulink具有适应面广、结构和流程清晰以及仿真精细、贴近实际、效率高、灵活等优点,基于以上优点,Simulink 已被广泛应用于控制理论和数字信号处理的复杂仿真和设计,同时也有大量的第三方软件和硬件可应用于或被要求应用于Simulink环境。

本书基于MATLAB R2013a 版由浅入深地全面讲解MATLAB/Simulink 的相关知识,帮助读者尽快掌握MATLAB/Simulink的应用。

1.本书特点:

由浅入深,循序渐进:本书以初中级读者为对象,首先从 MATLAB/Simulilnk 的使用基础讲起,再对Simulink的高级使用方法作介绍,并以Simulink在几个专业领域中的仿真应用帮助读者尽快掌握Simulink的仿真方法。

步骤详尽,内容新颖:本书结合作者多年MATLAB/Simulink使用经验与实际工程应用案例,将软件的使用方法与技巧都详细地讲解给读者。本书在讲解过程中步骤详尽、内容新颖,讲解过程辅以相应的图片,使读者在阅读时一目了然,从而快速掌握书中所讲内容。

实例典型,轻松易学:通过学习实际工程应用案例的具体操作是掌握 MATLAB/Simulink最直接有效的方式。本书通过综合应用案例,透彻详尽地讲解了MATLAB/Simulink在各方面的应用。

2.本书内容:

本书基于MATLAB R2013a 版,讲解了MATLAB/Simulink 的基础知识和核心内容。本书主要分为两个部分:基础知识部分和专业系统仿真部分,其中基础知识包括第1~8章,实例部分包括第9~12章。

第1章 本章简单介绍系统仿真技术的一些基本概念,并对本书所用的仿真软件MATLAB做简单介绍,初步领略MATLAB的强大功能。

第2章 本章较全面地介绍MATLAB 正常运行的基本流程以及编程基础与技巧,帮助读者在领略 MATLAB 非凡能力的同时比较轻松地跨过MATLAB门槛,为后面学习MATLAB工具箱Simulink打下坚实的基础。

第3章 本章介绍Simulink 的仿真基础,包括Simulink 仿真环境、Simulink 模块库、Simulink基本操作、Simulink系统建模,并通过实例介绍Simulink仿真的相关技术。

第4章 本章通过对简单系统、离散系统、连续系统、混合系统等具体的动态进行仿真分析,详细介绍Simulink的仿真技术,并对必要的Simulink调试技术进行了讲解。

第5章 本章介绍了Simulink 子系统技术,包括Simulink简单子系统、高级子系统,以及Simulink子系统的封装和模块库技术。

第6章 除了Simulink框图方式,还可以使用命令行方式来对Simulink模型进行仿真。本章主要介绍如何使用命令行建立系统模型、Simulink与MATLAB的接口以及使用命令行方式进行动态系统仿真的方法。

第7章 S-Function 是Simulink 最具魅力的地方,它结合了Simulink 框图简洁的特点和编程灵活的优点,它提供了增强和扩展 Simulink 能的强大机制。本章将介绍 S-function的基本概念、工作原理以及如何使用和编写S-function。

第8章 本章简单介绍通信系统的概念,并通过系统仿真实例来详细说明如何使用MATLAB/Simulink来进行各种通信系统的仿真。

第9章 本章主要介绍在MATLAB环境下如何进行电力系统仿真,需要哪些模块、哪些命令,并通过仿真实例来进行说明。

第10章 本章简单介绍控制系统的一些基本概念,详细说明控制系统仿真所需要的Simulink模块、仿真命令等,并通过仿真实例说明控制系统的仿真方法。

第11章 本章简单介绍模糊理论的基本概念,着重说明模糊理论在控制领域的应用,并介绍模糊控制在MATLAB平台上的仿真应用。

第12章 本章先说明神经网络的一些基本概念,然后详细介绍MATLAB 提供的神经网络工具箱,最后对自定义网络的建立方法做简单介绍。

注:本书中用到的所有程序代码和数据,请到作者的博客下载。

3.读者对象:

本书结构合理、叙述详细、算例丰富,适合于MATLAB/Simulink初中级者和期望学习Simulink高级仿真技术的读者,具体说明如下:

★ 初学MATLAB/Simulink的技术人员 ★ 广大科研工作人员

★ 大中专院校的教师和在校生  ★ 相关培训机构的教师和学员\

★ 参加工作实习的“菜鸟”  ★ MATLAB/Simulink爱好者

★ 相关从业人员

4.本书作者:

本书由MATLAB技术联盟石良臣编著。另外,孔玲军、李昕、刘成柱、史洁玉、孙国强、代晶、贺碧蛟、石良臣、柯维娜等人为本书的编写提供了大量的帮助,在此一并表示感谢。

虽然作者在本书的编写过程中力求叙述准确、完善,但由于水平有限,书中欠妥之处在所难免,希望读者和同仁能够及时指出,共同促进本书质量的提高。

5.读者服务:

为了方便解决本书疑难问题,读者朋友在学习过程中遇到与本书有关的技术问题,可以发邮件到邮箱book_hai@126.com,或者访问博客http://blog.sina.com.cn/tecbook,编者会尽快给予解答,我们将竭诚为您服务。

编者

2013年秋

第1章 系统仿真与MATLAB/Simulink

系统仿真是根据被研究的真实系统的数学模型研究系统性能的一门学科,现在尤指利用计算机去研究数学模型行为的方法。计算机仿真的基本内容包括系统、模型、算法、计算机程序设计与仿真结果显示、分析与验证等环节。

本章将介绍系统仿真技术的一些基本概念,并对本书所用的仿真软件MATLAB做简单介绍,初步领略MATLAB的强大功能。

学习目标:

(1)了解系统仿真技术的基本概念;

(2)初步了解MATLAB。

1.1 系统仿真技术概述

系统只指客观世界中具有某些特定功能、相互联系、相互作用的元素的集合。这里的系统是指广义上的系统,泛指自然界的一切现象与过程。系统的分类方法是多种多样的,习惯上依照其应用范围可以将系统分为工程系统和非工程系统:工程系统是指由相互关联部件组成的一个整体,实现特定的目标,例如控制系统、通讯系统等;非工程系统涵盖的范围更加广泛,大至宇宙,小至微观世界都存在着相互关联、相互制约的关系,形成一个整体,实现某种目的,所以均可以认为是系统。

系统模型是对实际系统的一种抽象,是对系统本质(或是系统的某种特性)的一种描述。模型具有与系统相似的特性。好的模型能够反映实际系统的主要特征和运动规律。模型可以分为实体模型和数学模型两类。

(1)实体模型又称物理效应模型,是根据系统之间的相似性而建立起来的物理模型,如建筑模型等。

(2)数学模型包括原始系统数学模型和仿真系统数学模型:原始系统数学模型是对系统的原始数学描述,是描述系统动态特性的数学表达式,用来表示系统运动过程中的各量的关系,是分析、设计系统的依据;

仿真系统数学模型是一种适合于在计算机上演算的模型,主要是根据计算机的运算特点、仿真方式、计算方法和精度要求将原始系统数学模型转换为计算机程序。

常见的系统模型有连续系统、离散时间系统、离散事件系统、混杂系统等,还可以细分为线性、非线性、定常、时变、集中参数、分布参数、确定性、随机等系统。

仿真是以相似性原理、控制论、信息技术及相关领域的有关知识为基础,以计算机和各种专用物理设备为工具,借助系统模型对真实系统进行试验的一门综合性技术。仿真可分为实物仿真、数学仿真、半实物仿真:实物仿真是指研制某些实体模型,使之能够重现原系统的各种状态。早期仿真大多属于这一类;数学仿真是用数学语言去描述一个系统,并编制程序在计算机上对实际系统进行研究的过程;半实物仿真又称数学物理仿真或者混合仿真。为了提高仿真的可信度或者针对一些难以建模的实体,在系统研究中往往把数学模型、物理模型和实体结合起来组成一个复杂的仿真系统,这种在仿真环节中存在实体的仿真称为半物理仿真或者半物理仿真,如飞机半实物仿真等。

计算机仿真是在研究系统过程中根据相似性原理,利用计算机来逼真模拟研究系统。研究对象可以是实际的系统,也可以是设想中的系统。计算机仿真可以用于研制产品或设计系统的全过程,包括方案论证、技术指标确定、设计分析、故障处理等各个阶段。

MATLAB,这一被国际公认的最优秀的科技应用软件,其强大的功能、友善的交互界面、简单的语言、开方的编程,使其成为计算机仿真不可缺少的基础软件。

1.2 MATLAB简介

MATLAB 是MATRIX LABORATORY 的简称,它是美国MathWorks 公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

1.2.1 MATLAB发展史

20 世纪70 年代,美国新墨西哥大学计算机科学系主任Cleve Moler 为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。

1.正式走向市场

1984 年由Little、Moler、Steve Bangert合作成立了的MathWorks 公司,他们用C 语言开发了第二代MATLAB,并正式把MATLAB推向市场。此时,MATLAB已经具备了数值计算和数据图示化的功能。

2.MATLAB 4.x 版本

20世纪90年代,MATLAB已成为国际控制界的标准计算软件。1992年,MathWorks公司推出了MATLAB 4.0 版本,并于第二年推出了微机版,使得软件的应用范围逐渐扩大。1994年推出的4.2c版本更是为图形界面设计方面提供了新方法。

Simulink 的应用起始于 MATLAB 4.0 版本,它被放在 MATLAB 的核心执行文件中。MATLAB 4.2 开始,Simulink 则以工具包的形式单独出现。

3.MATLAB 5.x 版本

MATLAB 5.x 版本是MathWorks 公司于20 世纪90 年代末期推出的。新版本可以处理更多的数据结构,例如结构体、多维矩阵以及类等,这使得MATLAB的编程更加简单方便。1999年推出的5.3版本则进一步增强了MATLAB语言的功能。

4.MATLAB 6.x 版本

为了提高MATLAB在数值算法、界面设计和外部接口等诸多方面的功能,MathWorks公司在2000年10 月底推出了MATLAB 6.0。2003年,MATLAB R6.5 采用最新的JIT 加速技术,为MATLAB程序提供了更快的执行速度。

在MATLAB 6.5 版本中,Simulink 升级为5.0 版本,该版本创建出完整的嵌入式系统设计环境。开发者可以在单一的环境下完成工程,同时还可以选择自动将算法及应用程序转换成C++等程序代码。

5.MATLAB 7.x 版本

MathWorks于2004 年推出的MATLAB 7.0 版本,为开发者提供了许多新的便捷功能。新版本允许同时使用多个文件和图形窗口,可以根据自己的习惯和喜好来定制桌面环境(如窗口大小、窗口布局),还可以设置自定义快捷键。

在随后的几年中,MathWorks公司陆续推出了MATLAB的7.1~7.14版本,不断地优化和提高MATLAB的性能。2012年的7.14版本包括了MATLAB&reg、Simulink&reg和Polyspace&reg三项产品新功能。

6.MATLAB 8.x 版本

MATLAB 2012b 版,即8.0 版,有了很大的改变。最明显的是其桌面,在MATLAB 主窗口中,工具条取代了菜单和工具栏。帮助文档进行了重新设计,改进了浏览、搜索和筛选功能。命令窗口中输入函数或变量出错时,会得到更正的建议信息。

目前为止,MATLAB 最新的版本为2013a,即8.1,本书就是以MATLAB R2013a 为软件版本进行编写的。

1.2.2 MATLAB产品说明

如图1-1所示,MATLAB产品主要有MATLAB、Simulink、Stateflow、Complier、RTW和Coder。

其中,Complier 是编译工具,它将以 MATLAB 语言为基础的函数文件编译生成函数库、可执行文件COM组件等。Complier的存在使得MATLAB能够与其他高级编程语言(如C、C++语言)进行混合编程,这样提高了程序的运行效率、并丰富了程序的开发手段。

Simulink是MATLAB的一个工具箱,它主要用来实现对工程问题的模型化及动态仿真,其本身具有良好的图形交互界面。通过采用Simulinkk模块组合的方法,能够快速、准确地创建动态系统的计算机模型。

Stateflow是交互式设计工具,它基于有限状态机理论,用于对复杂的事件驱动系统进行建模和仿真。

RTW 是Real-Time Workshop 的简称,它与Coder都是代码自动生成工具,它们可以直接将Simulink模型框图和Stateflow状态图转换成高效优化的程序代码。

MATLAB是整个MATLAB产品体系的基座,它是一个语言编程型开发平台,它为其他工具提供所需要的集成环境。同时,其对矩阵和线性代数的支持,使得它本身也具有强大的数学计算能力。

图1-2所示为MATLAB/Simulink的主要产品及其相互关系。

1.2.3 MATLAB/Simulink的特点

1.MATLAB的特点

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的特点如下。

(1)便利的开发环境。MATLAB提供了一组具有GUI的工具,包括MATLAB主窗口、文件编辑器、帮助文档等。

(2)强大的数学计算能力。MATLAB可进行包括基本函数、复杂算法、高级矩阵运算等非常强大的数学计算功能,特别适合矩阵代数领域的应用。更别说,其他许多高性能数值计算的高级算法与极其丰富的库函数。

(3)简单高效的编程语言。MATLAB的运算符使得程序变得简短,灵活使用它们会让编程变得轻松且高效。MATLAB程序书写格式自由,库函数的使用可以避开繁杂的子程序编写任务,自定义函数也大大提高了程序设计的自由度。

(4)强大的图形功能。MATLAB提供了丰富的绘图函数命令,并且具有较强的编辑图形界面的能力,对于图形的编辑和设置完全可以在可视化环境下进行。

(5)强大的工具箱。MATLAB工具箱分为功能性工具箱和学科性工具箱两类。

功能性工具箱:主要用于扩充符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互功能。

学科性工具箱:由相关专业领域内的专家编写,专业性强。

(6)方便的应用程序接口功能。MATLAB提供了应用程序接口,可以使用C、C++或FORTRAN等其他高级编程语言进行编程,实现与MATLAB程序的混合编程。

2.Simulink的特点

Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需书写大量程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。Simulink具有如下特点。

(1)动态系统的建模与仿真。Simulink 支持线性、非线性、连续、离散、多变量和混合式系统结构,所以几乎任何一种类型的真实动态系统Simulink都能胜任。

(2)建模方式直观。Simulink 是一种图形化的仿真工具,利用其可视化的建模方式,可迅速地建立动态系统的框图模型。

(3)模块可定制。Simulink 允许自定义模块的使用,可以对模块的图标、对话框等进行自定义编辑。Simulink也允许将C、FORTRAN、Ada代码直接移植到Simulink模型当中。

(4)仿真模拟快速、精准。Simulink 先进的求解器为非线性系统仿真提高了精度,它能确保连续系统或离散系统的仿真高速、精准地进行。图形化调试工具让系统的开发设计过程产生的错误无处遁形。

(5)复杂系统的层次性。Simulink 利用子系统模块,使得庞杂的系统模型构建变得简单易行。整个系统可以按照自上而下或自下而上的方式进行分层构建,子系统的嵌套使用不受限制。

(6)仿真分析的交互性。Simulink 提供示波器等观察器,用于对动画或图形的显示。仿真过程中,利用这些观察器可以监视仿真结果。这种交互式特性能让开发者快速进行算法评估以及参数优化。

1.3 MATLAB/Simulink应用示例

本节将介绍几个例子来展示MATLAB/Simulink在系统仿真中的应用,希望读者通过这些例子对MATLB/Simulink有一个初步的认识。

【例1-1】微分方程求解。一个非线性刚体系统可用如下方程进行描述:

试求出在初始条件y1(0)=0、y2(0)=1、y3(0)=1下系统的解。

编写如下MATLAB程序:

function ep1_1

options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);

[T,Y] = ode45(@rigid,[0 12],[0 1 1],options);

plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')

function dy = rigid(t,y)

dy = zeros(3,1);

dy(1) = y(2) * y(3);

dy(2) =-y(1) * y(3);

dy(3) =-0.51 * y(1) * y(2);

程序运行结果如图1-3所示。

【例1-2】三维图形绘制。编写如下MATLAB程序:

figure;

[X,Y] = meshgrid(-8:.5:8);

R = sqrt(X.^2 + Y.^2) + eps;

Z = sin(R)./R;

mesh(Z);

程序运行结果如图1-4所示。

【例1-3】Simulink模型建立与仿真。

建立如图1-5所示的Simulink模型。

这是一个利用S-Function建立的系统模型,通过Scope模块可以观察仿真结果。运行仿真,双击Scope模块,得到如图1-6所示的仿真结果。

1.4 本章小结

本章简要介绍了系统仿真的基本概念和对MATLAB的一些初步认识,目的是让读者对其有一定的认识,为后面MATLAB/Simulink的学习做准备。

本书所讲的系统仿真只针对计算机仿真,即在研究系统过程中根据相似性原理,利用计算机来近似模拟研究对象。研究对象可以是实际的系统,也可以是设想中的系统。MATLAB是计算机仿真不可或缺的基础软件,它经过多年的发展与扩充,成为了当今世界上应用最广泛、最受人们欢迎的系统仿真与科学计算软件工具。

第2章 MATLAB编程基础

本书使用的MATLAB 版本为MATLAB R2013a。本章将较全面地介绍MATLAB 正常运行的基本流程以及编程基础与技巧,帮助读者在领略MATLAB非凡能力的同时比较轻松地跨过MATLAB门槛,为后面学习MATLAB工具箱Simulink打下坚实的基础。

学习目标:

(1)熟悉MATLAB工作环境;

(2)掌握MATLAB编程的基础知识,包括矩阵、程序流程控制;

(3)熟悉MATLAB的M文件编写,以及图形绘制。

2.1 MATLAB工作环境

MATLAB提供了全新的工作环境,了解并熟悉该环境是使用MATLAB的基础。下面将介绍MATLAB主界面(包括工具栏、命令窗口等)、文本编辑窗口以及帮助的使用。

2.1.1 MATLAB主界面

安装完 MATLAB R2013a软件并重新启动计算机后,在 Windows 桌面上将出现MATLAB的软件图标。鼠标双击该图标,就可启动MATLAB的工作环境,显示默认的程序主界面,如图2-1所示。

默认的程序主界面包括:菜单,工具栏,命令窗口,当前路径浏览器,工作空间浏览器,命令历史浏览器。这些功能子窗口使MATLAB的操作更容易、更方便。

注意:

(1)各功能子窗口是否显示以及如何显示完全由读者的需要和习惯决定,可以通过工具栏中Layout选项中对应的子选项进行选择。

如图2-2 所示,SHOW 下面的子选项打勾,说明对应的子窗口会显示在MATLAB主界面中,选择SELECT LAYOUT 下面的子选项可以设置子窗口的布局方式。

(2)读者也可以通过拖曳子窗口的方式来对MATLAB主界面进行布局。如图2-3所示,单击子窗口的标题栏并按住鼠标左键不放,整个子窗口会变成蓝色,这时可将该子窗口移动至主界面中其他任意位置,蓝色块窗口也会跟着移动,松开鼠标左键,主界面便会重新布局。

(3)读者还可以将子窗口从MATLAB主界面中解锁出来,成为一个单独的窗口。如图2-4所示,单击子窗口标题栏右上角的Action图标,选择Undock子选项,Command Window命令窗口从主界面中解锁出来变成了一个单独的窗口。

1.菜单

MATLAB R2013a 版本的菜单与其他通用软件开发环境有些不太一样的地方,它只有三个选项,分别是HOME、PLOT和APP。单击每个选项,下方都会出现不同的工具栏。HOME和PLOT是最常用的两个菜单。

2.HOME工具栏

该工具栏中有几个很重要的工具图标。

:New,创建新的文档。可以创建新的文本文件,实现MATLAB命令文件的输入、编辑、调试、保存等处理功能;也可以创建新的 Figure 图形文件,实现 MATLAB 图形文件的显示、编辑、保存等处理功能;还可以创建新的Simulink模型文件,实现Simulink仿真模型的建模、仿真、调试、保存等处理功能。

:Simulink Library,打开Simulink 模块库,进入Simulink 仿真环境,作用相当于在MATLAB命令窗口中输入simulink并按回车键。

:Help,进入MATLAB的帮助环境界面,允许读者进行帮助文档阅读、根据关键词的帮助查询以及查看演示范例。

:Preferences,类似于Option,读者可以在这里对MATLAB的一些属性、性能进行设置。

3.PLOT工具栏

该工具栏方便读者对工作空间里的变量进行绘图,图 2-5 中不同的图标表示不同的绘图方式。

注意:是在HOME(或PLOT,APP)工具栏下方的路径选择工具栏,读者可在此进行MATLAB当前工作目录的设置。如果读者运行保存在其他目录的文件,会造成MATLAB程序不能正常执行,MATLAB会提示读者是否要更换工作目录至要运行的文件所在目录,如图2-6所示。

4.命令窗口

命令窗口是读者与MATLAB人机交互的主要环境。在提示符“>>”后键入MATLAB命令并按回车键确认,该命令窗口将立即显示执行结果。

表2-1所示为命令窗口中的常用命令,读者需要熟练掌握。

【例2-1】编写正弦函数的MATLAB指令,计算y值。

在命令窗口中输入下面的命令并按回车键确认。

>> t=pi/6;y=sin(t)

其中pi和sin分别为MATLAB内置的π值和正弦函数。得到结果显示y=0.5000。

y =

0.5000

注意:命令窗口中,命令行均以提示符“>>”开头,计算结果不带提示符,这样易于读者判断某条语句是命令还是计算结果。

5.当前路径浏览器

如图2-7所示,当前工作路径中所有文件夹及所有类型的文件名均显示于此窗口中。用户可在此窗口中进行类似于一般文件夹中的管理工作,如新建或删除文件夹、重命名文件、打开目标文件等。

6.工作空间浏览器

当MATLAB启动后,系统自动在内存中开辟一块存储区用于存储用户在MATLAB命令窗口中定义的变量、运算结果和有关数据,此内存空间称为Workspace工作空间。

工作空间在MATLAB刚启动时为空,读者退出MATLAB后,工作空间的内容将不再保留,也就说工作空间里的数据只是临时存放。如图 2-8 所示,在此窗口中可以对工作空间进行管理。

例 2-1 输入实现正弦函数的命令语句并执行后,系统工作空间管理窗口中显示的信息如图2-8所示。可见,在执行命令过程中,读者在MATLAB命令窗口中定义的变量和运算结果确实都已经存储在工作空间中。

读者可方便地查看当前工作空间中存在的变量和数值,而且还可进行新变量定义、变量删除、保存等管理功能。

7.命令历史浏览器

图2-9 展示的是命令历史浏览器窗口,标题栏名称为Command History。此窗口按时间顺序完整地记录了曾经在MATLAB工作窗口中输入并执行过的命令语句。

通过命令历史浏览器,可实现如下功能:

(1)方便地按顺序查看输入命令的记录;

(2)双击单条命令行,可使其立即再次执行,而不需要读者重新输入命令行;

(3)按住Ctrl键并单击鼠标左键可选中多条命令行,再单击鼠标右键,在弹出的菜单中选择Create Script 选项,可将选中的多条命令行作为一个文件进行编辑和保存。如图2-10所示。

2.1.2 MATLAB文本编辑窗口

MATLAB编程有两种工作方式:一种称为行命令方式,如例2-1,就是在命令窗口中一行一行地输入程序,计算机每次对一行命令做出反应,因此也称为交互式的指令行操作方式;另一种工作方式为M文件编程工作方式。编写和修改M文件就要用到文本编辑窗口。

表2-2列出了这两种工作方式的简单比较。

读者可以通过创建一个新的文本文件或打开一个原有的文本文件的方式来进入文本编辑窗口。该类文本文件名以 .m为后缀。读者将文本编辑窗口中的程序保存后,在MATLAB命令窗口中输入该文件的文件名就能执行程序。

图2-11展示的是例2-1用M文件的方式运行过程,运行结果与之前的一致。

2.1.3 MATLAB帮助使用

理解、掌握和运用MATLAB的帮助文档,对读者是十分重要和必需的。MATLAB帮助文档系统相当完备,就查询系统的调用方式而言,可分为两种:

·单击MATLAB工具栏中的Help按钮,进入MATLAB的帮助环境界面,读者可以进行帮助文档阅读、根据关键词的帮助查询以及查看演示范例,这与 Windows的求助方法一样;

·在MATLAB 命令窗口内,直接输入帮助命令求助。这种方法最常使用。

下面将较为详细地介绍输入帮助命令的求助方法。

1.help命令

help是最常用的求助命令。它可以提供绝大部分MATLAB命令使用方法的在线说明。这里将举例介绍help的应用方法。

【例2-2】在线帮助总览。在MATLAB命令窗口中输入help并按回车键确认,将出现如图2-12所示的信息,这些信息是各专题的简介。从图中可以看出MATLAB提供的专题帮助是很详尽的。

【例2-3】具体专题的帮助信息。在MATLAB命令窗口中输入help(专题名),并按回车键确认,图2-13为MATLAB提供的基本矩阵操作专题的帮助信息。

【例2-4】具体函数的帮助信息。在MATLAB命令窗口中输入help(函数名),并按回车键确认,图2-14为MATLAB提供的正弦函数sin的帮助信息。

注意:

(1)帮助信息第一行是sin函数的简介,第二行为sin函数的使用方法,帮助信息都是这样的格式;

(2)help的工作原理是,把指定名字的那个M文件的第一段注释内容显示出来。读者可以采用如图2-15所示的注释结构,以构成自己的文件的在线帮助;

(3)使用edit加上想看的函数名就可以打开该函数的M文件。例如sin函数,在MATLAB 命令窗口里面输入edit sin,这样就可以打开sin的M 文件了,如图2-15所示。

2.lookfor命令

当要查找具有某种功能但又不知道准确名字的命令时,help 的能力就不够了。为此, MATLAB 设计了一个 lookfor 命令。它可以根据用户提供的完整或不完整的关键词,去搜索出一组与之相关的命令。

【例2-5】查找有关random随机的命令。在MATLAB 命令窗口中输入lookfor random,并按回车键确认,图2-16为MATLAB提供的有关random的帮助信息。

注意:

(1)有时MATLAB会搜索出很多条信息,程序一直处于搜索状态,如果读者想要停止搜索,可以使用组合键ctrl+c,搜索便会停止,搜索结果为之前搜索到的所有信息。

(2)lookfor的工作原理是,对MATLAB目录中的每个M文件注释区的第一行进行扫描,一旦发现这行中包含欲查询的字符串,那么该文件名以及注释的第一行将被显示出来。当然,读者想建立自己文件的在线帮助时,也可利用这种机制。

3.其他帮助命令

MATLAB还提供了一些其他的帮助命令,见表2-3。关于这些命令详细内容在此不多介绍,有兴趣的读者可以用help命令自行查询。

2.2 MATLAB语言基本元素

MATLAB语言提供了丰富的数据类型,如实数、复数、向量、矩阵、字符串、多维数组、结构体、类和对象等,还提供了丰富的内置功能函数。这些功能使得MATLAB的编程功能非常强大。本节介绍变量和矩阵这两种最基本且常用的数据类型以及赋值语句的基本形式。

2.2.1 变量

变量是保存数据信息的一种最基本的数据类型。变量的命名应遵循如下规则:

(1)变量名必须以字母开头;

(2)变量名可以由字母、数字和下划线混合组成;

(3)变量名区分字母大小写;

(4)MATLAB保留了一些具有特定意义的默认变量,读者编程时可以直接使用,并尽量避免另外自定义,表2-4为MATLAB的系统保留变量。

注意:A和a表示的是不同的变量,读者编程时必须注意。

2.2.2 赋值语句

MATLAB 采用命令行形式的表达式语言,每一个命令行就是一条语句,其格式与书写的数学表达式十分相近,非常容易掌握。读者在命令窗口输入语句并按回车键确认后,该语句就由 MATLAB 系统解释运行,并给出运行结果。MATLAB 的赋值语句有下面两种结构。

1.直接赋值语句

直接赋值语句的基本机构如下:

赋值变量=赋值表达式

其中,等号右边的表达式由变量名、常数、函数和运算符构成,直接赋值语句把右边表达式的值直接赋给了左边的赋值变量,并将返回值显示在MATLAB的命令窗口中。

【例2-6】对a赋值,实现a=100+99。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> a=100+99

运行结果如下:

a =

199

注意:

(1)若赋值语句后面没有分号“;”,MATLAB命令窗口中将显示表达式的运算结果;若不想显示运算结果,则应该在赋值语句末尾加上分号;

(2)若省略赋值语句左边的赋值变量和等号,则表达式运算结果将默认赋值给系统保留变量ans;

(3)若等式右边的赋值表达式不是数值,而是字符串,则字符串两边应加单引号。

2.函数调用语句

直接赋值语句的基本结构如下:

[返回变量列表]=函数名(输入变量列表)

其中,等号右边的函数名对应于一个存放在合适路径中的MATLAB文本文件。函数可以分为两大类:一类是MATLAB内核中已经存在的内置函数;另一类是读者根据需要自定义的函数。

返回变量列表和输入变量列表均可以由若干变量名组成。

注意:若返回变量个数大于 1,则它们之间应该用逗号或空格分隔;若输入变量个数大于1,则它们之间只能用逗号分隔。

【例2-7】通过调用sin函数求的值。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> a=sin(pi/2)

运行结果如下:

a =

1

注意:

(1)函数名的命名规则与变量名命名规则一致,读者在命名自定义函数时也必须避免与MATLAB已有的内置函数重名;

(2)对于内置函数,读者可直接调用;对于自定义函数,该函数所对应的M文件应当存在并且保存在MATLAB可以搜索到的目录中。

2.2.3 矩阵及其元素表示

MATLAB的中文意思是“矩阵实验室”,矩阵是MATLAB进行数据处理的基本变量单元。因此,掌握矩阵的表示方法是进行MATLAB编程和应用的基础。

1.矩阵的表示

用MATLAB语言表示一个矩阵非常容易。在MATLAB命令窗口中输入下面语句并按回车键确认。

>> A=[1,2;3,4]

运行结果如下:

A =

1 2

3 4

可见矩阵变量A被成功赋值,并在MATLAB的工作空间中建立一个名为A的矩阵变量,读者可以在后继的命令和函数中随意调用该矩阵。在输入矩阵过程中必须遵循以下规则:

(1)必须使用方括号“[]”包括矩阵的所有元素;

(2)矩阵不同的行之间必须用分号或回车符隔开;

(3)矩阵同一行的各元素之间必须用逗号或空格隔开。

为方便用户使用,提高编程效率,除了最基本的直接输入方法外,MATLAB还提供给用户一些可以直接调用的内置基本矩阵函数,有时可以成为创建矩阵的捷径。

表2-5为MATLAB提供的主要内置基本矩阵函数。

【例2-8】调用rand函数创建一个3行4列的随机矩阵。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> A=rand(3,4)

运行结果如下:

A =

0.3112 0.6020 0.6892 0.0838

0.5285 0.2630 0.7482 0.2290

0.1656 0.6541 0.4505 0.9133

注意:向量是矩阵的一种特例,前面介绍的有关矩阵的表示方法完全适用于向量,只是表示矩阵行列数的n和m中,有一个为1。

【例2-9】输入一个行向量a=[1,2,3]和一个列向量b=[1;2;3]。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> a=[1,2,3]

b=[1;2;3]

运行结果如下:

a =

1 2 3

b =

1

2

3

MATLAB 还提供了一个便利且高效的表达式来给等步长的行向量赋值,即冒号表达式。冒号表达式的基本调用格式为:

V=s:h:e

其中,s、e为标量,分别代表向量的起始值和终止值,h代表向量元素之间的步长值。

【例2-10】输入冒号表达式V=0:0.1:0.5。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> V=0:0.1:0.5

运行结果如下:

V =

0 0.1000 0.2000 0.3000 0.4000 0.5000

2.矩阵元素的表示和赋值

矩阵元素的行号和列号称为该元素的下标,是通过“()”中的数字(行、列的标号)来标识的。矩阵元素可以通过其下标来引用,如A(i,j)表示矩阵A第i行第j列的元素。

【例2-11】取矩阵A=[1,2;3,4]第2行全部元素。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> A=[1,2;3,4];B=[A(2,1),A(2,2)]

运行结果如下:

B =

3 4

注意:冒号“:”在这里也能发挥很大作用。A(2,:)表示矩阵A第2行全部元素,A(:,2)表示矩阵A第2列全部元素,A(1,1:2)表示矩阵A第1行第1~2列的全部元素。在MATLAB命令窗口中输入下面语句并按回车键确认。

>> A=[1,2;3,4];

B1=A(2,:)

B2=A(:,2)

B3=A(1,1:2)

运行结果如下:

B1 =

3 4

B2 =

2

4

B3 =

1 2

2.3 MATLAB下矩阵的运算

矩阵运算是MATLAB最重要的运算,因为MATLAB的运算大部分都建立在矩阵运算的基础之上。MATLAB有三种矩阵运算类型:矩阵的代数运算、矩阵的关系运算和矩阵的逻辑运算。其中,矩阵的代数运算应用最广泛。

根据不同的应用目的,矩阵的代数运算又包含两种重要的运算形式:按矩阵整体进行运算,按矩阵单个元素进行运算的元素群运算。

ans =

2.3.1 矩阵的代数运算

1.矩阵的算术运算

矩阵算术运算的书写格式与普通算术运算相同,包括优先顺序规则,但其乘法和除法的定义和方法与标量截然不同,读者应在矩阵的运算意义上加以理解和应用。

表2-6是MATLAB矩阵的算术运算符及其说明。

下面为两矩阵的加法、乘法、乘方运算示例,运算失败时MATLAB会提示出错。

>> A=[1,1;2,2];B=[1,1;2,2];A+B

2 2

4 4

>> A=[1,1;2,2;3,3];B=[1,1;2,2];A+B

Error using +

Matrix dimensions must agree.

>> A=[1,1;2,2];B=[1,1;2,2];A*B

ans =

3 3

6 6

>> A=[1,1;2,2];B=[1,1;2,2;3,3];A*B

Error using *

Inner matrix dimensions must agree.

>> A=[1,1;2,2];B=2;A^B

ans =

3 3

6 6

>> A=[1,1;2,2];B=[1,2];A^B

Error using ^

Inputs must be a scalar and a square matrix.

To compute elementwise POWER, use POWER (.^) instead.

注意:

(1)若A、B两矩阵进行加、减运算,则A、B必须维数相同,否则系统提示出错;

(2)若 A、B 两矩阵进行乘运算,则前一矩阵的列数必须等于后一矩阵的行数(内维数相等);

(3)若A、B两矩阵进行右除运算,则两矩阵的列数必须相等(实际上,X =B/A=B×A−1);

(4)若A、B两矩阵进行左除运算,则两矩阵的行数必须相等(实际上,X =A\B=A−1·B)。

2.矩阵的运算函数

MATLAB系统函数库中提供了一些常用的矩阵运算函数,熟悉这些对读者非常有用。例如,矩阵的加、减、乘、除等运算对参与运算的矩阵都有各自的矩阵维数匹配要求。

表2-7列出了部分常用的矩阵运算函数。

下面为常用矩阵运算函数的示例。

>> A=[1,2,3;4,5,6;7,8,9];size(A)

ans =

3 3

>> A=[1,2,3;4,5,6;7,8,9];length(A)

ans =

3

>> A=[1,2,3;4,5,6;7,8,9];sum(A)

ans =

12 15 18

>> A=[1,2,3;4,5,6;7,8,9];max(A)

ans =

7 8 9

3.矩阵的元素群运算

元素群运算,是指矩阵中的所有元素按单个元素进行运算。为了与矩阵作为整体的运算符号相区别,元素群运算约定:在矩阵运算符“*”、“/”、“\”、“^”前加一个点符号“.”,以表示在做元素群运算,而非矩阵运算。元素群加、减运算的效果与矩阵加、减运算是一致的,运算符也相同。

表2-8为矩阵的元素群运算符及其说明。

下面为元素群运算的示例。

>> A=[1,2;3,4];B=[1,2;3,4];A.*B

ans =

1 4

9 16

>> A=[1,2;3,4];B=[3,4;5,6];A.\B

ans =

3.0000 2.0000

1.6667 1.5000

>> A=[1,2;3,4];B=[3,4;5,6];A./B

ans =

0.3333 0.5000

0.6000 0.6667

>> A=[1,2;3,4];B=[3,4;5,6];A.^B

ans =

1 16

243 4096

4.元素群的函数

MATLAB提供了几乎所有初等函数,包括三角函数、对数函数、指数函数和复数运算函数等。大部分的MATLAB函数运算都是分别作用于函数变量(矩阵)的每一个元素,这意味着这些函数的自变量可以是任意阶的矩阵。

表2-9列出了MATLAB常用初等函数名及其对应功能。

【例2-12】已知,求y=tan(x)。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> x=[0,pi/6,pi/4,pi/3];y=tan(x)

运行结果如下:

y =

0 0.5774 1.0000 1.7321

2.3.2 矩阵的关系运算

MATLAB语言定义了各种矩阵的关系运算,表2-10列出了MATLAB的关系运算符及其意义。

在使用关系运算时,首先应保证两个矩阵的维数相等或至少一个为标量。若参与运算的对象为两个矩阵,则关系运算对两个矩阵的对应元素进行关系比较,若关系满足,则将结果矩阵中该位置的元素置1,否则置0。若参与运算的对象之一为标量,则关系运算将矩阵的每一个元素与该标量逐一进行关系比较,若关系满足,则将结果矩阵中该位置的元素置1,否则置0。

注意:关系运算比算术运算具有更高的优先权。

下面为矩阵A=[1,1;1,1]和矩阵B=[0,1;2,3]作关系比较的运算结果示例。

>> A=[1,1;1,1];B=[0,1;2,3];A>B

ans =

1 0

0 0

>> A=[1,1;1,1];B=[0,1;2,3];A>=B

ans =

1 1

0 0

>> A=[1,1;1,1];B=[0,1;2,3];A==B

ans =

0 1

0 0

>> A=[1,1;1,1];B=[0,1;2,3];A~=B

ans =

1 0

1 1

2.3.3 矩阵的逻辑运算

在逻辑运算中,所有非零元素的逻辑值为“真”,用代码“1”表示;值为零的元素的逻辑值为“假”,用代码“0”表示。

逻辑运算规则与关系运算基本一致,也是针对两个矩阵的对应元素。逻辑运算真值表与一般二值运算真值表完全一致。

表2-11为MATLAB矩阵的基本逻辑运算符号及其意义。

2.4 MATLAB的程序流程控制

作为一种程序设计语言,MATLAB同一般高级程序语言一样,为用户提供了丰富的程序结构语言来实现用户对程序流程的控制。

MATLAB的程序路程控制主要包括循环控制和条件选择控制。

2.4.1 循环控制结构

1.for循环结构

for循环结构的格式为

for 循环变量=向量表达式

循环体语句组

end

该循环结构的执行方式为:从向量表达式的第一列开始,依次将向量表达式各列的值赋值给循环变量,然后执行循环体语句组中的命令,直到最后一列。

通常使用的for循环格式为

for i = s : h : e

即用冒号表达式进行等步长向量的创建。

注意:循环语句组必须是一组合法的MATALB命令;end不可省略。

【例2-13】利用for循环语句实现对的求解。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> sum=0;

>> for i=1:1:50

sum=sum+i;

end

>> sum

运行结果如下:

sum =

1275

注意:可将for i = 1:1:50写成for i = 1:50,因为系统默认步长为1,所以可以省略中间的“:1”。for循环语句可以实现多重循环,但for与end必须成对出现。

2.while循环结构

while循环结构的基本格式为

while关系表达式

循环体语句组

end

该循环结构的执行方式为:

(1)判断关系表达式是否为真,若为真,则执行(2),否则执行(3);

(2)执行循环体语句组中的命令,再返回至(1);

(3)执行end语句,即循环结束。

【例2-14】利用while循环语句实现对的求解。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> sum=0;

>> i=1;

>> while i<=50

sum=sum+i;

i=i+1;

end

>> sum

运行结果如下:

sum =

1275

计算结果与例2-13一致。

end

2.4.2 条件选择结构

1.if条件选择结构

条件选择结构中最基本的是if条件选择结构语句。if条件选择结构有3种基本格式:

(1) if条件表达式

条件语句组

end

(2) if条件表达式

条件块语句组 1

else

条件块语句组 2

end

(3) if条件表达式1

条件块语句组 1

elseif 条件表达式 2

条件块语句组 2

elseif条件表达式 n-1

条件块语句组 n-1

else

条件块语句组 n

end

注意:

(1)else子句不能单独使用,必须与if配对使用;

(2)if条件选择结构可以嵌套使用

【例 2-15】学生成绩分类:90 分以上为 A,80~89 分为 B,70~79 分为 C,60~69分为D,60分以下为E,要求输入一个分数输出其对应等级。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> grade=input('Please enter a grade:');

if grade>=90

degree='A';

elseif (grade>=80)&&(grade<=89)

degree='B';

elseif (grade>=70)&&(grade<=79)

degree='C';

elseif (grade>=60)&&(grade<=69)

degree='D';

else

degree='E';

disp(['The degree is ',degree])

MATLAB命令窗口中显示Please enter a grade,要求输入成绩,输入76并按回车键确认,得到结果The degree is C,该成绩等级为C。

2.switch条件选择结构

switch条件选择结构用于多分支选择,其基本格式为:

switch(表达式)

case 常量表达式1

语句组1

case 常量表达式2

语句组2

case 常量表达式n

语句组n

otherwise:

语句组 n+1

end

【例 2-16】学生成绩分类:90 分以上为 A,80~89 分为 B,70~79 分为 C,60~69分为D,60分以下为E,要求输入一个等级输出其对应分数。

在MATLAB命令窗口中输入下面语句并按回车键确认。

>> degree=input('Enter a degree:');

switch degree

case 'A'

disp('The grade is 90-100.');

case 'B'

disp('The grade is 80-89.');

case 'C'

disp('The grade is 70-79.')

case 'D'

disp('The grade is 60-69.')

case 'E'

disp('The grade is 0-59.')

otherwise

disp('There is no this degree.')

end

注意:MATLAB中,switch条件选择结构只执行第一个匹配的case对应的语句组,故不需要break。

2.5 M文件的编写

M文件可分为脚本M文件(简称脚本文件)和函数M文件(简称函数文件)两大类,其特点和适用领域均不同。

2.5.1 脚本文件

脚本文件是由MATLAB语句构成的文本文件,以.m为扩展名。运行命令文件的效果等价于从MATLAB命令窗口中按顺序逐条输入并运行文件中的指令,类似于DOS下的批处理文件。

脚本文件运行过程所产生的变量保留在MATLAB的工作空间中,脚本文件也可以访问MATLAB当前工作空间的变量,其他脚本文件和函数可以共享这些变量。因此,脚本文件常用于主程序的设计。

【例2-17】编写脚本文件,对数a、b、c进行排序,并按从大到小的顺序输出。

(1)在MATLAB窗口中输入a、b、c的数值,即下面语句:

>> a=1;b=0;c=3;

(2)新建一个文本文件,在该文本编辑窗口中输入对数 a、b、c 进行排序的命令,并以文件名ep2_17.m保存,如图2-17所示。

注意:sort是MATLAB的内置函数,用于对矩阵进行排序,descend表示降序。

(3)在MATLAB命令窗口中输入M文件名,即ep2_17,得到下面结果。

>> ep2_17

ans =

3 1 0

注意:文本文件ep2_17执行过程中,成功地访问了MATLAB工作空间的变量和数据a、b、c。

2.5.2 函数文件

函数文件是M文件的另一种类型,它也是由MATLAB语句构成的文本文件,并以.m为扩展名。MATLAB的函数文件必须以关键字function语句引导,其基本结构如下:

function [返回参数1,返回参数2,…]=函数名(输入参数1,输入参数2,…)

% 注释说明语句段,由%引导

输入、返回变量格式的检测语句

函数体语句

函数文件具有如下特点。

(1)函数名由读者自定义,与变量的命名规则相同。

(2)保存的文件名必须与定义的函数名一致。

(3)读者可通过返回参数及输入参数来实现函数参数的传递,但返回参数和输入参数并不是必须的。返回参数如果多于1个,则应该用中括号“[]”将它们括起来;输入参数列表必须用小括号“()”括起来,即使只有一个输入参数。

(4)注释语句段的每行语句都应该用%引导,%后面的内容不执行。用户可用help命令显示出注释语句的内容,用于函数使用前的信息参考。

(5)如果函数较复杂,则正规的参数格式检测是必要的。如果输入或返回参数格式不正确,则应该给出相应的提示。

(6)函数中输入和返回参数的实际个数分别有MATLAB内部保留变量nargin和nargour给出,只要运行了该函数,MATLAB将自动生成这两个变量,因此用户编程时可直接使用。

(7)与一般高级语言不同的是,函数文件末尾处不需要使用end命令。

【例2-18】编写函数文件,以数a、b、c为函数参数,对数a、b、c进行排序,并按从大到小的顺序输出。

(1)新建一个文本文件,在该文本编辑窗口中输入下面的命令,并以文件名ep2_18保存在当前工作目录中;

function out=ep2_18(a,b,c)

% This function is used to sort a, b and c.

if nargin==3

out=sort([a,b,c],'descend');

end

注意:这里有对参数个数的检测,参数个数等于3时排序命令才会执行。

(2)在MATLAB命令窗口中调用该函数文件,得到下面的结果。

>> out = e2_17(1,0,3)

out =

3 1 0

注意:调用函数文件时,运行结果可保存在任意名称的变量下,不必与函数文件中的返回变量相同。

与脚本文件相比,函数文件的优点之一是实现了参数的传递,这极大地提高了文件的通用性。例如,在分别用脚本文件和函数文件实现对数 a、b、c 的排序程序中,所用的命令几乎一样,但脚本文件ep2_16只能在当前工作窗口中使用,参数必须在工作空间中给定,而函数文件ep2_17则可以被任何主程序或其他函数调用,参数可以任意设定。

【例2-19】编写函数文件,实现一个n行m列矩阵,使得该矩阵第i行第j列元素值为1/(i+j-1)。要求在编写的函数中实现如下几点:

(1)如果只给出一个输入,则会自动生成一个方阵;

(2)在函数中给出合适的注释信息;

(3)检测输入和返回变量的个数,如果有错误则给出错误信息。

编写函数文件ep2_19,在该文件中输入下面的语句:

function A=ep2_19(n,m)

% 该函数用于创建一个特殊矩阵: A(i,j)=1/(i+j-1)

% A=ep2_18(n,m) 创建一个n 行m列矩阵

% A=ep2_18(n) 创建一个n 阶方阵

if nargout>1

error('Too many output arguments!');

end

if nargin==1

m=n;

elseif (nargin==0)||(nargin>2)

error('Wrong number of input arguments');

end

A=zeros(n,m);

for i=1:n

for j=1:m

A(i,j)=1/(i+j-1);

end

end

在MATLAB命令窗口中调用函数ep2_19,计算结果如下:

>> A=ep2_19(2,3)

A =

1.0000 0.5000 0.3333

0.5000 0.3333 0.2500

2.6 MATLAB的图形绘制

MATLAB除了强大的数值分析功能外,还具有方便的绘图功能。利用MATLAB丰富的二维、三维图形函数和多种修饰方法,只要指定绘图方式并提供绘图数据,就可以绘制出理想的图形。由于MATLAB的图形系统是建立在诸如线、面等图形对象的集合基础之上,因此用户可以对任何一个图形元素进行单独的修改,而不影响图形的其他部分。

2.6.1 二维图形的绘制

1.基本绘图命名

MATLAB 中最常用的绘图函数为 plot(),它是用于绘制二维曲线的,根据函数输入参数不同,常用的几种调用格式如表2-12所示。其中,’option’用来设置曲线属性的选项,其内容主要包括诸如颜色、线型、标记类型等曲线属性。’option’选项并不是必需项,若缺少该项,MATLAB将按系统默认格式统一安排各条曲线的属性值。

MATLAB提供了三种’option’选项以供修改:Line style线类型,Marker symbol标记符号,Color颜色。表2-13列出了’option’选项的属性。

【例2-20】用三种不同的线型、标记符号和颜色分别绘制三条不同相位的正弦曲线。

(1)新建脚本文件ep2_20.m,输入下面的绘图命令,并保存;

figure

t = 0:pi/20:2*pi;

y1 = sin(t);

y2 = sin(t-pi/2);

y3 = sin(t-pi);

plot(t,y1,t,y2,t,y3)

(2)在MATLAB命令窗口中调用文件ep2_20,出现如图2-18所示的绘图结果。

注意:

(1)用来绘制图形的数据必须已经存储在工作空间中,也就是说在执行plot()命令之前,当前工作空间里必须有可用来绘制图形的数据;

(2)对应的x轴和y轴的数据长度必须相同;

(3)如果省略选项’option’,系统将按默认的格式绘制曲线;

(4)’option’中的属性可以多个连用,如选项’--b’表示绘制蓝色的虚线;

(5)执行Figure 命令时,绘图结果将出现在一个新的窗口中。如图2-18 所示,Figure 1显示的是例2-20绘制的结果,如一般的窗口,它有自己的菜单栏和工具栏;

(6)如果读者对已绘制的图形不满意,提出更具体的要求,如坐标轴范围,绘制网格等,在MATLAB命令窗口中输入下面的命令,Figure 1中的图形会有如图2-19所示的变化。

>> axis([0 10 -2 2])

>> grid on

2.图形修饰

有时读者会对图形的绘制进行一些修饰,MATLAB提供了多种图形函数,用于图形的修饰。常用的图形修饰函数名称及其功能说明如表2-14所示。

【例2-21】对例2-20的图形进行修饰,实现以下要求:

(1)将图形的x 轴大小范围限定在[0, 2π]之间,y轴的大小范围限定在[-1,1]之间;

(2)x、y轴分别标注为“弧度值”、“函数值”;

(3)图形标题标注为“三个不同相位的正弦曲线”;

(4)添加图例标注,标注字符分别为y1,y2,y3;

(5)给三条曲线分别添加属性'-.r*','--mo',':bs';

(6)在三条曲线上分别标注文本y1=sin(t),y2=sin(t−),y3=sin(t−π);

(7)给图形添加网格。

在文本文件ep2_20.m的基础上,添加如下命令,并另存为ep2_21.m。

% 图形绘制

figure

t = 0:pi/20:2*pi;

y1=sin(t);

y2=sin(t-pi/2);

y3=sin(t-pi);

plot(t,y1,'-.r*',t,y2,'--mo',t,y3,':bs')

% 图形修饰

axis([0,2*pi,-1,1])

xlabel('弧度值')

ylabel('函数值')

title('三个不同相位的正弦曲线')

legend('y1','y2','y3')

grid

gtext('y1=sin(t)')

gtext('y2=sin(t-pi/2)')

gtext('y3=sin(t-pi)')

在MATLAB命令窗口运行ep2_21.m,运行结果如图2-20所示。

标注文本。如图2-20所示,脚本文件ep2_20.m在执行第一个gtext命令时,需要在图形窗口Figure 1中确定该文本的位置。

Figure 1上可以看到一个跟随鼠标移动的十字形指针,将鼠标拖动到对应曲线附近,然后单击鼠标,字符串y1=sin(t)即可添加到此处。

同理,在执行第二个、第三个 gtext 命令时,仍需要进行类似的操作,依次将字符串y2=sin(t−)和y3=sin(t−π)添加到图形中,如图2-21所示。

3.特殊二维曲线绘制

除了标准的二维曲线绘制之外,MATLAB 还提供了多种具有特殊意义的图形绘制函数,其常用调用格式如表2-15所示。其中,参数x和y分别表示x轴、y轴绘图数据。

这些特殊图形绘制函数适用于不同的场合,具有不同的意义。

【例2-22】已知y=ex,分别用表2-15中的六种绘图方式显示x和y的关系。

编写脚本文件,输入下面的语句,保存为ep2_22.m。

x=-4:0.5:4;

y=exp(x);

figure(1)

bar(x,y)

title('bar(x,y)')

figure(2)

stem(x,y)

title('stem(x,y)')

figure(3)

stairs(x,y)

title('stairs(x,y)')

figure(4)

polar(x,y)

title('polar(x,y)')

figure(5)

loglog(x,y)

title('loglog(x,y)')

figure(6)

area(x,y)

title('area(x,y)')

在MATLAB命令窗口中运行脚本文件ep2_22.m,程序运行结果如图2-22所示。

4.图形窗口控制

MATLAB提供了一系列专门的图形窗口控制函数,通过这些函数,可以创建或者关闭图形窗口,可以同时打开几个窗口,也可以在一个窗口内绘制若干子图。这些函数及其功能说明如表2-16所示。

注意:

(1)第一个绘图命令(如plot)运行后,将自动创建一个名为 Figure 1的图形窗口。这个窗口将被当作当前窗口,接下来的所有绘图命令(包括绘图修饰和再一次的plot等命令)均在该图形窗口中执行,后续绘图指令会覆盖原图形或者叠加在原图形上。

(2)使用 subplot 命令时,各个绘图区域以“从左到右、先上后下”的原则来编号。MATLAB允许每个绘图区域以不同的坐标系单独绘制图形。

【例2-23】取三个不同的t,t1=0:π/20:π,t2=π/2:π/20:3*π/2,t3=π:π/20:2*π,在同一坐标系下绘制y1=sin(t1),y2=sin(t2−),y3=sin(t3−π),其他修饰效果要求与例2-22相同。

编写脚本文件,输入下面的语句,保存为ep2_23.m。

% 图形绘制

figure

t1 = 0:pi/20:pi;

t2 = pi/2:pi/20:3*pi/2;

t3 = pi:pi/20:2*pi;

y1=sin(t1);

y2=sin(t2-pi/2);

y3=sin(t3-pi);

hold on

plot(t1,y1,'-.r*')

plot(t2,y2,'--mo')

plot(t3,y3,':bs')

hold off

% 图形修饰

axis([0,2*pi,-1,1])

xlabel('弧度值')

ylabel('函数值')

title('三个不同相位的正弦曲线')

legend('y1','y2','y3')

grid

gtext('y1=sin(t)')

gtext('y2=sin(t-pi/2)')

gtext('y3=sin(t-pi)')

在MATLAB命令窗口中运行脚本文件ep2_23.m,程序运行结果如图2-23所示。

注意:脚本文件ep2_23中,绘制三条曲线的命令与脚本文件ep2_21的不同之处在于使用了配对的hold on 和hold off,然后分别使用了三次plot函数。这与直接使用plot 绘制三条曲线效果一致,只需这样写即可plot(t1,y1,t2,y2,t3,y3,’option’)。如果去掉hold on会得到如图2-24的结果,只显示最后一个plot绘制的结果,也就是y3。

【例2-24】将例2-22中的六幅图在同一窗口中显示。

编写脚本文件,输入下面的语句,保存为ep2_24.m。

x=-4:0.5:4;

y=exp(x);

subplot(3,2,1);

bar(x,y)

title('bar(x,y)')

subplot(3,2,2);

stem(x,y)

title('stem(x,y)')

subplot(3,2,3);

stairs(x,y)

title('stairs(x,y)')

subplot(3,2,4);

polar(x,y)

title('polar(x,y)')

subplot(3,2,5);

loglog(x,y)

title('loglog(x,y)')

subplot(3,2,6);

area(x,y)

title('area(x,y)')

在MATLAB命令窗口中运行脚本文件ep2_24.m,程序运行结果如图2-25所示。

2.6.2 三维图形的绘制

除了常用的二维图形外,MATLAB还提供了三维数据的绘制函数,可以在三维空间绘制曲线或曲面。

1.三维曲线的绘制

三维曲线的绘制与二维曲线的绘制方法基本一致。常用的调用格式如下:

plot3(x,y,z,’option’)

plot3(x1,y1,z1,’option1’,x2,y2,z2,’option2’,…)

其中,x、y、z所给出的数据分别为x、y、z坐标值,’option’为选项参数,plot3命令中参数的含义与plot命令类似,只是多了一个z方向的参数。

【例2-25】绘制三维螺旋线。

编写脚本文件,输入下面的语句,保存为ep2_25.m。

z=0:pi/20:10*pi;

x=sin(z);

y=cos(z);

plot3(x,y,z)

xlabel('sin(z)')

ylabel('cos(z)')

zlabel('z')

grid on

在MATLAB命令窗口中运行脚本文件ep2_25.m,程序运行结果如图2-26所示。

三维曲线修饰与二维图形的图形修饰函数类似,但比二维图形的修饰函数多了一个 z轴方向,如axis([Xmin,Xmax,Ymin,Ymax,Zmin,Zmax])。

特殊三维图形绘制与二维图形绘制类似,一般其函数名称为二维图形绘制名称后面加一个3,表示三维图形绘制,如bar3,stem3。

【例2-26】绘制三维火柴杆型螺旋线。

编写脚本文件,输入下面的语句,保存为ep2_26.m。

z=0:pi/20:2*pi;

x=sin(z);

y=cos(z);

stem3(x,y,z)

xlabel('sin(z)')

ylabel('cos(z)')

zlabel('z')

grid on

在MATLAB命令窗口中运行脚本文件ep2_26.m,程序运行结果如图2-27所示。

2.三维曲面的绘制

三维曲面方程存在两个自变量x、y和一个因变量z。因此,绘制三维曲面图形必须先在xy平面上建立网络坐标,每一个网络坐标点,和它对应的z坐标所确定的一组三维数据就定义了曲面上的一个点。三维曲面绘制中,常用的3个函数及其功能说明如表2-17所示。

这里利用实例2-27具体说明三维绘图的机制。

【例2-27】用mesh和surf两个函数分别绘制z=−x2−y2,x的范围限定在[-2,2],y的范围限定在[-2,2]。

编写脚本文件,输入下面的语句,保存为ep2_27.m。

x=-2:0.1:2;

y=-2:0.1:2;

[X,Y]=meshgrid(x,y);

Z=-(X.^2+Y.^2);

figure(1)

mesh(X,Y,Z)

figure(2)

surf(X,Y,Z)

在MATLAB命令窗口中运行脚本文件ep2_27.m,程序运行结果如图2-28所示。

从脚本文件ep2_27.m的代码中,可以看到绘制三维图形的步骤大致如下。

(1)在使用绘图函数 mesh(或 surf)之前,需要先对数据对(x,y)进行 meshgrid 处理,从而得到两个矩阵X和Y。这里meshgrid的作用是,根据数据对(x,y)生成xy网格点坐标数据,例如x=[1,2],y=[3,4],生成矩阵X=[1,2;1,2],Y=[3,4;3,4]。

(2)接着,把X和Y对应位置的值代入z关于x、y的表达式中,生成矩阵Z。

(3)使用三维绘图函数。mesh函数,就是把每个点[x(i,j),y(i,j),z(i,j)]用直线相连接,生成三维网格曲面。surf函数,与mesh函数类似,它是通过小平面连接相邻的点构成三维曲面。

注意:x、y 数据之间的步长间隔,决定了绘制出来的三维曲面的网格大小,即精细程度。

2.6.3 PLOT工具栏

2.1.1节中提到过PLOT工具栏,该工具栏方便读者对工作空间里的变量进行绘图,可以省去部分代码的编写,但前提是要进行绘图的数据已存在于工作空间中。

在 MATLAB 命令窗口中输入如图2-29所示的命令,工作空间中出现了变量t和y,选中工作空间中的t和y,再单击PLOT工具栏中的plot绘图按钮,出现了如图2-30所示的绘图结果。

注意:

(1)单击plot绘图按钮,相当于在MATLAB命令窗口输入plot命令,读者可以发现单击plot绘图按钮之后,MATLAB命令窗口自动输入了plot命令。

(2)数据选中顺序会导致绘图结果不同。先选中t再选中y,相当于在MATLAB命令窗口输入plot(t,y);而先选中y再选中t,相当于在MATLAB命令窗口输入plot(y,t)。

(3)未选中任何数据时,PLOT工具栏中所有按钮都如图2-5所示呈灰色,也就是说必须选中数据才能使用绘图按钮。

2.6.4 图形对象属性设置

1.图形对象及其属性

2.6.1 节和 2.6.2 节中提及到,任何一个图形元素,读者都可以对其进行单独修改,而不影响图形的其他部分。这种独立的图形元素称为图形对象,图形对象的修改通过调整其属性来完成。

表2-18列出了MATLAB中常用的图形对象及其主要属性。

当调用plot命令绘制二维曲线时,MATLAB的执行过程大致如下:

(1)使用figure命令,在root根对象上生成一个figure图形窗口对象;

(2)使用axis命令,在图形窗口内生成一个绘图区域(axis对象);

(3)最后用line命令在axis指定的区域内绘制线条(line对象)。

因此,MATLAB所绘制的图形是由基本的图形对象组合而成的,可以通过改变图形对象的属性来设置所绘制的图形,以满足不同的绘图需求。

2.图形可视编辑工具

MATLAB执行绘图函数后,将出现一个图形窗口。该窗口除了简单的显示图形功能外,其本身就是一个功能强大的图形可视编辑工具,可实现的功能主要如下:

(1)通用的图形文件管理功能,如保存、打开、新建图形文件等;

(2)通用的图形效果编辑功能,如图形放大、缩小、旋转、对齐等;

(3)图形对象插入功能,如插入坐标轴名称、图形标题、图例标注、线段、文字等;

(4)独立这是窗口中各图形对象属性功能,如线段的类型、颜色、粗细等。

图形对象插入功能可通过选择菜单命令 Insert 后,再选择相应的对象选项来完成,如图2-31所示。该功能与2.6.1节讲的图形修饰函数一致。如,菜单命令Insert→Title与函数title(‘string’)功能一致,菜单命令Insert→legend与函数legend(‘string1’,’string2’,…)功能一致。

显然,使用菜单命令比在MATLAB命令窗口输入函数命令要简便的多,且更具可视性。

图形对象属性的设置可以通过以下两种方法实现:

(1)选择菜单命令 View→Property Editor,如图 2-32 所示,在图形下方出现了一个Property Editor属性编辑窗口;

(2)选择菜单命令Tools→EditPlot(或者单击工具栏中的EditPlot按钮),如图2-33所示,鼠标移动到需要修改的对象上双击左键,或者选中后再单击右键,在弹出的菜单中选择Show Properties Editor 以显示属性编辑窗口。

这两种方法都可以使EditPlot按钮高亮化,同时图形窗口下方会出现属性编辑窗口。在此属性窗口下,可以进行坐标、线段、标题等项目的颜色、字体、网格、范围的设置。

选中一个对象后,再单击右下角的More Properties 更多属性按钮,将出现该对象更加详细的属性编辑窗口,如图2-34所示。

2.7 MATLAB编程实例

MATLAB强大的运算功能和图形功能,是实现各领域的编程仿真的有力工具。本节将综合本章所讲的内容介绍MATLAB的一些编程实例,使读者对MATLAB语言的应用有一些基本的了解。

2.7.1 汉诺塔问题

Hanoi(汉诺)塔问题,是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座A、B、C,开始时A座上有n个盘子,盘子大小不等,大的在上,小的在下如图2-35所示。

现在,要将这n个盘子从A座移到C座,但每次只允许移动一个盘子,且在移动过程中在3个座上都保持大盘在下,小盘在上。在移动过程中可以利用B座。

显然,读者是不大可能直接写出移动盘子的每一个具体步骤的,这里给出该问题的递归解法:

(1)将A上n-1个盘子借助C座先移动到B座上;

(2)把A座上剩下的一个盘子移动到C座上;

(3)将n-1个盘子从B座借助于A座移动到C座上。

上面第(1)步和第(3)步,都是把 n-1 个盘子从一个座移到另一个座上,采取的办法是一样的,只是座的名字不同而已。

为使之一般化,可以将第(1)步和第(3)步表示为:将“one”座上n-1个盘子移动到“two”座(借助“three”座)。只是在第(1)步和第(3)步中,one、two、three和A、B、C的对应关系不同。

对于第(1)步,对应关系是,one对应A,two对应B,three对应C。对于第(3)步,对应关系是,one对应B,two对应C,three对应A。

因此,可以把上面3个步骤分成两类操作:

(1)将n-1个盘子从一个座移动到另一个座上(n>1);

(2)将1个盘子从一个座上移动到另一个座上。

分别用两个函数实现上面的两类操作,用hanoi函数实现上面第一类操作,用move函数实现上面第二类操作。

函数调用 hanoi(n,one,two,three)表示将n个盘子从“one”座移动到“three”座的过程(借助“two”座),函数调用move(x,y)表示将1个盘子从x座移动到y座的过程。x和y是代表A、B、C座之一,根据每次不同情况分别取A、B、C代入。

编写函数文件,输入下面的语句,保存为epHanoi.m。

function epHanoi

% 汉诺塔递归算法

% n是需要移动的盘子个数

% 最后打印出全部移动步骤

n=input('请输入盘子个数:');

disp(['移动',num2str(n),'个盘子的步骤为:'])

hanoi(n,'A','B','C')

function hanoi(n,one,two,three)

if n==1

move(one,three);

else

hanoi(n-1,one,three,two);

move(one,three);

hanoi(n-1,two,one,three);

end

function move(x,y)

disp([x,'->',y])

在MATLAB命令窗口输入epHanoi命令,调用函数epHanoi,程序会先提示“请输入盘子个数:”,读者可以任意输入一个整数(如3),按回车键确认后,出现下面的结果。

>> epHanoi

请输入盘子个数:3

移动3个盘子的步骤为:

A->C

A->B

C->B

A->C

B->A

B->C

A->C

在这个例子中move函数并未真正移动盘子,而只是输出了移动盘子的方案。

注意:

(1)函数文件可以没有输入,也可以没有输出;

(2)从这个例子可以看出,MATLAB支持递归运算;

(3)函数文件epHanoi.m的代码中,出现了三个function,第一个为主函数,后两个为子函数,外部函数无法访问这两个子函数,除非将其定义为global全局的。一个函数下的子函数可以互相调用。

2.7.2 MATLAB在自动控制中的应用

【例2-28】已知单位负反馈系统的开环传递函数为

画出K=0~∞时的闭环系统根轨迹,并求出临界时的K值及闭环极点。

函数rlocus可以计算单输入单输出开环系统根的位置,进而给出其单位负反馈系统的闭环根轨迹,其基本调用格式为:

rlocus(sys)

其中,sys表示开环系统,一般用函数tf(num,den)来创建。num、den分别表示传递函数的分子、分母,用对应多项式的系数构成的向量表示。

编写脚本文件,输入下面的语句,保存为ep2_28.m。

d1=[0.05 1];

d2=[0.05 0.2 1];

den1=conv(d1,d2);

den=[den1 0];

num=1;

sys=tf(num,den);

rlocus(sys)

rlocfind(sys)

运行脚本文件ep2_28.m。程序执行到rlocus(sys)时,将出现如图2-36所示的根轨迹图。

注意:conv(d1,d2)是求向量d1和向量d2的卷积。

为了计算K临界值和此时的闭环极点,在根轨迹绘制完成(执行函数rlocus)后,再执行rlocfind命令。

程序执行rlocfind(sys)语句后,图形窗口Figure 1上将产生一个跟随鼠标移动的十字形指针,选中轨迹与虚轴的焦点位置单击鼠标左键,MATLAB命令窗口中就会显示出闭环根以及参数K的值。例2-28中,所求临界值K=3.49。

函数roots可以用于求多项式的根,在MATLAB命令窗口输入roots([den1,3.49]),求得闭环极点为s1=-19.7878、s2=-4.2244、s3=0.0061+4.0866j和s4=0.0061-4.0866j。

2.7.3 MATLAB在电力信号分析处理中的应用

【例2-29】利用函数生成一组数据用以模拟电力现场测量数据,并利用MATLAB编程实现其频谱分析。其中

在信号x中加入随机信号,用以模拟信号噪声。

编写脚本文件,输入下面的语句,保存为ep2_29.m。

clear

fs=500;t=0:1/fs:0.2;

f1=50;f2=200;

x=2*sin(2*pi*f1*t)+cos(2*pi*f2*t);

subplot(4,1,1);plot(x)

title('f1(50Hz)\f2(200Hz)的正弦信号,初相0')

xlabel('序列(n)')

grid on

number=512;

y=fft(x,number);

n=0:length(y)-1;

f=fs*n/length(y);

subplot(4,1,2);plot(f,abs(y))

title('f1\f2的正弦信号的FFT(512点)')

xlabel('频率Hz')

grid on

x=x+randn(1,length(x));

subplot(4,1,3);plot(x)

title('f1\f2的正弦信号(含随机噪声)')

xlabel('序列(n)')

grid on

y=fft(x,number);

n=0:length(y)-1;

f=fs*n/length(y);

subplot(4,1,4);plot(f,abs(y))

title('f1\f2的正弦信号(含随机噪声)的FFT(512点)')

xlabel('频率Hz')

grid on

运行脚本文件ep2_29.m,运行结果如图2-37所示。

注意:

(1)在脚本文件开头处加入clear命令,是为了清除之前存留在工作空间中的变量和数据,避免与之后新定义或要使用的变量发生混乱;

(2)函数randn可以产生一个服从标准分布的随机矩阵。

2.8 本章小结

本章主要介绍了MATLAB的编程基础,为后面学习Simulink做准备。首先是MATLAB的工作环境,通过对MATLAB主界面、文本编辑器以及帮助文档的介绍,读者可以了解今后是在怎样一个平台上进行编程、仿真工作。

其次,MATLAB语言也是需要读者掌握的,如MATLAB的矩阵、程序流程控制等,都是十分重要的。MATLAB是矩阵实验室的意思,所以矩阵的运算在MATLAB语言中有着举足轻重的地位。M文件是读者施展编程才能的地方。利用文件编辑器编写所需代码,并生成脚本文件或函数文件,然后执行程序得到运行结果,是整个编程的流程。

MATLAB提供了强大的图形绘制功能,二维图形、三维图形都是可以直接利用函数绘制的。自R2012a版本以后,MATLAB还提供了PLOT工具栏,读者可以直接使用工具栏中按钮就可以绘制想要的图形。

相关图书

MATLAB完全自学教程
MATLAB完全自学教程
精通MATLAB数字图像处理与识别(第2版)
精通MATLAB数字图像处理与识别(第2版)
MATLAB App Designer从入门到实践
MATLAB App Designer从入门到实践
MATLAB 2020中文版从入门到精通
MATLAB 2020中文版从入门到精通
MATLAB机器学习
MATLAB机器学习
MATLAB/Simulink系统仿真超级学习手册 第2版
MATLAB/Simulink系统仿真超级学习手册 第2版

相关文章

相关课程