我想逐个元素地比较矩阵并找到矩阵的最大值,就像我有三个 3x3 矩阵
tdata = {{{1, 5, 1}, {7, 4, 2}, {2, 4, 3}}, {{2, 0, 8}, {9, 8, 2}, {2,
3, 0}}, {{2, 2, 9}, {10, 9, 5}, {9, 3, 3}}}
然后通过使用
MapThread[Max, tdata, 2] // MatrixForm
我可以得到正确的结果。
{{2, 5, 9}, {10, 9, 5}, {9, 4, 3}}
但是,当矩阵是复数矩阵时,Max 函数不起作用。例如,
tdata = {{{0.323031 + 5.23687 I, 8.92856 + 1.31365 I},
{9.94387 + 3.04104 I, 8.72483 + 2.5648 I}},
{{5.96575 + 9.2521 I, 8.58461 + 2.56753 I},
{0.902715 + 3.75791 I, 4.06809 + 8.61552 I}},
{{9.36592 + 1.17263 I, 9.74628 + 2.22183 I},
{4.61866 + 4.61158 I, 9.0791 + 2.50036 I}}}
我试图为复杂的矩阵实现一个新的 Max 函数,但它不起作用。这是一个演示,
complexMax[lis_] := Module[{abs = Abs[lis]}, Take[lis, Position[abs, Max[abs]][[1]]]]
然后
MapThread[complexMax, tdata, 2]
结果就像
{{complexMax[0.323031 + 5.23687 I, 5.96575 + 9.2521 I, 9.36592 + 1.17263 I],
complexMax[8.92856 + 1.31365 I, 8.58461 + 2.56753 I, 9.74628 + 2.22183 I]},
{complexMax[9.94387 + 3.04104 I, 0.902715 + 3.75791 I, 4.61866 + 4.61158 I],
complexMax[8.72483 + 2.5648 I, 4.06809 + 8.61552 I, 9.0791 + 2.50036 I]}}
有什么想法可以解决这个问题吗?