抑制功能输出

时间:2013-01-07 04:36:22

标签: matlab

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

我的问题是我总是得到这个:

>>function('function.txt')

    ans = 

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

除了在我用来调用函数的行末尾添加一个半冒号外,还有什么方法可以抑制它吗?我希望能够在不添加半结肠的情况下抑制它。我不想在运行此功能时显示任何内容,我只想加载我的文件。

3 个答案:

答案 0 :(得分:5)

您可以通过删除函数的输出参数(或返回值)来抑制输出。 要么 尝试使用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

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

答案 1 :(得分: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

答案 2 :(得分:1)

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

在这里阅读更多相关信息: Diary matlab help