【发布时间】:2016-04-22 16:27:49
【问题描述】:
我有一个矩阵
m =
2 2 1
3 2 1
0 4 1
0 4 1
5 4 1
0 5 2
1 2 2
1 3 2
1 4 2
1 1 3
0 2 3
0 3 4
0 3 4
这可能是 N x 3,其中 N 可能非常大。
我想在我有零的第一列 (1-13) 中找到索引,但前提是存在重复行或行是唯一的。我不希望第二列和第三列相同但第一列不为零的行。换句话说,如果第一列有一个零,但它在第二和第三列中的对应数字与另一个在第一列中具有不同数字而不是零的数字相同,则忽略该零的索引。因此,在上面的示例中,我只想返回索引 6、11、12、13。不应该返回索引 3,4,因为它们违反了规则,即存在与该行类似的行(第 2 列和第 3 列)但是第一列不同,如下所示:
0 4 1
0 4 1
5 4 1
一个缓慢的解决方案是找到第一列为 0 indm=m(:,1)==0 的行的索引,然后遍历矩阵的行,检查矩阵 (m) 中是否存在具有相同第二列的任何其他行和第 3 列,但第 1 列不同。如果这种情况不存在,则将该行的索引添加到程序要返回的列表中。
但是,这种方法需要遍历大型矩阵的“for 循环”。
【问题讨论】:
-
行的顺序是否重要,即如果第 5 行位于列表的最后,第 3,4 行是否算好?
-
没有。顺序并不重要
标签: matlab matrix indexing unique