【问题标题】:How to find x number of closest neighbours matching criteria in MATLAB?如何在 MATLAB 中找到 x 个最近邻匹配条件?
【发布时间】:2013-05-22 07:46:32
【问题描述】:

我有一个值为 0-9 的 m*n 矩阵。基本上,我想要做的是能够找到所有以 0 为值的单元格,并找到不为 0 的 k 个最近邻居。

我现在的代码是这样的:

  • 找出所有为零的单元格,并制作一个 a*2 矩阵来保存它们的 x 和 y 个位置

  • 对所有没有 0 的单元格执行相同操作

  • 创建一个循环遍历每个给定的零坐标和 测量从它到每个非零单元的距离并将其记录在 新矩阵的第一行(第 2 行和第 3 行是 x 和 y 坐标, 分别)

  • 使用 sortrows() 以升序获取此矩阵,然后提取 前k个值(即最接近的k个坐标)

  • 重复

我希望做的更多是在没有内部循环的情况下快速找到 k 个最接近的非零单元格,然后为每个 0 单元格重复。任何建议将不胜感激,非常感谢。

【问题讨论】:

  • 您认为knnsearch 有帮助吗?顺便说一句,请注意您需要 Statistical Toolbox 才能访问它。
  • 我确实考虑过,但不允许将 knnsearch 功能用于此特定任务。无论如何,谢谢。
  • dsearchn 怎么样?编辑:有关详细信息,请参阅下面的答案。

标签: matlab matrix closest


【解决方案1】:

我会通过查找所有非零条目来解决这个问题,例如正如你目前正在做的那样,然后确定相应的顶点。然后,您可以使用dsearchn 查找最近的 k 个点。如果您想重复执行此操作,您将从构造delaunayTriangulation 对象中受益。

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 2019-07-19
    • 2015-02-24
    • 2014-04-12
    • 2013-09-11
    • 2022-01-07
    • 2017-07-11
    • 1970-01-01
    • 2016-01-28
    相关资源
    最近更新 更多