抑制函数输出

5
我有一个简短的函数,它使用textscan将数据读入变量中。我的问题是我总是得到这样的结果:
>>function('function.txt')

    ans = 

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

除了在调用函数的行末添加分号之外,还有没有其他方式可以抑制它?我希望能够在不添加分号的情况下抑制它。运行此函数时,我不想显示任何内容,只想加载我的文件。


抱歉,我误读了问题。我正在删除我的答案。 - Colin T Bowers
4
现在我已经仔细重新阅读了问题 :-) 我认为可以使用evalc实现您想要的功能。有关此问题的近似重复内容,请参见suppress-outputsuppressing-a-functions-command-window-output(我将其标记为可能的重复问题)。 - Colin T Bowers
3个回答

5
您可以通过删除函数的输出参数(或返回值)来抑制输出。 或者,尝试使用“可变数量的输出”,请参见支持可变数量的输出
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的输出。 因此,你可以通过不提供任何输出参数来抑制输出。

4
避免输出的最简单方法是,如果没有请求输出参数,则不要分配第一个输出参数:
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

1
你可以尝试使用日记功能diary。它将命令提示符的所有输入和输出重定向到您选择的文件中。如果您只在特定函数期间打开它,则不应捕获任何输入。
我承认这是一个有些笨拙的解决方案,因为matlab的日记开/关状态是全局的,但在您的情况下可能还可以接受。
在此处阅读更多信息: Diary matlab help

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