【问题标题】:Prevent printing to command line in MATLAB防止在 MATLAB 中打印到命令行
【发布时间】:2016-04-06 13:44:43
【问题描述】:

在你回答之前,我不是在寻找 ; 的功能来抑制命令行打印。

我有一组不属于我的脚本,我无法更改。但是,在我的脚本中,我通过evalin('base', 'scriptName') 调用了这些其他脚本。不幸的是,这些其他脚本在我不想看到的命令窗口上做了很多不必要且丑陋的打印。由于无法编辑这些其他脚本,我想要一种在这些其他脚本执行期间禁止向命令行输出的方法。

一个可能的答案是使用evalc,但是当我尝试evalc(evalin('base', 'scriptName')) 时,MATLAB 会抛出一个错误,抱怨它无法将脚本作为函数执行。我希望能够禁用命令窗口打印或将所有输出重定向到某个空文件,就像 unix 中的/dev/null

【问题讨论】:

  • 脚本如何输出到命令窗口?缺少;disp? fprintf?为什么不能编辑脚本?
  • 他们一般使用fprintf。我无法编辑脚本,因为它们不是我的,而且我无权访问它们。我只能运行它们。
  • 可以 overload fprintf什么都不做,但这不是一个好的解决方案。你最好自己修复文件。您最好将这些脚本重构为函数,这样您就可以显式地向它们传递参数,而不是依赖evalin 来正确运行。
  • @excaza 正如我所说,我没有编辑文件的权限。我只能运行它们。但是,您重载 fprintf 的解决方案虽然很糟糕,但却是我能找到的唯一有效的解决方案。如果你写一个答案,我会接受。

标签: matlab command-window


【解决方案1】:

我认为您只需将evalc 示例中的参数转换为字符串即可:

evalc('evalin(''base'', ''scriptName'')');

【讨论】:

  • 你是绝对正确的。我为之前没有意识到这一点而感到愚蠢。这个解决方案奏效了!
【解决方案2】:

您是否尝试过此解决方案 here?

echo off;

【讨论】:

  • echo 默认情况下不启用,如果启用,它将打印执行的每个命令,这似乎不是这里的情况。
  • 我也发现了,但不适用于我的情况。 echo 只是将所有执行的命令打印到命令窗口。关闭它会关闭该“功能”,但仍会实际打印到命令窗口。 echo 与我的问题无关。
【解决方案3】:

我不知道它是否符合您的需求,但另一种解决方案是打开一个新的 Matlab 会话,并在那里使用最小化的 -nodesktop 表单(-只是命令窗口)。您可以从那里运行烦人的脚本,并照常处理主会话。

这里的问题是会话不能同步,所以如果你需要一直处理脚本的结果,那就有点复杂了。也许您可以将结果保存到磁盘,而不是从主会话中调用它... 但这主要取决于您使用这些脚本的工作流程。

【讨论】:

  • 不错的尝试,可惜我不能用这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-10
  • 1970-01-01
  • 1970-01-01
  • 2015-03-07
  • 1970-01-01
相关资源
最近更新 更多