我希望并行编写以下代码:
min=0;
LB=[min1 min2]
UB=[max1 max2]
numvalues2=OpParam(2);
for i =LB(1):step1:UB(1),
for j =LB(2):step2:UB(2)
acc=ComputeCbetaPerm( [i j],featureMatrix,labelMatrix);
if(acc < max)
acc=min;
values=[i j];
end
end
end
我更改为以下内容以避免使用临时变量max
,但仍然会出现我无法获得的分类错误。
LB=[min1 min2]
UB=[max1 max2]
Result=cell(numvalues1,numvalues2,1);
outervalues=LB(1):step1:UB(1);
innervalues=LB(2):step2:UB(2);
for (i =1:numel(outervalues)),
parfor (j =1:numel(innervalues)),
acc=ComputeCbetaPerm( [outervalues(i) innervalues(j)],featureMatrix,labelMatrix);
Result(i,:,1)={outervalues(i),innervalues(j),acc};
end
end
还在http://in.mathworks.com/matlabcentral/answers/195799-classification-error-for-parfor询问。
编辑:
订阅的分配维度不匹配。
引起: 订阅的分配维度不匹配。
Ĵ
ans =
0.0000 + 1.0000i
答案 0 :(得分:1)
该错误与parfor无关。你可以用for替换parfor,你会收到同样的错误。
LB=[min1 min2]
UB=[max1 max2]
Result=cell(numvalues1,numvalues2,3);
outervalues=LB(1):step1:UB(1);
innervalues=LB(2):step2:UB(2);
for i =1:numel(outervalues)
parfor j =1:numel(innervalues)
acc=ComputeCbetaPerm( [outervalues(i) innervalues(j)],featureMatrix,labelMatrix);
Result(i,j,:)={outervalues(i),innervalues(j),acc};
end
end
您正在尝试将三个值放入单元格中,但是您只为一个值分配了空间。