如何使MatrixForm水平显示为实际行向量而不是垂直显示为列向量?

Nas*_*ser 5 wolfram-mathematica

有没有办法MatrixForm在线上水平显示行向量而不是像列向量那样垂直显示?因为这有时让我困惑.你认为在矩阵形式周围编写包装来调整这种行为会很困难吗?

例如,这是一个2乘2的矩阵.行显示与列相同.两者都显示为垂直.

在此输入图像描述

问题:是否可以将MatrixForm显示行向量水平放置而不是垂直放置?

对不起,如果之前有人询问,快速搜索没有显示任何内容.

谢谢

更新(1)

fyi,这是在Matlab中,它自动水平和垂直打印行,我希望有这样的东西.但是我现在将使用Heike的建议,因为它解决了这个问题,只需要额外打字.

在此输入图像描述

更新(2) 使用Hilderic解决方案也很好,我总是很难以我能读取的方式打印3D矩阵.现在它正在使用这个{}技巧

在此输入图像描述

小智 6

对于这两个arrayname[[All,1]]arrayname[[1,All]],Part提供了一个载体,和阵列式无法确定它具有"方向"的方式.因此,它总是将矢量打印为列.

关于你唯一能做的就是为行向量提供自己的输出例程,例如,将它包装在一个封闭列表中,然后将其转换回(单行)矩阵:

rowVector[a_List] := MatrixForm[{a}]
columnVector = MatrixForm   (*for symmetry*)
Run Code Online (Sandbox Code Playgroud)

但是,仍然需要记住矢量是来自行还是列.


Rol*_*tig 5

或者您可以自己编写RowForm函数,例如:

RowForm[(m_)?VectorQ] := Row[{"(",Row[m,"  "], 
     ")"}, "\[MediumSpace]"]; 
Run Code Online (Sandbox Code Playgroud)

然后

RowForm[twoRowsMatrix[[All,1]]]
Run Code Online (Sandbox Code Playgroud)

看起来很好

或者,如果你真的只关心显示向量,你可以这样做:

twoRowsMatrix = {{a11, a12}, {a21, a22}};

TakeColumn[m_?MatrixQ, i_] := (Print[MatrixForm[#]]; #) &@m[[All, i]];
TakeRow[m_?MatrixQ, i_] := (Print[MatrixForm[{#}]]; #) &@m[[i]];
TakeColumn[twoRowsMatrix, 1]
TakeRow[twoRowsMatrix, 1]
Run Code Online (Sandbox Code Playgroud)