MATLAB - 导致两个不同结果的等效逻辑索引

MATLAB - Equivalent logical indexing leading to two different results

我正在编写一段代码以通过在线评分器提交,如下所示。 B 是一些给定的数组,填充 any/all 整数 1 到 K,我想提取矩阵 X 的相应逻辑索引并对这些元素执行一些操作,以放入 return 数组:

for i = 1:K

   A = X(B == i, :);
   returnArr(i, :) = sum(A) / length(A);

end

这根本没有通过评分,所以我想改变我的方法,而不是通过首先使用 "find" 函数间接索引数组 X,如下所示:

for i = 1:K

    C = find(B == i);
    returnArr(i,:) = sum(X(C,:)) / length(C);

end

令我惊讶的是,这段代码顺利通过了评分机。我知道评分者之间存在很多差异,并且一个人处理特定功能的方式可能与另一个人不同,但从 MATLAB functionality/coding 的角度来看,我在这两种方法之间的差异方面遗漏了什么?谢谢!

我认为问题在于:

length(C) == sum(B == i)

length(A) == max([sum(B == i) , size(X , 2)])

换句话说,要获得与第一个示例相同的结果,您应该这样修改:

A = X(B == i , :);
returnArr(i, :) = sum(A) / size(A,1);

函数length returns 最大数组维度的长度