抑制函数的命令窗口输出

21

我正在使用的一个函数中有display()(或其他在命令窗口显示消息的内容),因此当我运行代码时,它会在命令行输出大量的东西(x 1200),这使得跟踪和观察变得困难。

有没有一种方法可以禁止该特定函数的输出?显然,在语句末尾加上分号并不能解决这个问题。

2个回答

23
你可以尝试将函数调用包裹在evalc中:
evalc('out = func(arg1, arg2);');

2
+1:evalc可以捕获所有输出,包括fprintf调用,并且比创建私有的disp更安全,因为后者可能会被遗忘。 - Jonas

10

最简单的方法是创建一个虚拟函数DISP/DISPLAY,并将其放置在一个private文件夹中,与您自己的函数一起:

private/disp.m

function disp(x)
    return
end

myFunc.m

function myFunc()
    %# ...
    disp(1)
end

disp函数放在私有文件夹中,您可以覆盖具有相同名称的内置函数,但此版本仅对父目录中的函数可见,从而在其他地方保持原始功能。

确保您不要将此私有文件夹添加到路径中,只需将myFunc.m添加到路径中(请阅读相关 文档)。


6
最好将其作为一个内部函数放在文件底部。这样,您不会因为其他内容而污染名称空间,仅限于此函数使用。 - Marc
我猜对于一个单一的函数来说,这确实更简单、更清晰。但是如果它调用了其他文件中的函数(你也想抑制它们的输出),使用一个私有文件夹来维护一个单一的更改会更容易。 - Amro
请注意,它无法与编译程序一起使用。编译的Matlab往往会找到内置函数。 - Andrey Rubshtein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接