实时脚本
什么是实时脚本或实时函数?
MATLAB® 实时脚本和实时函数是交互式文档,它们在一个称为实时编辑器的环境中将 MATLAB 代码与格式化文本、方程和图像组合到一起。此外,实时脚本可存储输出,并将其显示在创建它的代码旁。
实时脚本和函数可用于:
直观浏览和分析问题
在单个交互式环境中编写、执行和测试代码。
逐个运行代码块(仅限实时脚本)或作为整个文件运行,查看结果和图形以及生成它们的对应源代码。
共享格式丰富的可执行记叙脚本
添加标题和格式化文本以描述相应过程,并纳入方程、图像和超链接作为支持材料。
将您的记叙脚本另存为格式丰富的可执行文档,并与同事或 MATLAB 社区共享它们,或者将其转换为 HTML、PDF、Microsoft® Word 或 LaTeX 文档以供发布。
创建交互式教学课件
将代码和结果与格式化文本和数学方程结合使用。
创建分步式课件并逐步进行计算以说明教学主题。
随时修改代码以回答问题或探讨相关主题。
将课件作为交互式文档与学生共享或以硬拷贝形式共享,将部分完成的文件作为作业发给学生。
与纯代码脚本和函数的差异
实时脚本和实时函数在几个方面与纯代码脚本和函数存在差别。此表对主要差别进行了汇总。
实时脚本和函数 | 纯代码脚本和函数 | |
---|---|---|
文件格式 | 实时代码文件格式。有关详细信息,请参阅 实时代码文件格式 (.mlx) | 普通文本文件格式 |
文件扩展名 | .mlx | .m |
输出显示 | 在实时编辑器中,与代码一起显示(仅限实时脚本) | 在命令行窗口中 |
文本格式设置 | 在实时编辑器中添加和查看格式化文本 | 使用发布标记添加格式化文本,发布到视图 |
视觉表示 |
要求
MATLAB R2016a - MATLAB 支持 R2016a 及更高版本中的实时脚本,以及 R2018a 及更高版本中的实时函数。
操作系统 - 从 R2019b 开始,在 MATLAB 支持的所有操作系统中,MATLAB 都支持实时编辑器。有关详细信息,请参阅系统要求。
对于 MATLAB 版本 R2016a 至 R2019a,MATLAB 支持的操作系统中有几个不支持实时编辑器。
不支持的操作系统包括:
此外,一些操作系统需要额外的配置才能在 MATLAB 版本 R2016a 到 R2019a 中运行实时编辑器。如果您无法在系统中运行实时编辑器,请联系技术支持以了解有关如何配置系统的信息。
Red Hat Enterprise Linux 6。
Red Hat Enterprise Linux 7。
SUSE Linux Enterprise Desktop 版本 13.0 及更早版本。
Debian 7.6 及更早版本。
========================================
在实时编辑器中创建实时脚本
实时脚本是在一个称为实时编辑器的交互式环境中同时包含代码、输出和格式化文本的程序文件。在实时脚本中,您可以编写代码并查看生成的输出和图形以及相应的源代码。添加格式化文本、图像、超链接和方程,以创建可与其他人共享的交互式记叙脚本。
创建实时脚本
要在实时编辑器中创建实时脚本,请转到主页选项卡并点击 。您也可以在命令行窗口中使用
edit函数。例如,键入 edit penny.mlx 以打开或创建文件 penny.mlx。为确保创建实时脚本,请指定 .mlx扩展名。如果未指定扩展名,则 MATLAB® 会默认文件的扩展名为 .m,这种扩展名仅支持纯代码。
以实时脚本方式打开现有脚本
如果您已有一个脚本,可以将其以实时脚本方式在实时编辑器中打开。以实时脚本方式打开脚本会创建一个文件副本,并保持原始文件不变。MATLAB 会将原始脚本中的发布标记转换为新实时脚本中的格式化内容。
要通过编辑器将现有脚本 (.m) 以实时脚本 (.mlx) 方式打开,请右键点击文档选项卡,然后从上下文菜单中选择 。您还可以转至编辑器选项卡,点击保存 ,然后选择另存为。然后,将保存类型: 设置为 “MATLAB 实时代码文件 (*.mlx)” 并点击 。
注意
您必须使用所述的转换方法之一将脚本转换为实时脚本。仅使用 .mlx
扩展名重命名该脚本行不通,并可能损坏文件。
添加代码
创建实时脚本后,您可以添加并运行代码。例如,添加以下代码,以绘制随机数据向量图,并在绘图中的均值处绘制一条水平线。
n = 50; r = rand(n,1); plot(r) m = mean(r); hold on plot([0,n],[m,m]) hold off title('Mean of Random Uniform Data')
默认情况下,在实时编辑器中输入代码时,MATLAB 会自动补全块结尾、括号和引号。例如,键入 if,然后按 Enter 键。MATLAB 会自动添加 end 语句。
当拆分为两行时,MATLAB 还会自动补全注释、字符向量、字符串和圆括号。要退出自动补全,请按 Ctrl+Z 或 按钮。默认情况下会启用自动补全。要禁用它们,请参阅编辑器/调试器自动编码预设项。
添加或编辑代码时,您可以选择和编辑一个矩形区域的代码(也称为列选择或块编辑)。如果要复制或删除多列数据(而不是若干行),或者要一次性编辑多行,该功能非常有用。要选择一个矩形区域,请在进行选择时按 Alt 键。
例如,选择 A 中的第二列数据。键入 0可将所有选定的值设置为 0。
运行代码
要运行代码,请点击代码左侧的斜纹竖条。也可以转到实时编辑器选项卡并点击 。当您的程序正在运行时,系统会在编辑器窗口左上方显示一个状态指示符 。代码行左侧的灰色闪烁条指示 MATLAB 正在计算的行。要导航至 MATLAB 正在计算的行,请点击状态指示符。
如果在 MATLAB 运行程序时出错,或者 MATLAB 检测到您的代码中存在重大问题,则状态指示符会变为错误图标 。要导航至相应错误,请点击该图标。代码行右侧的错误图标
指示该错误。相应的错误消息显示为输出。
您不需要保存实时脚本即可运行它。当您确实要保存实时脚本时,MATLAB 会自动使用 .mlx
扩展名保存它。例如,转到实时编辑器选项卡,点击 ,然后输入名称 plotRand。MATLAB 会将实时脚本另存为 plotRand.mlx。
显示输出
默认情况下,MATLAB 会在代码右侧显示输出。每个输出都会随创建它的代码行并排显示,就像在命令行窗口中一样。
您可以向左或向右拖动代码和输出之间的调整大小栏,以更改输出显示面板的大小。
要清除输出,请右键点击输出或创建输出的代码行,并选择视图选项卡,并在输出部分中,点击清除全部输出按钮。
。要清除全部输出,请右键点击脚本中的任意位置,并选择 。或者,转到滚动时,MATLAB 会将输出与用于生成输出的代码对齐。要禁用输出与代码对齐模式,请右键点击输出部分,并选择
。要使输出内嵌在代码中,请点击实时脚本右侧的 输出内嵌按钮。您也可以转到视图选项卡,然后在视图部分中点击
按钮。
要仅显示输出、控件和格式化文本并隐藏代码,请点击隐藏代码 按钮。要再次显示代码,请点击输出内嵌
按钮或右侧的
按钮上的输出。
要修改输出中的图窗,请使用图窗坐标区右上角或图窗工具条中的工具。您可以使用这些工具来探查图窗中的数据,并添加格式设置和注释。有关详细信息,请参阅修改实时脚本中的图窗。
要分别在不同的窗口打开各个输出(例如变量和图窗),请点击输出右上角的 按钮。变量将在变量编辑器中打开,而图窗将在新图窗窗口中打开。在实时脚本之外对变量或图窗所做的更改不会应用于实时脚本中显示的输出。
=========================================
在实时脚本中运行节
将文件划分为不同节
实时脚本通常包含许多命令和文本行。您通常一次仅专注于程序中的某个部分,分块操作代码和相关文本。要更轻松地进行文档管理和导航,请将您的文件划分为多个节。代码、输出和相关文本可同时显示在单个节中。
要向实时脚本中插入分节符,请转到实时编辑器选项卡,然后在节部分中点击 按钮。新节以蓝色突出显示,指示它处于选定状态。该节左侧的斜纹竖条指示它是旧有的。旧有节是尚未运行的节,或自上次运行后尚未修改的节。
此图像演示了实时脚本中的一个新空节。
要删除分节符,请点击紧邻其后的行的开头,然后按退格键。您也可以点击紧邻分节符的上一行末尾并按 Delete 键。
执行节
通过分别计算每个节或一次运行所有代码来运行实时脚本。要分别执行某节,该节必须包含它需要的所有值,或这些值必须存在于 MATLAB® 工作区中。节计算会运行当前选定的节(以蓝色突出显示)。如果程序文件中只有一个节,则该节不会突出显示,因为它始终处于选中状态。
此表介绍运行代码的不同方法。
操作 | 说明 |
---|---|
运行选定节中的代码。 | 点击该节左侧的蓝色竖条。 或 在实时编辑器选项卡上的节部分中,点击 |
运行选定节中的代码,然后移至下一节。 | 在实时编辑器选项卡上的节部分中,选择 |
运行选定节中的代码,然后运行选定节后的所有代码。 | 在实时编辑器选项卡上的节部分中,选择 |
运行文件中的所有代码。 | 在实时编辑器选项卡上的运行部分中,点击 |
================================================
将交互式控件添加到实时脚本
您可以将滑块、下拉列表、复选框、编辑字段和按钮添加到实时脚本,以交互方式控制变量值。当您要与其他人共享脚本时,将交互式控件添加到脚本中非常有用。通过交互式控件,可使用熟悉的用户界面组件设置和更改实时脚本中变量的值。
插入控件
要将控件插入实时脚本中,请转至实时编辑器选项卡,在代码部分中,点击控件。然后,从可用选项中进行选择。要用一个控件替换现有值,请选择该值,然后插入该控件。控件菜单仅显示对所选值可用的选项。
下表显示了可用控件的列表:
控件 | 说明 | 配置详细信息 |
---|---|---|
数值滑块 | 使用数值滑块,可以通过将滑块移至所需的数值,以交互方式更改变量的值。 滑块左侧的值是其当前值。 | 在值部分中,指定最小值、最大值和步长值。 |
下拉列表 | 使用下拉列表,可以通过从值列表中进行选择,以交互方式更改变量的值。 将鼠标悬停在下拉列表中显示的文本上可查看其当前值。 | 在项目部分的项目标签字段中,指定要为下拉列表中的每个项显示的文本。 在项目值字段中,为下拉列表行中的每个项指定值。确保将文本值用单引号或双引号括起来,因为实时编辑器将列表中的每个项解释为代码。 |
复选框 | 使用复选框以交互方式将变量值设置为逻辑值 复选框的显示状态(选中或未选中)决定其当前值。 | 不适用 |
编辑字段 | 使用编辑字段以交互方式将变量值设置为指定类型的输入。 编辑字段中显示的文本和选定的数据类型决定其当前值。 | 在类型部分的数据类型字段中,从可用选项中进行选择,以指定编辑字段中文本的数据类型。 |
按钮 | 使用按钮控件,通过点击按钮以交互方式运行代码。 使用按钮控件时,可以考虑将实时脚本中所有其他控件的运行字段设置为 。这样,代码仅在用户点击按钮控件时运行。当实时脚本要求在运行代码之前设置多个控件值时,这会很有用。 | 要更改按钮上显示的标签,请在标签部分中输入标签名称。 |
修改控件执行
您可以修改当控件的值发生变化时代码运行的时间和内容。默认情况下,当控件的值发生变化时,实时编辑器会运行当前节中的代码。要配置此行为,请右键点击该控件并选择执行部分,修改下表中所述的字段的值。按 Tab 或 Enter 键,或在控件配置菜单外部点击以返回实时脚本。
。然后,在字段 | 选项 |
---|---|
运行位置(仅滑块控件) | 选择以下选项之一来指定代码运行的时间:
|
运行 | 选择以下选项之一,以指定当控件的值更改时运行的代码:
提示 在实时脚本中使用按钮控件时,可以考虑将实时脚本中所有其他控件的运行字段设置为 。这样,代码仅在用户点击按钮控件时运行。当实时脚本要求在运行代码之前设置多个控件值时,这会很有用。 |
修改控件标签
您可以隐藏实时脚本中的代码,只显示带标签的控件、输出和格式化文本。在共享和导出实时脚本时,隐藏代码非常有用。要隐藏代码,请点击实时脚本右侧的隐藏代码 按钮。您也可以转至视图选项卡,在视图部分中,点击
。要再次显示代码,请点击输出内嵌
按钮或右侧的
按钮上的输出。
当代码隐藏时,标签显示在控件旁边。要修改控件的标签,请右键点击该控件并选择标签部分,输入标签名称。这也是所有视图中按钮控件上显示的文本。按 Tab 或 Enter 键,或在控件配置菜单外部点击以返回实时脚本。
。然后,在使用多个交互式控件创建实时脚本
以下示例说明如何使用交互式控件在 MATLAB® 中可视化患者数据并对这些数据进行研究。此示例绘制男性或女性患者的身高与体重对照图,并突出显示具有指定身高和体重的患者。
使用交互式控件指定要绘制的患者的性别以及阈值身高和体重。要查看控件并与之交互,请在浏览器或 MATLAB 中打开此示例。
load patients thresholdHeight = 68; thresholdWeight = 132; selectedGender = "Female"; overThresholdWeights = Weight(Gender==selectedGender & Weight>=thresholdWeight & Height>=thresholdHeight); overThresholdHeights = Height(Gender==selectedGender & Weight>=thresholdWeight & Height>=thresholdHeight); sp1 = scatter(Height(Gender==selectedGender),Weight(Gender==selectedGender),'blue'); hold on sp2 = scatter(overThresholdHeights, overThresholdWeights,'red'); hold off title('Height vs. Weight of ' + selectedGender + ' Patients') legendText = sprintf('Patients over %d inches and %d pounds.',thresholdHeight,thresholdWeight); legend(sp2,legendText,'Location','southoutside')
共享实时脚本
实时脚本完成后,可与其他人共享。用户可以在 MATLAB® 中打开实时脚本,并以交互方式使用控件来进行实验。
如果您将实时脚本本身作为交互式文档共享,请考虑在共享实时脚本之前隐藏其中的代码。隐藏代码后,实时编辑器仅显示带标签的控件、输出和格式化文本。要隐藏代码,请点击实时脚本右侧的隐藏代码 按钮。您也可以转至视图选项卡,在视图部分中,点击
。
如果您将实时脚本作为静态 PDF、Microsoft® Word、HTML 或 LaTeX 文档共享,则实时编辑器会将控件保存为代码。例如,在此处显示的实时脚本中,实时编辑器用滑块的当前值(68 和 132)替换滑块控件,并用下拉列表的当前值 ("Female") 替换下拉列表控件。
======================================
在实时编辑器中设置文本格式
您可以将格式化文本、超链接、图像和方程添加到实时脚本和函数中,以创建要与其他人共享的演示文档。
要插入新项目,请转到插入选项卡,然后从可用选项中选择:
选项 | 描述 | 其他详细信息 |
---|---|---|
| 插入空的代码行。 | 您可以在文本行之前、之后或之间插入代码行。 |
| 插入分节符。 | 您可以插入分节符,将实时脚本或函数分为易于管理的节,以便分别求值。节可以包括代码、文本和输出。有关详细信息,请参阅创建和运行代码节。 |
| 插入空的文本行。 | 文本行可以包含格式化文本、超链接、图像或方程。您可以在代码行之前、之后或之间插入文本行。 |
| 插入目录。 | 目录包含文档中所有标题的列表。如果文档只包含一个标题,则它不包含在目录中。只有目录的标题是可编辑的。 您只能在文本行中插入目录。如果您将目录插入到代码行中,MATLAB® 会将其置于当前代码节的上一行。 将包含目录的实时脚本导出为 Microsoft® Word 时,默认情况下,生成文档的目录不包含页码。要添加页码,请点击目录并选择更新表。 |
| 插入格式化的代码示例。 | 代码示例是显示为缩进的等宽文本的示例代码。
|
| 插入图像。 | 您只能在文本行中插入图像。如果您向代码行中插入图像,则 MATLAB 会将该图像置于选定代码行正下方的新文本行中。 要在插入图像后更改图像的替换文本、对齐方式和大小,请右键点击图像并从上下文菜单中选择 。
|
| 插入超链接。 | 您只能在文本行中插入超链接。如果您向代码行中插入超链接,则 MATLAB 会将该超链接置于选定代码行正下方的新文本行中。
|
| 插入方程。 | 您只能在文本行中插入公式。如果您向代码行中插入方程,则 MATLAB 会将该方程置于选定代码行正下方的新文本行中。有关详细信息,请参阅将方程插入实时编辑器中。 |
要设置现有文本的格式,请使用实时编辑器选项卡的文本部分中包含的各个选项:
格式类型 | 选项 |
---|---|
文本样式 |
|
文本对齐方式 |
|
列表 |
|
标准格式设置 |
|
要将所选文本或代码全部由大写更改为小写(或者反之),请选择文本,点击鼠标右键,然后选择Ctrl+Shift+A。如果文本中同时包含大写和小写文本,则 MATLAB 会将它们全部更改为大写。
。也可以按更改字体
您可以在实时编辑器中调整显示的字体大小,或使用设置来更改代码和文本的字体名称、样式、大小和颜色。
要增大或减小实时编辑器中显示的字体大小,请使用 Ctrl + 加号 (+) 和 Ctrl + 减号 (-) 键盘快捷方式或按住 Ctrl 并滚动鼠标滚轮来放大或缩小。在 macOS 系统上,使用 Command 键而不是 Ctrl 键。将实时脚本导出为 PDF、Microsoft Word、HTML 或 LaTeX 时,显示字体大小的变化不会保留。
使用设置可以更改代码和文本的字体名称、样式、大小和颜色。例如,以下代码将更改实时编辑器中标题的颜色和样式:
s = settings; s.matlab.fonts.editor.title.Style.PersonalValue = {'bold'}; s.matlab.fonts.editor.title.Color.PersonalValue = [0 0 255 1];
以下代码增大实时编辑器中普通文本的大小并更改其字体名称:
s = settings; s.matlab.fonts.editor.normal.Size.PersonalValue = 20; s.matlab.fonts.editor.normal.Name.PersonalValue = 'Calibri';
实时编辑器会更新所有打开的实时脚本和实时函数以显示所选字体。当您创建新的实时脚本或函数时,也会应用所选字体。
=========================================
将方程插入实时编辑器中
要描述代码中使用的数学过程或方法,请将方程插入实时脚本或函数中。只有文本行才能包含方程。如果您向代码行中插入方程,则 MATLAB® 会将该方程置于选定代码行正下方的新文本行中。
将方程插入实时脚本或函数中有两种方法。
以交互方式插入方程 - 您可以通过从符号和结构体的图形显示中进行选择,从而以交互方式构建方程。
插入 LaTeX 方程 - 您可以输入 LaTeX 命令,实时编辑器就会插入对应的方程。
以交互方式插入方程
要以交互方式插入方程,请执行以下操作:
转到插入选项卡,然后点击
。
此时将会出现一个空白方程。
从方程选项卡显示的选项中选择符号、结构体和矩阵以构建方程。点击各部分右侧的
以查看其他选项。
添加或编辑矩阵时,将会显示一个上下文菜单,您可以使用该菜单来删除和插入行与列。您也可以使用上下文菜单来更改或删除矩阵分隔符。
使用文本部分中提供的选项来设置方程格式。格式设置仅适用于方程中的文本。无法设置数值和符号的格式。除非将光标放在可设置格式的文本中,否则格式设置选项将处于禁用状态。
具体请参考以下网址:
https://ww2.mathworks.cn/help/matlab/matlab_prog/insert-equations.html
https://ww2.mathworks.cn/help/matlab/live-scripts-and-functions.html?s_tid=CRUX_lftnav
https://www.latex-project.org/