通过从矩阵中选取具有最大值的行来形成矩阵,该矩阵的每个元素具有各自具有3列的各行

时间:2014-08-25 10:44:58

标签: matrix wolfram-mathematica

我有一个矩阵Inter[i,j],每个元素都有一组行,每行有3列。

例如。 Inter[15,40]= {{0,0,0},{1,1,3}}Inter[32,64]={{0,0,0},{1,1,3},{2,2,3}}等等

现在我需要一个矩阵MaxGG[i,j],方法是从Inter[i,j]中选择一行中具有最大值的行。

例如MaxGG[15,40]

应该给我{1,1,3}。同样MaxGG[32,64]={2,2,3}。 当我提供此代码时,它没有给我正确的答案:

MaxGG[i_, j_] := Cases[Inter[i, j], {Max@Inter[i, j][[All, 1]], _, _}];

请告诉我此代码有什么问题,请为我提供正确的代码。

提前致谢:)

1 个答案:

答案 0 :(得分:0)

主要问题是Cases将返回所有匹配案例的列表: -

Inter[15, 40] = {{0, 0, 0}, {1, 1, 3}};
Inter[32, 64] = {{0, 0, 0}, {1, 1, 3}, {2, 2, 3}};

MaxGG[i_, j_] := Cases[Inter[i, j], {Max@Inter[i, j][[All, 1]], _, _}]

MaxGG[32, 64]
  

{{2,2,3}}

您可以通过选择第一场比赛来丢失外括号: -

MaxGG[i_, j_] := First@Cases[Inter[i, j], {Max@Inter[i, j][[All, 1]], _, _}]

MaxGG[32, 64]
  

{2,2,3}

该功能也可以简化: -

MaxGG[i_, j_] := First@Reverse@Sort@Inter[i, j]

MaxGG[32, 64]
  

{2,2,3}