我有多个相同大小的矩阵,想要比较它们。 因此,我需要一个矩阵,它为每个值提供3个中最大的矩阵。
我将用一个例子澄清我的意思:
我有3个矩阵,数据为3人。
我想比较这3个并得到一个矩阵作为结果。
在该矩阵中,每个单元格/值应该是具有该单元格最高值的矩阵的名称。因此,如果在3个矩阵中第一个值(1列,1行)相应2, 5, 8
,则结果矩阵的第一个值应为3
(或3矩阵的名称)。
答案 0 :(得分:5)
如果三个矩阵是A,B,C,请执行以下操作:
[~, M] = max(cat(3,A,B,C),[],3);
它创建了一个3D“矩阵”,并在第三维上最大化。
答案 1 :(得分:2)
在第三维上连接它们,并使用max的SECOND输出来获得你想要的东西
A = rand(3,3);
B = rand(3,3);
C = rand(3,3);
D = cat(3, A, B, C)
[~, Solution] = max(D, [], 3)
e.g:
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
答案 2 :(得分:0)
修改强> 由于我不知道max-function的第二个参数,所以这是你不应该使用的:
<强>旧强> 嗯,快速和肮脏:
x=[2 5 8];
w=max(x)
[~,loc] = ismember(w,x)