error using parfor in matlab // parfor中的变量无法分类
Error using parfor in matlab // The variable in a parfor cannot be classified
我有以下for循环 里面一个parfor循环:
for j1=1:NN
for j2=1:NN
HF(j1,j2)=hf(mod((j1-j2),NN)+1);
end
end
我收到错误消息:
The variable HF in a parfor cannot be classified.
我没有在 parfor 循环之外或其他任何地方使用或定义 HF。每次迭代都会创建自己的 HF 版本。
我该如何解决这个问题?
因为您没有在循环外初始化 HF
,当解析您的代码时,MATLAB 认为您正在修改 shared 变量 HF
parfor
内。这是有问题的,因为多个工作人员不能修改相同的数据。这会导致您看到的错误。
要解决此问题,您需要在循环之外显式预分配 HF
,以帮助 MATLAB 确定 parfor
循环中的每次迭代都在 上运行不同 HF
.
HF = zeros(NN, NN);
for j1=1:NN
for j2=1:NN
HF(j1,j2)=hf(mod((j1-j2),NN)+1);
end
end
我有以下for循环 里面一个parfor循环:
for j1=1:NN
for j2=1:NN
HF(j1,j2)=hf(mod((j1-j2),NN)+1);
end
end
我收到错误消息:
The variable HF in a parfor cannot be classified.
我没有在 parfor 循环之外或其他任何地方使用或定义 HF。每次迭代都会创建自己的 HF 版本。
我该如何解决这个问题?
因为您没有在循环外初始化 HF
,当解析您的代码时,MATLAB 认为您正在修改 shared 变量 HF
parfor
内。这是有问题的,因为多个工作人员不能修改相同的数据。这会导致您看到的错误。
要解决此问题,您需要在循环之外显式预分配 HF
,以帮助 MATLAB 确定 parfor
循环中的每次迭代都在 上运行不同 HF
.
HF = zeros(NN, NN);
for j1=1:NN
for j2=1:NN
HF(j1,j2)=hf(mod((j1-j2),NN)+1);
end
end