很好地在mathematica中打印出一个矩阵

时间:2011-02-11 05:45:30

标签: wolfram-mathematica

我在mathematica中有一个列表(矩阵)列表。我想很好地打印出来,每一行都用粗体表示最大值。怎么做?

或者甚至可能更进一步,在这样的最大值之外有一个圆圈,这可能吗?

2 个答案:

答案 0 :(得分:19)

您可以使用MatrixForm很好地打印出矩阵:

data = RandomInteger[100, {5, 5}];

data // MatrixForm

产量

MatrixForm image

您可以在每行的最大值周围画一个圆圈,如下所示:

Map[# /. m : Max[#] :> Framed[m, RoundingRadius -> 1000]  &, data] //
  MatrixForm

产生

matrix with circles

RoundingRadius -> 1000使用了一个非常大的参数来获取圈子。您可能需要根据显示器的比例调整常量。

如果您更喜欢粗体,则可以使用Framed[m...]更改Style[m, Bold]

答案 1 :(得分:8)

Grid [] 为您提供精细的纹理控制。例如:

g[a_] := Grid[a,
  Background -> {None, {{LightBlue, LightRed}}},
  Dividers -> {False, All},
  ItemStyle -> {Automatic, Automatic, 
    MapIndexed[Flatten@{#2, Ordering[#1, -1]} -> {Bold, Red} &, a]}]

g[RandomInteger[100, {10, 7}]]  

enter image description here

NB>它每行只会突出显示一个元素

修改

要突出显示每个最大元素,您可以执行以下操作:

g[a_] := Grid[a,
  Background -> {None, {{LightBlue, LightRed}}},
  Dividers -> {False, All},
  ItemStyle -> {Automatic, Automatic, 
    Flatten[Tuples[{First@#, Last@#}] & /@ 
       MapIndexed[{#2, Position[#1, Max[#1]]} &, a], 
      1] /. {q_, {r_}} -> ({q, r} -> {Red, Bold})}]  

enter image description here