如果假设1d预先排序的向量,在matlab中实现unique()的更快的方法是什么?

gny*_*his 7 optimization performance matlab unique

我很幸运找到一种方法来实现使用预先排序的1d向量在堆栈溢出上更快实现intersect(),所以我希望对unique();同样的运气

使用unique()几乎占我运行时的1/4.我想加快速度,我可以假设它是1d预先排序的矢量.我可以直接使用其他任何低级功能来加快速度吗?

Jon*_*nas 7

您可以简单地diff用来检查连续元素是否相同.

vector = [1 2 3 4 4 5];

uniqueVector = vector([true;diff(vector(:))>0])

uniqueVector =
     1     2     3     4     5
Run Code Online (Sandbox Code Playgroud)