Matlab引擎和disp()函数

时间:2013-10-09 18:01:35

标签: matlab matlab-engine

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

知道如何才能让它发挥作用吗?

此外,是否可以使用engOutputBuffer将这样的心跳在脚本运行时放入Windows命令?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

您可以实现对消息的监视的另一种方法是在engOutputBuffer之后打开一个线程,它将检查缓冲区的内容并并行执行printf以执行在主要文件中启动的m脚本线程。

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