主要内容

使用辅助函数重用 App 中的代码

辅助函数是您定义在 App 中使用的 MATLAB® 函数。在定义辅助函数后,您可以在您的 App 代码的不同位置调用它。例如,您可以在 App 用户更改滑块上的数字或选择下拉列表中的项后调用辅助函数来更新绘图。通过创建辅助函数,您可以使常用命令具有单一源代码,避免维护冗余代码。

您可以在 App 设计工具或 MATLAB 程序文件中定义 App 中的辅助函数。根据函数代码与 App 的交互方式选择一种方法。

方法何时使用
在 App 设计工具中创建辅助函数。
  • 代码更新用户界面或需要访问 App 中的组件。

  • 您要仅在 App 运行时运行该函数。

在 MATLAB 程序文件 (.m) 中创建辅助函数。
  • 您已在 MATLAB 脚本或函数中编写一些代码,并且希望从您的 App 中执行这些代码。

  • 您要在 MATLAB 中的多个独立 App 或工程之间共享代码。

  • 代码不直接更新用户界面的任何部分或从中读取数据。

  • 您要独立于 App 运行或测试代码。

在 App 设计工具中创建辅助函数

可在 App 设计工具中创建的辅助函数有两种类型:私有函数,只能在 App 内部调用;公共函数,可在 App 内部或外部调用。私有函数通常在单窗口 App 中使用,而公共函数通常在多窗口 App 中使用。

代码视图在 App 设计工具中创建一个辅助函数。在工具条的编辑器选项卡中,点击函数,然后选择私有函数公共函数

Function drop-down list with options "Private Function" and "Public Function"

当您进行选择时,App 设计工具会在 App 代码内创建一个模板函数并将光标置于该函数的函数体中。然后,您可以更新函数名称及其参量,并在函数体中添加代码。app 参量是必需的,您可以使用 app 输入来访问 App 中的组件和属性。您可以在 app 参量后包含任何其他参量。

例如,以下函数 updatePlot 创建 peaks 函数的曲面图。它接受附加参量 n,用于指定要在绘图中显示的样本数。

function updatePlot(app,n)
    surf(app.UIAxes,peaks(n));
    colormap(app.UIAxes,winter);
end

调用私有函数

如果您只想从定义某函数的 App 中调用该函数,请定义私有函数。您可以在 App 的任何位置调用该函数。

例如,如果您的 App 包含滑块和下拉组件来控制同一绘图上的参数,请将 updatePlot 函数定义为私有函数。通过从组件回调函数中调用 updatePlot 函数,在任一组件值更改时更新绘制的数据。

function SliderValueChanged(app,event)
    value = app.Slider.Value;
    updatePlot(app,value)        
end

function DropDownValueChanged(app,event)
    value = app.DropDown.Value;
    num = str2double(value);
    updatePlot(app,num)        
end

调用公共函数

如果您要在 App 运行时从 App 外部调用函数,请定义公共函数。当您有由多个 App 文件组成的多窗口 App 时,公共函数非常有用。您可以从 App 调用在另一个 App 中定义的公共函数。

例如,如果您的主 App 有一个按钮,该按钮用于创建包含绘图的次级 App,则请将 updatePlot 函数定义为公共函数。通过从 ButtonPushedFcn 回调调用 updatePlot 函数,从主 App 更新绘图。

function CreatePlotButtonPushed(app,event)
    secondaryApp = MyPlotApp;
    updatePlot(secondaryApp,10)       
end

有关多窗口 App 的详细信息,请参阅在 App 设计工具中创建多窗口 App

管理辅助函数

您可以使用代码浏览器管理在 App 设计工具中定义的辅助函数。例如,您可以使用代码浏览器来执行以下任务:

  • 查看在 App 设计工具中定义的所有辅助函数 - 在代码视图中的代码浏览器中,选择函数选项卡。

  • 搜索辅助函数 - 在函数选项卡的顶部,使用搜索框。

  • 重命名辅助函数 - 双击函数名称并键入新名称。当您更改名称时,App 设计工具会自动更新 App 代码中对该函数的所有引用。

  • 导航到辅助函数 - 点击函数名称以在视图中显示函数定义。右键点击函数名称,然后选择转至,将光标放在该函数上。

  • 删除辅助函数 - 右键点击函数名称,然后选择 Delete 键。

MATLAB 程序文件中创建辅助函数

要在多个独立 App 或工程之间重用代码,请在 App 设计工具之外的 MATLAB 程序文件中定义一个辅助函数。如果脚本中有现有代码,可以将脚本转换为函数。有关详细信息,请参阅脚本与函数

要创建 App 可以调用的新函数,请按照以下步骤操作:

  1. 在 MATLAB 中创建新函数文件。有关详细信息,请参阅在文件中创建函数

  2. 定义函数需要从 App 获得的输入数据,如组件值。

  3. 定义 App 需要从函数获得的输出数据,如计算结果。

  4. 将函数文件添加到 App 文件可以访问的位置,例如与 App 文件在同一文件夹中或在 MATLAB 搜索路径中。

然后,您可以从 App 代码中调用该函数。

例如,要显示选定日期和当前日期之间的天数,您可以创建一个执行日期计算的 MATLAB 函数。在与 App 文件相同的文件夹中创建一个名为 calculateDate.m 的函数文件。定义接收日期并返回当前日期和该日期之间天数的函数。

function numdays = calculateDate(date)
dur = date - datetime("today");
numdays = days(dur);
end

从 App 设计工具中的 App 代码调用此函数。例如,如果您的 App 包含日期选择器,请从日期选择器的 ValueChangedFcn 回调中调用 calculateDate 函数来更新您的 App。

function DatePickerValueChanged(app,event)
    value = app.DatePicker.Value;
    numdays = calculateDate(value);
    app.CountdownLabel.Text = "Your date is " + numdays + " days away";
end

示例:用于更新绘图的辅助函数

此 App 说明如何使用辅助函数来初始化和更新绘图。该 App 在 startupFcn 回调结束时调用 updatePlot 私有辅助函数,以便在 App 启动时初始化绘图。UITableDisplayDataChanged 回调函数还调用 updatePlot 函数,以便当用户在表中对列排序或更改值时更新同一绘图。

另请参阅

主题