2011-10-11 22 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

感謝您的更新。 –