Matlab函数的输出是一个空数组

时间:2017-12-11 07:33:55

标签: matlab

我有一个Matlab函数,它返回一个概率alpha的数组,没有概率1-alpha的空数组(即空数组):

function [binary_array_e1 , binary_array_e2 ] = croiser(binary_array_p1,binary_array_p2,alpha )

binary_array_e1=[];
binary_array_e2=[];
compt=1;

if (rand <= alpha)  
% some stuff that will put sth in binary_array_e1 and binary_array_e2
end

我的问题是:如何在函数调用时管理函数返回空数组的事实?是这样的:

[binary_array_e1 , binary_array_e2]=croiser(binary_array_p1,binary_array_p2,alpha);

足够吗?

2 个答案:

答案 0 :(得分:0)

是的,那应该没问题。您可以稍后使用函数isempty

检查输出是否为空数组

答案 1 :(得分:0)

如果你想从函数调用中返回一个空变量,你完全可以这样做,而你是在正确的道路上。在函数开头将变量初始化为空...

function [binary_array_e1 , binary_array_e2 ] = croiser(binary_array_p1,binary_array_p2,alpha )

    binary_array_e1=[];
    binary_array_e2=[];

    % ...
end

然后只需在需要时检查结果,例如:

[binary_array_e1,binary_array_e2] = croiser(binary_array_p1,binary_array_p2,alpha);

if (isempty(binary_array_e1))
    % do something 1...
elseif (isempty(binary_array_e2))
    % do something 2...
else
    % do something 3...
end

当然,为了检查结果,必须返回和评估这两个变量。但是如果你在一个case中返回两个空数组而在另一个case中返回两个非空数组,你也可以只检查一个数组:

if (isempty(binary_array_e1))
    % do something...
else
    % do something else...
end

无论如何......有很多方法可以获得相同的结果。例如,您还可以返回“逻辑”字样。变量,它会立即告诉您阵列是否已填充某些内容,或者您​​可以返回一个&#39;结构&#39;充满你的数据,以使一切更紧凑(如果你愿意,我可以详细说明这些解决方案)。它取决于你,但我认为你的方法没有错!