【问题标题】:Suppress function output抑制函数输出
【发布时间】:2013-01-07 04:36:21
【问题描述】:

我有一个简短的函数,它使用textscan 将数据读入变量。

我的问题是我总是这样:

>>function('function.txt')

    ans = 

        {10x1 cell}    {10x1 cell}    {10x1 cell}    [10x1 double]

除了在我用来调用函数的行尾添加一个分号之外,还有什么方法可以抑制这种情况?我希望能够在不添加分号的情况下抑制它。运行这个函数时我根本不想显示任何东西,我只想加载我的文件。

【问题讨论】:

  • 糟糕,误读了这个问题。我正在删除我的答案。
  • 现在已经正确地重新阅读了这个问题:-) 你想要的可以使用evalc 来完成(我认为)。请参阅 suppress-outputsuppressing-a-functions-command-window-output 以了解此问题的几乎重复(我将其标记为可能的重复)。

标签: matlab


【解决方案1】:

您可以通过删除函数的输出参数(或返回值)来抑制输出。 要么 尝试使用Variable Number of Outputs,见Support Variable Number of Outputs

function varargout = foo
    nOutputs = nargout;
    varargout = cell(1,nOutputs);
    for k = 1:nOutputs;
        varargout{k} = k;
    end
end

你输入>>foo 却什么也得不到。 你输入>>a=foo 并得到>>a=1。 你输入>>[a,b]=foo 得到>>a=1 >>b=2

因此,您可以通过不提供任何输出参数来抑制输出。

【讨论】:

    【解决方案2】:

    避免打印输出的最简单方法是如果没有请求输出参数,则不分配第一个输出参数:

    function [aOut,b,c] = doSomething
    
    %# create a,b,c normally
    a = 1;
    b = 4;
    c = 3;
    
    %# only assign aOut if any output is requested
    if nargout > 0
       aOut = a;
    end
    

    【讨论】:

      【解决方案3】:

      您可以尝试使用diary 功能。它将命令提示符的所有输入和输出重定向到您选择的文件。如果仅在特定功能期间打开它,则不应捕获任何输入。 我承认这是一个有点笨拙的解决方案,因为日记的开/关状态对 matlab 来说是全局的,但在你的情况下可能没问题。

      在此处了解更多信息: Diary matlab help

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-03
        • 1970-01-01
        • 1970-01-01
        • 2011-03-03
        • 2020-09-21
        • 2012-11-09
        • 2023-03-12
        相关资源
        最近更新 更多