[英]How can I remove rows of a matrix in Matlab when the difference between two consecutive rows is more than a threshold?
[英]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 |
+-------+---------+-----+----------+---------------------+
这可以通过unique和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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.