parfor 的分类错误

Classification error for 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 询问过。

编辑:

Subscripted assignment dimension mismatch.

Caused by: Subscripted assignment dimension mismatch.

j

ans =

0.0000 + 1.0000i

该错误与 parfor 无关。您可以将 parfor 替换为 for,您将收到相同的错误。

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

您正试图将三个值放入单元格,但您只为其中一个分配了 space。