繁体   English   中英

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

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

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

现在,在那之后,我将移至下一个具有多次出现的ID号(例如ID#456)并执行相同的操作。

我重复一切,直到最后一次出现多次出现的ID号为止。

所以我的输出将是这样的,(1)列标题将是相同的。 (2)ID#列将具有唯一条目。 此栏中仅包含多次出现的ID号。 (3)我将添加一个额外的列,该列的条目包含ID编号出现的次数。 例如,如果出现了5次,则该条目为5。(4)对于其他列,如果该列对于某个特定ID编号的所有出现都具有相同的条目,则我们写入“ 0”,否则输入“ 1”。 例如,如果对于ID#123,对于所有出现的ID#123,“ Section”列中的条目都是相同的,那么对于我们的输出表,“ Section”列将包含值“ 0”。 如果有任何差异,输出将为“ 1”

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

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

这可以通过uniqueaccumarray完成

在下面的示例中, 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM