【发布时间】:2014-12-10 09:38:52
【问题描述】:
您好,我想使用 PARFOR 运行如下代码。 当我尝试时,它说:
“A_x”和“A_y”的有效索引在 PARFOR 循环中受到限制。 说明为了让 MATLAB 有效地执行 parfor 循环, 发送给 MATLAB 工作人员的数据量必须最少。中的一个 MATLAB 实现这一点的方法是通过限制变量的方式 在 parfor 迭代中索引。指示的变量在 与 parfor 不兼容的方式。建议的操作
修复索引。有关索引限制的说明,请参阅 >Parallel Computing Toolbox 文档中的“切片变量”:
N=eveninteger;
H=zeros(N);
V=zeros(N);
A_x=zeros(N);
A_y=zeros(N);
parfor i=1:N;
for j=1:N;
if H(i,j)==-2;
t=0.3;
As_x=t*(j-i)/a;
As_y=t*(j-i)/a;
elseif H(i,j)==-3;
t=0.8;
As_x=t*(j-i)/(a*sqrt3);
As_y=t*(j-i)/(a*sqrt3);
elseif i==j
As_x=i;
As_y=i;
else
t=0;
As_x=0;
As_y=0;
end
for p=1:N/2
for q=N/2+1:N
A_x(p,q)=A_x(p,q)+As_x*(V(i,p)*V(j,q));
A_y(p,q)=A_y(p,q)+As_y*(V(i,p)*V(j,q));
end
end
end
结束
我找不到解决方案。你能给我一个解决方案吗。 提前致谢。 埃里科
【问题讨论】:
-
您的代码不完整,至少缺少一个“结尾”。请正确缩进你的代码,在编辑器中使用 rightlick->“Smart Indent”。
-
从未尝试过,但是在
parfor循环中嵌套了一堆for循环似乎很尴尬。而且其中一些(嵌套的for循环)似乎可以被矢量化表达式替换。
标签: matlab