【发布时间】:2017-06-28 01:28:11
【问题描述】:
我正在编写一段代码以通过在线评分器提交,如下所示。 B 是某个给定的数组,填充了从 1 到 K 的任何/所有整数,我想提取矩阵 X 的相应逻辑索引并对这些元素执行一些操作,以放入返回数组中:
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 功能/编码的角度来看,我在这两种方法之间的差异方面遗漏了什么?谢谢!
【问题讨论】:
-
我的第一个想法是
length(A)和length(C)可能会返回不同的结果,因为A是一个矩阵。A和C的大小是多少? -
请参阅minimal reproducible example。你对
B和K有解释,然后突然拉出X。提供一个完整的例子,你期望的结果,以及你实际获得的结果。这些方法是不等价的。我想您可以通过查看它们自己来解释这些方法之间的差异......
标签: arrays matlab matrix matrix-indexing