2011-10-11 46 views
4

什么是查找MATLAB中分类矢量中值的索引的最快方法? 也就是说,有没有一个快速的find(vector == myNumber, 1, 'first')当矢量排序?MATLAB中分类矢量的速度增强

我有一个大矩阵(200,000 x 4)的位置,每个位置都有一个唯一的整数ID记录在第一列。我想找到一个已知ID的位置,但成千上万的搜索可以让我找到一点点。

+0

对于更一般的形式,包括我nequality,看到这个问题:[快速搜索排序向量](http://stackoverflow.com/questions/20461972/fast-searching-for-the-lowest-value-greater-than-x-in-a-sorted - 向量) –

回答

4

如果你使用ismembc2,loc输出应该会给你你所需要的。有关详细信息,请参阅本:

http://www.mathworks.com/support/solutions/en/data/1-9NIE1N/index.html?product=ML&solution=1-9NIE1N

+0

+1非常有用的功能。 [Yair Altman](http://undocumentedmatlab.com/blog/ismembc-undocumented-helper-function/)也对此进行了博客 – Amro

+0

100个随机搜索2^24元素向量的基准:IsMember时间:2.142869,查找时间: 1.586328,IsMembc2时间:0.000723 – Steve

0

我不知道这是否是快,但你可能要尝试

result=vector(vector(:,1)==myNumber,:) 

result将包含4个元素一行哪个矢量first column == myNumber

+0

循环速度测试表明这在R2010a中不会更快。 – Steve

+0

感谢您的更新。 –