【发布时间】: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怎么样?编辑:有关详细信息,请参阅下面的答案。