【发布时间】:2017-11-19 05:12:21
【问题描述】:
假设我有 5 个不同大小的数组。所有数组都有相同的列数,在我的例子中是 2,但行数不同。我需要找到至少出现在 3 个这样的数组中的行的元素。
现在,我使用ismember 比较两个数组,然后将该结果与第三个数组进行比较,然后保存所有三个数组中出现的行值。我对 3 个数组的每一种可能组合都这样做;基本上就我而言,我总共有 10 个这样的操作。这就像在没有重复的情况下从 5 个中选择 3 个。
它有效,但我正在寻找更有效的实现。特别是,我一直在寻找任何可以通过投票来执行此操作的实现。这就像拥有不同大小的集合并试图找到出现在大多数集合中的元素,在我的例子中是 5 个数组中的 3 个。
【问题讨论】:
-
@ excaza:据我了解,link 中提供的解决方案更适合比较每对数组。例如,它将所有数组保存在一个单元格中,然后找到每对数组的交集。最后,找到唯一的行以及它们出现的数组。在我的问题中,将所有数组放在一个大矩阵中似乎更有效。我认为比较每一对数组都涉及到更多的比较,这里似乎效率不高。