2012-01-02 2 views
5

MatrixForm을 행 벡터를 행에 수평으로 표시하고 열 벡터를 수직으로 표시하지 않을 수 있습니까? 이것이 때때로 나를 혼란스럽게합니다. 이 동작을 조정하기 위해 매트릭스 폼 주위에 래퍼를 작성하는 것이 어려울 것이라고 생각하십니까?MatrixForm 행을 열 벡터로 세로로 표시하지 않고 실제 행 벡터로 가로로 표시하는 방법은 무엇입니까?

예를 들어 여기에 2 x 2 매트릭스가 있습니다. 행은 열과 동일하게 표시됩니다. 둘 다 세로로 표시됩니다.

enter image description here

질문 : 수평이 아닌 수직으로 배치 MatrixForm 표시 행 벡터를 만들 수 있습니까?

죄송합니다. 이전에 물어 본 경우 빠른 검색 결과가 표시되지 않습니다.

감사

업데이트 참고로,이 매트랩 (1)

, 그것은 수직 자동으로, 나는 이런 식으로 뭔가 기대했다 수평 행과 열을 인쇄합니다. 하지만 나는 이것을 약간의 추가 타이핑을 희생 시켜서 해결하기 때문에 지금 아래에있는 Heike에 의한 제안을 사용할 것이다.

enter image description here

업데이트 (2) 힐 드릭 솔루션을 사용 나는 항상 내가 읽을 수있는 방식으로 3D 매트릭스를 인쇄 힘든 시간을 가지고, 또한 좋은 것입니다. 여기 지금 {} 트릭 arrayname[[All,1]]arrayname[[1,All]] 모두 들어

enter image description here

+4

MatrixForm [twoRowsMatrix [[1, 전체]], TableDirections -> Row]'가 작동해야합니다. – Heike

+0

@Heike, 감사합니다! 도움이됩니다. MatrixForm이 이것을 스스로 이해할 수 있었으면 좋겠지 만, 어렵다고 생각합니다. 목록을 전달한 이후 행 벡터인지 열 벡터인지 모릅니다! 나는 내가 지금 인쇄하고있는 것이 행이라는 것을 알 때마다이 옵션을 추가해야 할 것 같아요. 이 도움. – Nasser

답변

6

을 사용하고, Part는 벡터를 제공하며, MatrixForm는 가지고있는 "오리엔테이션"결정하는 방법이 없습니다. 따라서 벡터를 항상 열로 인쇄합니다.

rowVector[a_List] := MatrixForm[{a}] 
columnVector = MatrixForm (*for symmetry*) 

: 당신이 행렬 A (단일 행)로 다시 변환, 바깥 쪽 목록에서 포장에 의해, 예를 들어, 행 벡터에 대한 자신의 출력 루틴을 제공한다 할 수있는 유일한 일에 대해

그래도 벡터가 행이나 열에서 왔는지 기억하는 것은 당신에게 달려 있습니다.

+0

"당신이 할 수있는 유일한 일"에 대해서 "나는 그것을하는 법을 알고있었습니다."를 읽으십시오. Heike, TableDirections에 대한 정보를 가져 주셔서 감사합니다. 난 여전히 도우미 함수를 사용하고 싶지만 행을 다시 래핑하지 않아도된다. –

+0

+1, 나는 당신의 솔루션이 마음에 들며, 필요할 때 여분의'{}'을 쉽게 추가 할 수 있습니다. 나는 또한 3D 매트릭스 인쇄를 시도했고, 3D 매트릭스를 내가 좋아하는 방식으로 인쇄합니다. 이전에는 혼란 스러웠습니다. edit (2)를 참조하십시오. – Nasser

5

아니면 그냥 그런

RowForm[twoRowsMatrix[[All,1]]] 

이 오케이의 종류를 보이는

RowForm[(m_)?VectorQ] := Row[{"(",Row[m," "], 
    ")"}, "\[MediumSpace]"]; 

자신의 RowForm 기능을, 예컨대 : 요리 할 수있다당신은 정말 그냥 표시 벡터에 대해 신경 경우

또는, 당신은 할 수 있습니다 : 당신이 () 부분에 대해 신경 쓰지 않는 경우

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] 
+0

+1, 좋은 해결책이지만, 사용자 정의 함수에 대해 UpperCase 첫 글자를 사용하는 습관에 빠져서는 안됩니다. 코드에서 RowForm 함수를보고있는 사람은 이것이 Build-in 함수라고 생각할 수 있습니다. – Nasser

0

는, 당신은 중괄호에 포장, ,{}에 추가하고, 수 대신 TableForm 또는 Grid를 사용 : 나는 이것에 대해 걱정하는 경우

vec = {x, y, z}; 
TableForm[{vec, {}}] 
Grid[{vec, {}}] 
0

, 나는 {{를 A, B, C}}은 행을 지정하는 데 사용할, B는 C (그들은 목록의 모든 종류의 수 있습니다) Transpose [{{a, b, c}}]를 사용하여 a, b, c의 열을 지정합니다.

MatrixForm[a = RandomInteger[{0, 6}, {2, 2}]] 
MatrixForm[b = RandomInteger[{0, 6}, {2, 2}]] 
MatrixForm[c = RandomInteger[{0, 6}, {2, 2}]] 
w = {a, b, c}; 
MatrixForm[w] 
w = {{a, b, c}}; 
MatrixForm[w] 
w = Transpose[{{a, b, c}}]; 
MatrixForm[w] 
관련 문제