任何人都可以向我解释,为什么以下给出了一个错误,u
但也不是h
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 文档中的“切片变量”
任何想法,这里有什么问题?