parfor的分类错误

时间:2015-04-02 13:50:41

标签: matlab parfor

我希望并行编写以下代码:

    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

1 个答案:

答案 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

您正在尝试将三个值放入单元格中,但是您只为一个值分配了空间。