您可以在 matlab parfor 循环中使用函数吗?例如我有一个看起来像这样的代码:
matlabpool open 2
Mat=zeros(100,8);
parfor(i=1:100)
Mat(i,:)=foo();
end
在函数内部,我有一堆其他变量。特别是有一段代码如下所示:
function z=foo()
err=1;
a=zeros(10000,1);
p=1;
while(err>.0001)
%statements to update err
% .
% .
% .
p=p+1;
%if out of memory allocate more
if(p>length(a))
a=[a;zeros(length(a),1)];
end
end
%trim output after while loop
if(p<length(a))
a(p+1:end)=[];
end
%example output
z=1:8;
end
我在某处读到,在嵌套在 matlab parfor 循环内的 for 循环内增长的所有变量都必须预先分配,但在这种情况下,我有一个预先分配的变量,但以后可能会增长。当我使用 mlint 时,matlab 没有给我任何错误,但我想知道是否有我应该注意的问题。
谢谢,
-akt