您可以使用该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