我有一个m×1矩阵A。我想找出哪些元素是重复的并获取其行值。 (因为矩阵是m乘1,所以只需设置行值即可。)

我试过了

k = find(~unique(A));

但是k包含错误的值。

这是我正在尝试做的一个例子。考虑数组A;
A = [4
     5
     5
     5
     7
     8
     4];

由于4和5是此处的重复元素,因此我想获取这些元素的行值并将其放入新数组中。结果数组将是
RowValues= [1
            2
            3
            4
            7];

注意:以上仅是示例,我要处理的实际数组在A数组中包含-0.0038、1.3438等类型的有理数。

最佳答案

这是使用 intersect 的解决方案:

s = sort(A);
c = intersect(s(1:2:end),s(2:2:end));
RowValues = find(ismember(A,c));

我使用@SardarUsama提出的方法将compared与octt中输入的大[1 x 10000000]一起使用。结果如下:
=======INTERSECT==========
Elapsed time is 1.94979 seconds.

=======ACCUMARRAY==========
Elapsed time is 2.5205 seconds.

关于matlab - 如何在矩阵中找到重复的值以及它们属于哪些行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50422299/

10-12 12:20
查看更多