【问题标题】:Matlab engine and disp() functionMatlab 引擎和 disp() 函数
【发布时间】:2013-10-09 18:01:35
【问题描述】:

我有一个脚本需要一些时间来执行。我使用 Matlab 引擎在 C++ 函数中启动它。 为了监控脚本的执行,我想在其中添加一些disp('still alive')。但是,它不起作用,engOpen 打开的 matlab 命令窗口中没有显示任何内容(是的,我确定脚本正在运行,因为我在执行结束时获得了输出文件)。

知道如何让它工作吗?

此外,是否可以使用 engOutputBuffer 将此类心跳在脚本运行时输入到 Windows 命令中?

谢谢!

【问题讨论】:

    标签: matlab matlab-engine


    【解决方案1】:

    使用 engOutputBufferengEvalStringprintf 将输出输出到控制台(到 Windows 命令窗口,而不是 MATLAB 命令窗口)。

    如果您想监控脚本的进度,您可以在 C 代码中打开 m-script 文件并使用engEvalString逐个命令执行它。每次执行命令后printf 将内容缓冲到控制台窗口。这种方法的主要问题是如何在打开的 m-script 文件中隔离(解析)命令,但是如果您期望某些类型的脚本,可以这样做。

    实现消息监控的另一种方法是在engOutputBuffer 之后打开一个线程,该线程将检查缓冲区的内容并在执行主线程中启动的m 脚本的同时执行printf

    查看mathworks(页面底部附近)的示例,了解如何将 MATLAB 消息输出到控制台(Windows 命令)。

    【讨论】:

    • 呃。在我的第一个问题中,我说“matlab 命令”。关于我的第二个问题,我知道该怎么做,我问的是:是否可以在脚本运行时将内容输出到 windows 命令中。
    • 在你的 c 代码中打开 .m 脚本并使用 engEvalString 逐行执行。我在回答中提到了控制台输出,而不是 matlab 命令窗口。
    • 逐行执行脚本是一个想法,尽管过于依赖底层脚本。最终,我想阅读任何脚本并监控它的执行。请用您最后的评论编辑您的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    相关资源
    最近更新 更多