我有多个相同大小的矩阵并想比较它们。因此,我需要一个矩阵,它为每个值提供 3 个中最大的一个。
我将举例说明我的意思:
我有 3 个包含 3 个人数据的矩阵。
我想比较这三个并得到一个矩阵作为结果。
在该矩阵中,每个单元格/值都应该是该单元格具有最高值的矩阵的名称。因此,如果在 3 个矩阵中,第一个值(1 列,1 行)相应2, 5, 8
地是结果矩阵的第一个值3
(或 3 个矩阵的名称)。
如果三个矩阵是 A、B、C,请执行以下操作:
[~, M] = max(cat(3,A,B,C),[],3);
它创建了一个 3D“矩阵”并在第三个维度上最大化。
在第 3 维上连接它们,并使用 max 的 SECOND 输出来得到你想要的
A = rand(3,3);
B = rand(3,3);
C = rand(3,3);
D = cat(3, A, B, C)
[~, Solution] = max(D, [], 3)
例如:
D =
ans(:,:,1) =
0.70101 0.31706 0.83874
0.89421 0.33783 0.55681
0.68520 0.11697 0.45631
ans(:,:,2) =
0.268715 0.213200 0.124450
0.869847 0.999649 0.153353
0.345447 0.023523 0.338099
ans(:,:,3) =
0.216665 0.297900 0.604734
0.103340 0.767206 0.660668
0.127052 0.430861 0.021584
Solution =
1 1 1
1 2 3
1 3 1
编辑 由于我不知道 max-function 的第二个参数,这里是你不应该使用的:
老 好吧,又快又脏:
x=[2 5 8];
w=max(x)
[~,loc] = ismember(w,x)