【问题标题】:finding out nearest point to a given point找出离给定点最近的点
【发布时间】:2016-02-09 12:11:43
【问题描述】:

我有两个矩阵。 G1

G1 =
   80.00
   79.43
   78.89
   78.38
   77.90
   77.45
   77.03
   76.63

G2 =     NaN       NaN       NaN
         NaN       NaN       NaN
         NaN       79.11     NaN
         NaN       78.64     NaN
         NaN       78.13     78.14
         77.46     NaN       77.66
         77.07     77.08     NaN
         76.74     NaN       NaN

我想要一个大小为 8*1 的结果矩阵。此外,应将 G2 矩阵元素与 G1 进行比较,并将 G2 与 G1 最接近的元素填充到所需的矩阵中。例如 G2 行的第一个有 NaN,所以它保持 NaN。 G2 的第 4 行有两个值,该值应与 G1 的第 4 个元素进行比较,并应在结果矩阵中填充最接近的值。当只有一个值时,它应该只保持这样。当有两个以上的值时,应该在矩阵中填充最接近的值。

以下是所需的输出。如何更动态地做到这一点。我只是手动完成的。

  Result =   NaN
             NaN
             79.11
             78.64
             78.14
             77.46
             77.07
             76.744

【问题讨论】:

  • 你的例子没有意义。 G1 有 8 行,G2 有 7 行,而您的 Result 有 8 行。
  • 对不起,我错过了一行。我刚刚更新了它。谢谢你的回复:)
  • 79.1168 来自哪里?我在您的源数据中没有看到它。
  • 只有 79.11。我已经更新了。

标签: matlab matrix


【解决方案1】:

试试这个:

dist = abs(bsxfun(@minus,G2,G1))
[~,col] = min(dist,[],2);
Result = diag(G2(:,col))

【讨论】:

  • 我的意思是输出应该是 8*1。很抱歉造成混乱。
  • @MayankLakhani 查看我之前的编辑 - 您需要添加 diag(如果您的矩阵很大,请使用 sub2ind
猜你喜欢
  • 1970-01-01
  • 2018-08-28
  • 1970-01-01
  • 2021-12-24
  • 2011-05-20
  • 2013-06-15
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
相关资源
最近更新 更多