繁体   English   中英

MATLAB App Designer 应用程序能否启动保存数字的脚本?

[英]Can a MATLAB App Designer app launch a script which saves figures?

App Designer 不支持 saveas、savefig 或 print ,但有没有办法使用它来启动支持的 MATLAB 程序?

我正在使用一个有数千行代码的 MATLAB 程序,而不是我的全部。 该程序保存数字以供以后参考,一些为 .fig 格式,一些为 PDF。 它运行良好,但每次运行都有许多选项可供选择,目前通过编辑主脚本顶部的值来完成。 我想添加一个 GUI 来简化它。

我知道还有其他方法,但 App Designer 似乎是使用“现代”的东西。 我可以将它用作现有脚本的启动器吗? 如果我只是按如下所示调用它,App Designer 的图形限制适用于整个脚本,它会执行所有计算,但在第一次“打印”时失败。 我希望有另一种方式。

    % Callback function
    function GoButton_2Pushed(app, event)
        % Save values for GUI restart.
        setKeySaveState(app);            
        % Use a struct to pass values to the model.
        scriptVars = app.modelVars;
        % Run
        The_Name_of_My_Script
    end

我可以让 GUI 以 json 格式将结构写入文件,手动启动主脚本,然后让它读取文件。 但这似乎很愚蠢。

编辑:以下是来自 MATLAB 命令窗口的错误消息:

使用打印时出错(第 79 行)使用 uifigure 函数创建的图形不支持该功能。 有关更多信息,请参阅 App 设计工具中的图形支持。

MapsCoralCoverClean>oneMap 中的错误(第 298 行) print('-dpdf', '-r200', outFile);

MapsCoralCoverClean 错误(第 70 行)oneMap(13, activeLatLon(:, 1), activeLatLon(:, 2), events85_2010(activeReefs), [], jet, tName, outFile, false);

A_Coral_Model_170118 中的错误(第 780 行) MapsCoralCoverClean(fullMapDir,Reefs_latlon,toDo,lastYearAlive,...

ModelGUI_2017a/GoButton_2Pushed 中的错误(第 465 行)A_Coral_Model_170118 错误使用 matlab.ui.control.internal.controller.ComponentController/executeUserCallback(第 310 行)评估 Button PrivateButtonPushedFcn 时出错。

我发现最好的做法是始终明确地提供图形对象的句柄,因为依赖 MATLAB 的当前图形当前轴通常不一致并可能导致问题。

除非明确提供,否则print将根据传递的其他参数保存当前图形。 在这种情况下,您的uifigure窗口在执行其他处理功能期间仍保持当前图形,导致print出错,因为它尚未针对某些新图形对象实现(为什么,MathWorks,为什么!?)。 要解决此问题,请将处理函数的figure调用的输出作为第一个输入传递给print

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM