如何停止从 Matlab 中的独立应用程序打印出来?

Posted

技术标签:

【中文标题】如何停止从 Matlab 中的独立应用程序打印出来?【英文标题】:How to stop printing out from a standalone application in Matlab? 【发布时间】:2012-10-02 01:50:42 【问题描述】:

我必须从 .m 文件 Gen.m 执行独立应用程序 aTool.exe。 我在 Gen.m 中放了一个命令来执行 aTool.exe 作为

system('aTool.exe');

效果很好。但是,因为 aTool.exe 有很多打印到命令窗口,所以需要很长时间才能完成运行此命令。我写了 Gen.m。 “aTool.exe”是一个开源应用程序,所以我无法访问源代码。 aTool.exe 应该在最后生成 Result1.txt、Result2.txt 和 Result3.txt 3 个文本文件。当它运行时,它会在屏幕上打印一些处理消息。这三个文本文件是我需要的,但在运行时我不需要那些处理消息。

有谁知道当我运行 Gen.m 文件时如何停止“aTool.exe”打印到命令窗口?我试过了

matlab -nodisplay -nojvm -nosplash -nodesktop -r Gen > matlab.out

没有用。命令窗口仍然弹出并开始打印。

【问题讨论】:

有些人刚刚the opposite problems :) 打印的是stdout还是stderr,你知道吗? 也许this 有帮助? 【参考方案1】:

您可以使用system 的输出参数在变量中捕获输出。这将让您检查错误,并可能从输出中提取有用的位。只要你使用分号来抑制回显,它就不会显示在命令窗口中。

[status,result] = system('aTool.exe');

或者我认为你可以在系统调用中使用重定向丢弃它的输出。

system('aTool.exe > NUL');

从长远来看,以第一种方式捕获输出将使调试更容易。但如果它真的是大量的输出,你最终可能会缓冲大量数据。

【讨论】:

非常感谢。很抱歉我没有详细说明。我在上面稍微修改了我的问题。通过使用命令“system('aTool.exe > NUL')”,它确实停止将消息打印到屏幕上。但是,它也停止生成我需要的那 3 个文本文件。无论如何,在运行期间没有那些处理消息的情况下,最后仍然有这 3 个文件吗?

以上是关于如何停止从 Matlab 中的独立应用程序打印出来?的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB 中的神经网络独立应用程序

C程序:从文件中读取矩阵数据,并显示出来,利用链式存储结构。

MATLAB 封装发布exe

C程序:从文件中读取矩阵数据,并显示出来,利用链式存储结构。

MATLAB for循环内if语句判断失败

matlab 初见定时器