6

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

我将举例说明我的意思:

我有 3 个包含 3 个人数据的矩阵。

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

在该矩阵中,每个单元格/值都应该是该单元格具有最高值的矩阵的名称。因此,如果在 3 个矩阵中,第一个值(1 列,1 行)相应2, 5, 8地是结果矩阵的第一个值3(或 3 个矩阵的名称)。

4

3 回答 3

5

如果三个矩阵是 A、B、C,请执行以下操作:

[~, M] = max(cat(3,A,B,C),[],3);

它创建了一个 3D“矩阵”并在第三个维度上最大化。

于 2013-08-07T14:51:15.783 回答
2

在第 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
于 2013-08-07T14:54:11.843 回答
0

编辑 由于我不知道 max-function 的第二个参数,这里是你不应该使用的:

好吧,又快又脏:

x=[2 5 8];
w=max(x)
[~,loc] = ismember(w,x)
于 2013-08-07T14:49:23.157 回答