两个多维矩阵的最小值,其中矩阵'won'(包含最小值)
Minimum of two multidimensional matrices, with which matrix 'won' (contained the minimum)
我有两个矩阵(大小为 4x4),我想找到两者之间的最小值。例如:
A = [ 3, 2, 4, 5;
1, 2, 0, 6;
9, 8, 5, 4;
0, 1, 0, 3 ];
B = [ 1, 1, 6, 8;
0, 4, 6, 3;
5, 6, 7, 1;
0, 2, 3, 4 ];
现在,如果我在 Octave 中做了一个 min(A,B)
,它会给我
[ 1, 1, 4, 5;
0, 2, 0, 3;
5, 6, 5, 1;
0, 1, 0, 3 ]
有没有办法在每个元素比较中得到 'won' 的矩阵,我的意思是哪个矩阵包含最小值?
比如,对于两个矩阵的第一个元素,矩阵 B
获胜等等。
我不想遍历矩阵。
您可以比较 A
和 B
以找出最小值出现在哪个矩阵中。
使用 A > B
,如果选择 A
中的条目,您将得到一个包含 False
的矩阵,如果选择 B
中的条目,您将得到一个包含 True
的矩阵。通过向其中添加 1
,如果选择 A
,您将得到 1
,如果选择 B
,您将得到 2
。
>> 1 + (A > B)
ans =
2 2 1 1
2 1 1 2
2 2 1 2
1 1 1 1
或者,您可以连接 A
和 B
以形成维度为 [4, 4, 2]
的 3 维数组,其中 C(:, :, 1) = A
和 C(:, :, 2) = B
。然后你可以沿着第三个轴在这个矩阵C
上调用min
。在一个矩阵上调用 min
时,可以直接获取 "winner" 的索引作为第二个 return 值:
>> C = cat(3, A, B);
>> [res, idx] = min(C, [], 3)
res =
1 1 4 5
0 2 0 3
5 6 5 1
0 1 0 3
idx =
2 2 1 1
2 1 1 2
2 2 1 2
1 1 1 1
我有两个矩阵(大小为 4x4),我想找到两者之间的最小值。例如:
A = [ 3, 2, 4, 5;
1, 2, 0, 6;
9, 8, 5, 4;
0, 1, 0, 3 ];
B = [ 1, 1, 6, 8;
0, 4, 6, 3;
5, 6, 7, 1;
0, 2, 3, 4 ];
现在,如果我在 Octave 中做了一个 min(A,B)
,它会给我
[ 1, 1, 4, 5;
0, 2, 0, 3;
5, 6, 5, 1;
0, 1, 0, 3 ]
有没有办法在每个元素比较中得到 'won' 的矩阵,我的意思是哪个矩阵包含最小值?
比如,对于两个矩阵的第一个元素,矩阵 B
获胜等等。
我不想遍历矩阵。
您可以比较 A
和 B
以找出最小值出现在哪个矩阵中。
使用 A > B
,如果选择 A
中的条目,您将得到一个包含 False
的矩阵,如果选择 B
中的条目,您将得到一个包含 True
的矩阵。通过向其中添加 1
,如果选择 A
,您将得到 1
,如果选择 B
,您将得到 2
。
>> 1 + (A > B)
ans =
2 2 1 1
2 1 1 2
2 2 1 2
1 1 1 1
或者,您可以连接 A
和 B
以形成维度为 [4, 4, 2]
的 3 维数组,其中 C(:, :, 1) = A
和 C(:, :, 2) = B
。然后你可以沿着第三个轴在这个矩阵C
上调用min
。在一个矩阵上调用 min
时,可以直接获取 "winner" 的索引作为第二个 return 值:
>> C = cat(3, A, B);
>> [res, idx] = min(C, [], 3)
res =
1 1 4 5
0 2 0 3
5 6 5 1
0 1 0 3
idx =
2 2 1 1
2 1 1 2
2 2 1 2
1 1 1 1