谁能给我解释一下,为什么下面给出一个错误u
,但也不是为h
PARFOR循环已经错切变量
max_X = 100;
max_Y = 100;
h = ones(max_Y,max_X);
u = zeros(max_Y,max_X);
parfor l=1:max_X*max_Y
i = mod(l-1,max_X) + 1;
j = floor((l-1)/max_Y) + 1;
for k=1:9
m = i + floor((k-1)/3) - 1;
n = j + mod(k,-3) + 1;
h_average(k) = sqrt(h(i,j)*h(m,n));
u_average(k) = (u(i,j)*sqrt(h(i,j)) + u(m,n)*sqrt(h(m,n)))/(sqrt(h(i,j)) + sqrt(h(m,n)));
end
end
我现在可以替代(i,j)
与(l)
,但即使我尝试计算我们把它称为p
,根据(m,n)
,并写u(p)
而不是u(m,n)
它给我一个错误信息。 它只强调了u(m,n)
,分别。 u(p)
但不是h(m,n)
。 MATLAB说:
说明: 对于MATLAB有效地执行
parfor
循环,发送到MATLAB工作人员的数据量必须控制在最小限度。 MATLAB实现这一点的方法之一是通过限制变量在parfor
迭代中的索引方式。指示的变量以与parfor
不兼容的方式进行索引。 建议的操作 修复索引。有关索引限制的说明,请参见Parallel Computing Toolbox文档中的“切片变量”
任何想法,这里有什么问题?
查看关于切片变量的部分[here](http://blogs.mathworks.com/loren/2009/10/02/using-parfor-loops-getting-up-and-running/#12)。 – chappjc