我有一个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);
足够吗?
答案 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;充满你的数据,以使一切更紧凑(如果你愿意,我可以详细说明这些解决方案)。它取决于你,但我认为你的方法没有错!