第 1 章 MATLAB 基础概述 MATLAB 主要包括编程和仿真两大部分,它将数值分析、矩阵计算、科学数据可视化、 非线性动态系统的建模、仿真和 App 界面设计等诸多强大功能集成在一个环境中。自 1992 年 初推出 MATLAB 4.0 后,最近几年,每年都升级两个版本,分别以年份加 a 和 b 命名,如 MATLAB R2023a 版本是 2023 年 3 月的。随着版本变化,推出的产品功能不断提升,不仅增 加了支持 Python 语言的编辑器、自动缩进、换行、分隔符匹配查看、交互式界面控制动画功 能,还增加了使用机器学习和深度学习进行非线性系统辨识等功能,加强了测试平台自动化的 用户体验。此外,系统提供的大量矩阵算法、绘图、App 用户界面及连接其他编程语言的接口 函数,为众多工程设计人员实现跨平台系统设计、仿真和人机交互提供了一种全面的解决方案, 被誉为数学类科技应用软件中首屈一指的编程软件。 1.1 MATLAB 主要功能 MATLAB 是数值计算、可视化和应用程序开发的高级语言,它为数据迭代探索、仿真设 计、解决高级数学计算问题及界面设计等提供了交互式环境。MATLAB 的主要功能归纳如下: (1)MATLAB 除了命令行窗口(Command Window)外,还提供了脚本编辑器,通过命 令或调用系统函数建立文件,该文件具有结构控制、函数调用、输入/输出、面向对象等语言 特征,称为 m 程序文件。 (2)使用接口函数与其他多种语言程序链接与嵌入,成为应用研究开发的交互式平台, 完成数据交互。 (3)使用 Simulink 进行仿真,建立各种仿真模型,搭接各种被控对象,使用多种输入、 输出手段进行仿真。 (4)提供信号处理工具箱、图像处理工具箱、通信工具箱、鲁棒控制工具箱、频域系统 辨识工具箱、优化工具箱、偏微分方程工具箱、控制系统工具箱等近百个工具箱,用户不用编 写程序即可实现复杂的计算、绘图和数据处理功能。此外,用户还可结合工作需要开发应用程 序或工具箱。 2 MATLAB 编程实战——手把手教你掌握 300 个精彩案例 (5)MATLAB R2023a 在数值计算、数学建模、图像处理、控制系统设计、动态仿真、语 音处理、数字信号处理、人工智能基础上,还增加了深度学习的神经网络功能,且可实现图像 中的像素区域分类和语义分割的功能。 (6)使用 App 可构建图形用户界面(GUI),它取代了 MATLAB 早期使用 guide 命令开发 的 GUI 集成开发环境,并实现可视化组件布局行为编程。该功能不仅包括了原有的文本、下 拉列表、组合框、按钮及坐标区等组件,还提供了仪表、指示灯、旋钮和开关等组件,能复现 仪表面板的外观和操作;利用 App 设计器可以快速开发出带仪表操作的图形界面应用程序。 1.2 MATLAB R2023a 主窗口 MATLAB 主窗口包括命令行窗口、脚本编辑器窗口、工作区窗口、历史记录窗口、详细 信息窗口及当前文件夹窗口等。此外,在主窗口上还提供了“主页”“绘图”和 APP 共 3 个选 项卡,默认的为“主页”选项卡,该选项卡集成的信息处理窗口称为主窗口。 1.2.1 命令行窗口 MATLAB R2023a 窗口是应用程序处理的基本单元,用户不仅可以在窗口中执行命令,还 可以编写、修改、运行应用程序,还能进行数据和应用程序一体化的管理。系统的主窗口由 6 部分组成,即主页工具栏窗口、命令行窗口、工作区窗口、历史记录窗口、当前文件夹窗口和 详细信息窗口。主窗口中的命令行窗口、当前文件夹窗口、工作区窗口与早期版本相比,保持 了原有风格,但菜单功能上有了很大的提升。主窗口(主界面)如图 1.1 所示。 图 1.1 MATLAB R2023a 主界面 说明: (1)命令行窗口(Command Window)是对 MATLAB 进行操作的主要窗口,也是主要交 互窗口,默认情况下启动 MATLAB 时就会打开它,用于输入 MATLAB 命令、表达式、函数、 第 1 章 MATLAB 基础概述 3 数组、计算公式,并显示图形以外的所有计算结果及程序错误信息。MATLAB 的所有函数和 命令都在“>>”提示符下输入,用到的变量无须定义且都以矩阵(数组)形式出现,它可根据需 要随时更改大小,如 同在稿纸中书写数学算式一样。计算中可使用函数替代复杂公式,语句书 写简便快捷,只需要写出命令按 Enter 键,即可在窗口中得出结果。 (2)顶部工具栏分 6 个功能模块,模 块包括文件、变量、代码、SIMULINK、环 境 、资源。 例如:变量模块中可以导入其他文件中的数据或打开现有变量。 (3)工作区窗口显示当前文件夹及当前文件夹下的文件,包括文件名、文件类型、最后 修改时间以及该文件的说明信息。MATLAB 只执行当前文件夹或搜索路径下的命令、函数与 文件。 (4)历史命令记录窗口记录用户每一次启动 MATLAB 的时间,以及每一次启动 MATLAB 后,在命令行窗口中运行过的所有命令行,这些命令记录可以被复制到命令行窗口中再运行, 避免再重新输入。 【实战练习 1-1】命令行窗口的使用 在命令行窗口上输入一元二次方程的系数 a=1、b=-1、c=-30,输出方程的解 x1 和 x2。 编程代码如下: >> a=1; >> b=-1; >> c=-30; >> q=b*b-4*a*c; >> x1=(-b+sqrt(q))/(2*a) 结果:x1 = 6 >> x2=(-b-sqrt(q))/(2*a) 结果:x2 = -5 所有操作在其命令行窗口的“>>”提示符下输入, 结果如图 1.2 所示。 图 1.2 命令行窗口 1.2.2 工具栏窗口 MATLAB R2023a 的工具栏在主窗口的顶部,默认打开“主页”工具栏如图 1.3 所示。 图 1.3 “主页”工具栏 1.新建脚本 单击工具栏中的“新建”按 钮 ,可 新建脚本文件(.m 程序文件)、函数、应用程序文件(图 形界面)等,“新建”命令的下拉菜单如图 1.4 所示。 4 MATLAB 编程实战——手把手教你掌握 300 个精彩案例 说明: (1)脚本:与“新建脚本”命令的功能相同,用于 编写程序文件; (2)实时脚本:以扩展名为.mlx 的新文件格式存储在 线脚本,可在编辑字段时查看代码和结果; (3)函数:使用“function +函数名…end”构造函数或 函数文件; (4)实时函数:系统提供的实时编辑器,与脚本相似, 它允许向其传递输入值,获得输出值; (5)类:使用“classdef…end”构造类或类文件; (6)测试类:创建一个继承 matlab、unittest、TestCase 的测试类; (7)System object:构造系统对象,包括基本、高级和 Simulink 扩展; (8)工程:创建新工程或从文件夹导入工程文件; (9)图窗:图形窗口的简称,用于建立绘图的窗口; (10)App:设计 UI(用户界面)选项,用于制作人机 图 1.4 “新建”命令的下拉菜单 交互接口; (11)Simulink 模型:用于建立模型文件并进行仿真。 2.保存工作区 用户可将工作区变量以 matlab.mat 文件形式保存,以备在需要时再次导入。“保存工作区” 可以通过菜单、save 命令或快捷菜单进行。在该工作区中,右击需要保存的变量名,选择 SaveAs…命令,可在当前文件夹中保存“变量名.mat”文件。 3.导入数据 在编写一个程序时,经常需要从外部导入数据,或者将.mat 文件再次导入工作区,也可 以通过其他程序调用。 4.预设项 MATLAB 对各个窗口的颜色、字体、编辑、调试、帮助、附加功能、快捷键的环境设置, 可以通过“预设项”实现,单击工具栏的“预设项”按钮,出现“预设项”窗口:左侧为设置 项,右侧为设置参数,选择设置项即可设置对应参数,其中: (1)单击左侧“字体”选项,可以进行字体设置。桌面代码字体设置包括命令行 (Command)窗口,编辑器字体。若设置编辑器及命令行窗口字体为 24 号,见示例的“字体” 设置,如图 1.5 所示。 (2)单击左侧“代码分析器”选项,可以设置查看代码错误信息,如图 1.6 所示。 第 1 章 MATLAB 基础概述 5 图 1.5 “预设项”窗口 图 1.6 查看代码错误信息 5.附加功能 “附加功能”为特定任务、交互式应用程序和资源管理等扩展功能, 如图 1.7 所示。 其中,“获取附加功能”命令可实时链接 MathWorks 公司网站,下 载系统工具箱;“App 打包”命令是为脱离 MATLAB 环境运行,生成.exe 文件的功能模块。 图 1.7 附加功能 6 MATLAB 编程实战——手把手教你掌握 300 个精彩案例 1.3 命令行窗口操作 MATLAB 的命令行窗口提供了快速操作功能,可以在 MATLAB 命令行窗口直接输入命 令、函数或表达式,按 Enter 键,即 可 显示相应的运行结果。命令行窗口用于解释执行并输出, 适合运行比较简单的单行语句,方便直接查看结果。 1.3.1 常用命令行窗口命令 命令行窗口用于输入命令并显示除图形以外的所有执行结果,在命令行窗口中可以运行 单独的命令,也可以调用程序,还能很直观地对程序运行过程中出现的矩阵或变量进行检查。 命令行窗口常用命令如表 1.1 所示。 表 1.1 命令行窗口常用命令 命 令 说 明 命 令 说 明 clc 清除命令行窗口 dir 可以查看当前文件夹的文件 clf 清除图形对象 save 保存工作区或工作区中任何指定文件 clear 清除工作区所有变量,释放内存 load 将.mat文件导入工作区 type 显示指定文件的所有内容 hold 控制当前图形窗口对象是否被刷新 clear all 清除工作区所有变量和函数 quit/exit 退出MATLAB系统 whos 列出工作区中的变量名、大小、类型 close 关闭指定窗口 who 只列出工作区中的变量名 which 列出文件所在文件夹 what 列出当前文件夹下的.m和.mat文件 path 启动搜索路径 delete 删除指定文件 % 注释语句 help 显示帮助信息 cd 显示当前文件夹 说明: (1)在命令行窗口输入命令按 Enter 键即可执行,每行可写入一条或多条命令,用分号隔 开,但添加分号后的语句输出不显示在屏幕上。 例如: clear x,y,z %清除指定的 x,y,z 变量 a=10;b=12; c=a+b; %a、b、c 的结果均不显示 (2)save 可将工作区中的所有变量保存在文件中,默认文件名为 matlab.mat。 (3)若输入语句后按 Enter 键结果出现错误,则必须重新输入,按 Enter 键后不能修改且 输入的命令和结果不能保存。 【实战练习 1-2】保存、导入及查看命令的使用 在命令行窗口中使用保存(save)和 导入( load)命 令 保存和导入变量,并查看工作区变量。 编程代码如下: >>x=[0:0.1:5] %x 从 0 开始到 5,每隔 0.1 取一个值 第 1 章 MATLAB 基础概述 7 >>y=cos(x) %计算每个 x 值的余弦值 >>save filexy x y %把变量 x,y 存入 filexy.mat 文件中 >>z='Study Matlab2023a' %将字符串赋给 z 变量 >>save filexy z -append %把变量追加存入 filexy.mat 文件中 >>clear %清空工作区所有变量 >>load filexy %调用 filexy.mat 文件到工作区 >>save filexy -ascii %把 filexy 文件存储为文本文件 >>who %列出工作区中的变量名 >>whos %列出工作区中的变量名、大小和类型 代码结果如下: 您的变量为:x y z Name Size Bytes Class Attributes x 1x51 408 double y 1x51 408 double z 1x17 34 char 说明:使用保存命令时需要先右击,然后选择以管理员方式打开,否则出现“错误使用 save,无法写入文件 filexy: 权限被拒绝”的提示信息。 【实战练习 1-3】表达式运算 3cos(π / 3)+ 123 在命令行窗口中完成 y = 的简单计算。 129+ 编程代码如下: >>clc;%清除屏幕 >>y=(3*cos(pi/3)+12^3)/(1+sqrt(29)) 说明:pi 表示 π;sqrt( )是求平方根的函数;“^”表示求幂。 1.3.2 命令行窗口常用快捷键 命令行窗口中常用快捷键如表 1.2 所示。 表 1.2 命令行窗口常用快捷键 快捷键 说 明 快捷键 说 明 Ctrl+A 全部选中当前页面内容 Ctrl+C 复制当前选中内容 Ctrl+X 剪切当前选中内容(用于文本操作) Ctrl+V 粘贴当前剪贴板内的内容 Ctrl+Z 返回上一项操作 Ctrl+F 打开查找面板 Ctrl+B 光标向前移动一个字符 Ctrl+K 删除到行尾 Ctrl+Q 强行退出MATLAB系统和环境 Ctrl+U 清除光标所在行 Ctrl+E 光标移到行尾 Ctrl+P 调用打印窗口 Home 光标移动到行首 End 光标移动到行尾 8 MATLAB 编程实战——手把手教你掌握 300 个精彩案例 1.4 App 设计(Designer) 随着 MATLAB 版本的逐步提高,系统使用 App 设计替换原有 guide 的 GUI(Graphical User Interface,图 形用户界面),App 设计对原有 GUI 进行了优化,且代码也简单了很多。MATLAB R2023a 主窗口菜单设计了 APP 选项卡,单击该选项卡即可建立多种形式的 GUI。 1.4.1 App 的功能 打开 MATLAB 菜单栏的 APP 选项卡,再选择“设计 App”命令,即可打开 App 设计的 功能界面,如图 1.8 所示。 图 1.8 APP 选项卡 App 设计不仅可构建设计视觉组件的 GUI,还可使用代码段完成相应的操作。通过设计 画布添加组件,包括标签、编辑字段(数值/文本)、按钮、图像、坐标区、仪表、信号灯、开 关和旋钮,再使用网格布局、选项卡组和面板进行有效组织,以创建美观、实用的操作界面和 仪表面板。根据不同对象的回调函数,打开内置编辑器,可管理界面中组件的生成代码,并使 用户编写回调代码完成特定的任务。系统提供的组件包括常用、容器、图窗工具和仪器,如图 1.9 所示,使用方法见第 8 章。 图 1.9 组件 第 1 章 MATLAB 基础概述 9 1.4.2 App 的使用 App 常用组件的使用:标签用于添加标题;编辑字段(数值/文本)用于人机交互输入数 据;坐标区用于显示图像及各种函数波形;日期选择器用于添加日期;按钮用于提交命令。在 画布上选中按钮对象,在“组件浏览器”中选择“回调”按 钮 ,可 打开代码视图编辑回调函数, 回调函数是界面中按钮、列表框、下拉框、滑块、编辑字段(数值/文本)等多种动态组件的 交互操作,常使用按钮选择 ButtonPushed 事件执行对应的 MATLAB 回调函数。在 App 设计工 具中,操作步骤为使用“设计视图”编辑组件布局,再切换到“代码视图”编写回调函数。 【实战练习 1-4】使用 App 设计简单 GUI 操作步骤如下: (1)打开 MATALB,在主菜单栏中单击 APP 选项卡,选择“设计 App”→“空白 App”, 打开“App 设计工具”。 (2)在空白画布上添加标签、坐标区、编辑字段(数值)、按钮和日期选择器组件,分别 选中组件并修改右侧的属性,添加标签文字、绘图标题,如图 1.10 所示。 图 1.10 App 编辑界面 (3)单击“绘图”按钮,在“组件浏览器”中单击“回调”,编程代码如下: x=0.1:pi/12:2*pi; %设置横坐标 x 的值从 0.1 到 2π A1=app.EditField.Value; %提取编辑字段的幅值 y=A1*sin(x); %纵坐标为正弦函数 plot(app.UIAxes,x,y) %在坐标区中绘制图形 grid(app.UIAxes,"on"); %添加栅格 说明:plot()是通用的二维画图函数,plot()函数将目标坐标区 (App.UIAxes) 指定为第一 个参数,加入 x、y 轴的向量后,则在指定的目标坐标区绘制二维曲线。 (4)单击“重置”按钮,在“组件浏览器”中单击“回调”,编程代码如下: 10 MATLAB 编程实战——手把手教你掌握 300 个精彩案例 cla(app.UIAxes); grid(app.UIAxes,"off"); (5)单击“运行”按钮,保存代码为.mlapp 文件 并直接运行 App。保存成功后,也可以在 MATLAB 命 令行窗口输入保存的文件名运行。从命令提示符下运 行 App 时,该文件必须位于当前文件夹或 MATLAB 路径中,否则需要加入路径名称,运行菜单如图 1.11 所示。 图 1.11 运行菜单 运行结果如图 1.12 所示(详细操作见第 8 章案例)。 图 1.12 App 运行结果 1.5 认识 Simulink Simulink 是 MATLAB 中重要的可视化仿真工具组件,它提供了一个动态系统建模、仿真 和综合分析的集成图形开发环境,用于多域仿真及模型设计。Simulink 提供了图形编辑器、多 种模块库以及求解器,通过将模型对象、输入及输出模块拖入编辑界面中,即可完成建模,单 击“运行”按钮即可进行仿真。此外,MathWorks 公司还提供了一些附加产品和第三方硬件、 软件产品用于 Simulink 中,支持系统设计、仿真、自动生成代码以及嵌入式系统的仿真测试 和验证。 1.5.1 Simulink 初始界面 在图 1.1 中,单击主菜单栏中的 Simulink 按钮或在命令行窗口中输入 Simulink 命令,均 可打开“Simulink 起始页”窗口,单击“空白模型”选项,即可自行建立一个仿真模型文件, 如图 1.13 所示。 第 1 章 MATLAB 基础概述 11 图 1.13 “Simulink 起始页”窗口 1.5.2 Simulink 简单仿真案例 【实战练习 1-5】Simulink 简单仿真模型 操作步骤如下: (1)在图 1.13 中单击“空白模型”选项,再选择工具栏“库浏览器”命令,在左侧打开 的模块库中再选择 Simulink 模块下的子模块 Continuous 连续系统,拖动 1 个惯性环节对象 1/(s+1),在 sources(信号源模块库)中拖动正弦信号,在 sinks(输出模块库)拖动 Scope(示 波器)组件到模型编辑窗口中。 (2)拖动鼠标将 3 个组件进行连线,即可建立一个简单仿真模型,如图 1.14 所示。 图 1.14 建立 Simulink 仿真模型 (3)单击“运行”按钮,出现一个临时的进度条,结束后即可双击 Scope 组件,查看仿真 结果,如图 1.15 所示。 12 MATLAB 编程实战——手把手教你掌握 300 个精彩案例 图 1.15 仿真结果 1.6 帮助窗口 MATLAB 的帮助窗口可以为用户方便、快速地打开和调用 MATLAB 的各种程序、函数的 帮助信息。在任何窗口按快捷键“F1”,均会弹出一个帮助窗口,选择“文档”选项卡,可实 时查看“使用 MATLAB”和“使用 Simulink”及“工作流”的帮助信息。选择“示例”选项 卡,可学习使用规则并查看应用案例。 1.6.1 help 命令 直接在命令行窗口中输入 help 命令,打开“帮助”窗口,根据列出的主题选择帮助信息, 如图 1.16 所示。 图 1.16 帮助窗口 第 1 章 MATLAB 基础概述 13 在“帮助中心”页面中可按照主题选择子项,若在主题选择“物理建模”,然后选择右边 的“示例”选项卡,详细帮助信息如图 1.17 所示。 图 1.17 物理建模示例 1.6.2 demo 命令 在命令行窗口中可按照输入 demo/ demo type/ demo type name 三种形式,获得更详细的帮 助信息,例如,输入 demo matlab 或选择帮助窗口的“使用 MATLAB”,再单击“函数”选项 卡,可获得 MATLAB 的所有函数类别列表,如图 1.18 所示。 图 1.18 demo 命令演示 说明:在帮助窗口中,根据列表提供的术语索引表,可以查找命令、函数和专用术语等。