嵌套for循环matlab或parfor循环

时间:2014-04-24 21:16:29

标签: matlab loops for-loop nested parfor

我是一个嵌套 for循环,但它减慢了一点处理,我怎样才能使嵌套循环变得高效。我需要的是外部循环的每个值,内部循环继续其所有迭代。 但是,我不认为这会影响计算,因为它们是两个嵌套循环。 我的第二个问题是,parfor循环可能会影响速度还是可能支持我的现象?

我的代码:

n=2;
for i=1:500
for jj=1:n
    A{1}=['Obj' num2str(1)];
    A{2}=['Obj' num2str(2)];
end  
end

1 个答案:

答案 0 :(得分:0)

您的嵌套循环不会对循环参数产生任何依赖性,因此您可能希望重新格式化上面的代码。但总的来说,只要您的迭代不相互依赖并且迭代次数足以支持初始化并行处理的延迟,就允许parfor循环并且它(分别)执行得更好。如果您正在使用某种单元格或矩阵,并且嵌套循环覆盖了它的连接部分,则可以始终使用线性索引方法。例如

n=100;
s=0;
a=randi([1 n],n);
for i=1:n
   for j=1:n
       s=s+a(i,j);
   end
end

可以改写为

n=100;
s=0;
a=randi([1 n],n);
for i=1:n^2
    s=s+a(i);
end

但是如果你的数组很大并且你的迭代不相互依赖,那么通常最好利用'parfor'结构。