【问题标题】:Speed Enhancements for a Sorted Vector in MATLABMATLAB 中排序向量的速度增强
【发布时间】:2011-10-11 23:09:16
【问题描述】:

在 MATLAB 中查找排序向量中值的索引的最快方法是什么? 也就是说,当vector被排序时,是否有一个快速的find(vector == myNumber, 1, 'first')

我有一个大型矩阵 (200,000 x 4),每个位置都有一个唯一的整数 ID,记录在第一列中。我想找到一个已知 ID 的正确位置,但数千次搜索可能需要我一点时间才能找到。

【问题讨论】:

标签: optimization matlab


【解决方案1】:

如果您使用 ismembc2,则 loc 输出应该可以满足您的需求。有关详细信息,请参阅此内容:

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

【讨论】:

  • +1 非常有用的功能。 Yair Altman 也写了博客
  • 2^24 元素向量的 100 次随机搜索的基​​准:IsMember 时间:2.142869,查找时间:1.586328,IsMembc2 时间:0.000723
【解决方案2】:

【讨论】:

    【解决方案3】:

    我不知道它是否更快,但你可能想试试

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

    result 将包含向量 first column == myNumber 的 4 个元素行

    【讨论】:

    • 循环速度测试表明这在 R2010a 中并不快。
    猜你喜欢
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    • 2016-07-07
    • 2011-05-17
    • 2011-11-05
    • 1970-01-01
    相关资源
    最近更新 更多