【问题标题】:Suppressing a function's command window output抑制函数的命令窗口输出
【发布时间】:2011-03-03 01:25:51
【问题描述】:

我正在使用的函数中有display()(或其他在命令窗口上显示消息的东西),所以当我运行我的代码时它会在命令行上输出很多东西(x 1200),这使得事情难以追踪和观察。

有没有办法抑制这个特定函数的输出?用分号结束语句显然没有帮助。

【问题讨论】:

    标签: matlab function output suppress


    【解决方案1】:

    您可以尝试将函数调用封装在 evalc 中:

    evalc('out = func(arg1, arg2);');
    

    【讨论】:

    • +1:evalc 捕获所有输出,包括 fprintf 调用,这比创建一个以后可能会忘记的私有 disp 风险要小得多。
    【解决方案2】:

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

    私人/disp.m

    function disp(x)
        return
    end
    

    myFunc.m

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

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

    确保不要将此私有文件夹添加到路径中,只在路径上添加 myFunc.m(请阅读relevantdocumentations

    【讨论】:

    • 更好:只需使其成为内部函数 - 在文件的底部。这样一来,您就不会污染除此功能之外的任何名称空间。
    • 我猜想一个包含的函数确实更简单、更干净。但是如果它跨多个文件调用其他函数(您也想抑制它们的输出),使用私有文件夹维护一个更改会更容易
    • 请注意,它不适用于已编译的程序。编译后的 Matlab 往往会找到内置函数。
    猜你喜欢
    • 2015-04-05
    • 2010-10-05
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多