我有一个嵌套的 for 循环,但它会减慢一点处理速度,我怎样才能使嵌套循环有效。我需要的是对于外循环的每个值,内循环继续其所有迭代。但是,我认为它不会像两个嵌套循环那样影响计算。我的第二个问题是,parfor
循环是否会影响速度或可能支持我的现象?
我的代码:
n=2;
for i=1:500
for jj=1:n
A{1}=['Obj' num2str(1)];
A{2}=['Obj' num2str(2)];
end
end
您的嵌套循环不会表现出对循环参数的任何依赖性,因此您可能需要重新格式化上面的代码。但总的来说,只要您的迭代不相互依赖并且迭代次数足够大以支持初始化并行处理的延迟,那么 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”构造。