gpt4 book ai didi

matlab - 查找第一个元素最接近的行

转载 作者:行者123 更新时间:2023-12-02 07:24:38 24 4
gpt4 key购买 nike

我有一个像这样的矩阵

a = [ 4.1    45    65    84    84 , 
4.2 62 78 83 43 ,
4.3 84 94 93 94 ]

和像这样的向量

b = [ 4.123  4.21   4.31   4.19 ] 

对于向量 b 中的每个元素,我想在 a 中找到第一列中的元素最接近 中的该元素的行b。最后,我想将b的元素和对应行的元素拼接成一个新的矩阵c

所以最终的矩阵看起来像

c = [ 4.123   45    65    84    84 ,
4.21 62 78 83 43 ,
4.31 84 94 93 94 ,
4.19 62 78 83 43 ]

最佳答案

您可以使用 bsxfun 函数创建一个矩阵,其中包含 b 中每个元素之间的差异和 a 第一列的每个元素:

bsxfun(@minus,b,a(:,1))
ans =
-0.0230 -0.1100 -0.2100 -0.0900
0.0770 -0.0100 -0.1100 0.0100
0.1770 0.0900 -0.0100 0.1100

矩阵的每一行对应a(:,1)中的一个元素, 并且每列到一个元素 b .即元素 (3,1)等于b(1)-a(3,1) .

要找到最接近的值,让我们看一下绝对值 abs()并使用 min 找到每列的最小值功能。 min的第一个返回值是每一列的最小值,第二个返回值是索引。我们只需要索引,所以我们使用 ~ 丢弃第一个返回值.

[~,minRow] = min(abs(bsxfun(@minus,a(:,1),b)))
minRow =
1 2 3 2

我们现在知道,a 的哪一行我们必须使用,所以我们可以通过连接 b 来构造矩阵和正确的行 a成一个矩阵:

c = [ b.', a(minRow,2:end) ];
c =
4.1230 45.0000 65.0000 84.0000 84.0000
4.2100 62.0000 78.0000 83.0000 43.0000
4.3100 84.0000 94.0000 93.0000 94.0000
4.1900 62.0000 78.0000 83.0000 43.0000

关于matlab - 查找第一个元素最接近的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34566069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com