【问题标题】:How to find the approximate numbers in two matrix?如何在两个矩阵中找到近似数字?
【发布时间】:2020-02-28 14:51:16
【问题描述】:

如何求两个矩阵中的近似数? 例如, 有两个矩阵

A=[1.567 1.679 1.366 ;
      2.467 3.587 6.134 ;
      3.497 5.877 9.465]

B=[3.134 5.100 7.555 ;
      7.465 4.715 4.267 ;
      2.347 4.111 4.503]

所以在 A 矩阵中 2.467 接近于 B 矩阵中的 2.347。 如何通过编码找到它们?

【问题讨论】:

  • 请解释您所说的“近似”是什么意思。您是指将数字四舍五入/天花板/地板到相同数字的数字吗?如果是,那么最多保留多少位小数?还是您的意思是某个 +- 范围内的数字?如果是,那么您如何定义该范围?
  • 您要从 A 还是 B 返回值?还是索引/索引?

标签: matlab approximate


【解决方案1】:

为 A 中的所有值和 B 中的所有值创建一个网格,以便我们可以比较它们:

[Amesh,Bmesh] = meshgrid(A(:),B(:))

现在求差值的绝对值:

absdiff = abs(Amesh-Bmesh)

这是 A 中的每个值与 B 中的每个值之间的绝对差的矩阵。因此,此表中的最小值是 A 和 B 中的值之间最接近的匹配。以编程方式找到该值:

[x,y] = find(absdiff == min(absdiff(:)))
x =
     3
y =
     2

这会计算该矩阵的最小值,然后找到该值的 x/y 位置。在这种情况下,x 是矩阵 B 的索引,y 是矩阵 A 的索引。

>> A(y)
ans =
    2.4670
>> B(x)
ans =
    2.3470

【讨论】:

    猜你喜欢
    • 2016-03-03
    • 1970-01-01
    • 2014-06-05
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 2018-08-31
    相关资源
    最近更新 更多