在 MATLAB 中,如何比较两行之间的差异

In MATLAB, how do you compare the difference between two rows

一个输入是一个ID号多次出现的数据文件。 (e.g ID# 123) 现在我想要的是收集所有具有相同 ID 号的行,逐列比较,看看它们在哪一列有差异。

现在,我将转到下一个多次出现的 ID 号(例如 ID#456)并执行相同的操作。

我重复一切,直到我完成多次出现的最后一个 ID 号。

所以我的输出会是这样的, (1)列headers将是相同的。 (2) ID# 列将具有唯一的条目。只有多次出现的 ID 号才会包含在该列中。 (3)我将添加一个额外的列,其条目包含 ID 号出现的次数。例如,如果出现 5 次,则条目为 5。 (4)对于其他列,如果该列对于某个 ID 号的所有出现都有相同的条目,我们写“0”,否则写“1”。例如。如果对于 ID#123,列 "Section" 中的条目对于所有出现的 ID#123 都是相同的,那么对于我们的输出 table,列 "Section" 将包含值“ 0”。如果有任何差异,输出将是“1”

你的问题不是很清楚,但我想你想计算唯一值的数量和唯一行出现的次数。下面的 table 可能证明了这一点。

+-------+---------+-----+----------+---------------------+
| ID    | Column1 | ... | Column n | num of occurrencies |
+-------+---------+-----+----------+---------------------+

这可以通过 unique and accumarray

来完成

在下面的示例中,A 是原始数据,output 是您想要的输出。 output 的前 n 列是您的唯一数据,最后一列包含此行出现的次数。 [1 5] 行出现了两次,[2 3] 出现了一次等等

A = [1 5
 1 5
 2 3
 2 4
 3 9];

[k,~,idx]= unique(A,'rows');
n = accumarray(idx(:),1);
output = [k n]
output =

 1   5   2
 2   3   1
 2   4   1
 3   9   1