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

时间:2015-03-30 03:04:02

标签: matlab comparison row

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

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

我重复所有内容,直到我用最后一次ID号码结束。

所以我的输出会是这样的, (1)列标题将相同。 (2)ID#列将具有唯一条目。此列中仅包含多次出现的ID号。 (3)我将添加一个额外的列,其条目包含ID号出现的次数。例如,如果它发生了5次,则条目为5。 (4)对于其他列,如果列对于某个ID号的所有出现都有相同的条目,我们写" 0",else" 1"。例如。如果对于ID#123,列"部分"中的条目对于ID#123的所有出现都是相同的,然后对于我们的输出表,列" Section"将包含" 0"的值。如果有任何差异,输出将为" 1"

1 个答案:

答案 0 :(得分:0)

您的问题不是很明确但我想您要计算唯一值的数量和唯一行的出现次数。下表可能会证明这一点。

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

可以使用 unique accumarray

来完成

在下面的示例中,A是原始数据,output是您想要的输出。 n的第一个output列是您的唯一数据,最后一列包含此行发生的次数。行[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