您可以做的是使用min 并在每列的所有行中找到最小值。您实际上将使用第二个输出来查找您要查找的每行每一列的位置。找到这些后,只需使用sub2ind 访问B 中的相应值。因此,请尝试以下操作:
[~,ind] = min(A,[],2);
val = B(sub2ind(size(A), (1:size(A,1)).', ind));
val 将包含矩阵B 中的输出值,它们对应于与A 中每一行的最小值相同的位置。这也是假设A 和B 的大小相同。作为说明,这里有一个例子。让我们将A 和B 分别设置为一个随机的 4 x 4 整数数组。
rng(123);
A = randi(10, 4, 4)
B = randi(10, 4, 4)
A =
7 8 5 5
3 5 4 1
3 10 4 4
6 7 8 8
B =
2 7 8 3
2 9 4 7
6 8 4 1
6 7 3 5
通过运行第一行代码,我们得到:
[~,ind] = min(A,[],2)
ind =
3
4
1
1
这告诉我们第一行的最小值是第三列,下一行的最小值是第四列,以此类推。一旦我们有了这些列号,让我们访问 B 中的对应值,因此我们需要行和列 (1,3)、(2,4) 等。因此,在运行第二条语句后,我们得到:
val = B(sub2ind(size(A), (1:size(A,1)).', ind))
val =
8
7
6
6
如果您快速仔细检查B 和A 中的访问位置,我们会在B 中找到与A 相对应的位置。