比较多个矩阵matlab

时间:2013-08-07 14:32:26

标签: matlab matrix compare

我有多个相同大小的矩阵,想要比较它们。 因此,我需要一个矩阵,它为每个值提供3个中最大的矩阵。

我将用一个例子澄清我的意思:

我有3个矩阵,数据为3人。

我想比较这3个并得到一个矩阵作为结果。

在该矩阵中,每个单元格/值应该是具有该单元格最高值的矩阵的名称。因此,如果在3个矩阵中第一个值(1列,1行)相应2, 5, 8,则结果矩阵的第一个值应为3(或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)