2
$\begingroup$

The matrixform is as follow, and how can I use good method to produce it?enter image description here

H = {{1, 1, 0}, {2, 2, 0}, {0, 1, 1},
     {0, 2, 2}, {1, 0, 1}, {2, 0, 2}}
$\endgroup$
  • $\begingroup$ If the picture can't show,then here is the matrixform:H={{1,1,0},{2,2,0},{0,1,1},{0,2,2},{1,0,1},{2,0,2}} $\endgroup$ – KarryMa Apr 6 at 9:22
  • $\begingroup$ KroneckerProduct[ MapThread[ ReplacePart[#1, #2 -> 0] &, {ConstantArray[1, {3, 3}], RotateRight[Range[3]]}], {{1}, {2}} ] $\endgroup$ – Henrik Schumacher Apr 6 at 9:25
  • $\begingroup$ Great,thank you very much! $\endgroup$ – KarryMa Apr 6 at 9:26
  • $\begingroup$ Or Normal@KroneckerProduct[ SparseArray[{Band[{1, 1}] -> 1, Band[{1, 2}] -> 1, Band[{3, 1}] -> 1}, {3, 3}], {{1}, {2}} ]. $\endgroup$ – Henrik Schumacher Apr 6 at 9:27
  • 3
    $\begingroup$ Transpose@KroneckerProduct[Permutations[{1, 0, 1}], {1, 2}] $\endgroup$ – LouisB Apr 6 at 9:45
1
$\begingroup$

A nice tool for this job is ArrayFlatten[ ]

a = {{1}, {2}}

$\left( \begin{array}{c} 1 \\ 2 \\ \end{array} \right)$

Not sure why your rows are ordered the way they are. Are you trying to have a non-zero diagonal?

{{a,a,0},{0,a,a},{a,0,a}}// ArrayFlatten

$\left( \begin{array}{ccc} 1 & 1 & 0 \\ 2 & 2 & 0 \\ 0 & 1 & 1 \\ 0 & 2 & 2 \\ 1 & 0 & 1 \\ 2 & 0 & 2 \\ \end{array} \right)$

$\endgroup$
  • $\begingroup$ This is not the exact result the OP is asking. The order of the elements is different. Also the "permutation" solution is already posted in my answer $\endgroup$ – J42161217 Apr 6 at 14:58
  • $\begingroup$ My purpose was to introduce ArrayFlatten. Not enough info to algorithmically determine the order of perms. $\endgroup$ – MikeY Apr 6 at 15:27
  • $\begingroup$ Actually,this is the answer I originally wanted,then I will use ''PauliMatrix'' and ''Map'' to get what I want.Thank you for your help! $\endgroup$ – KarryMa Apr 7 at 2:35
2
$\begingroup$
IntegerDigits[{12,24,4,8,10,20},3,3]  

{{1,1,0},{2,2,0},{0,1,1},{0,2,2},{1,0,1},{2,0,2}}

also..

s = Transpose[Permutations /@ {{1, 1, 0}, {2, 2, 0}}];
Flatten[{{s[[1]]},Reverse@Rest@s},2]  

{{1,1,0},{2,2,0},{0,1,1},{0,2,2},{1,0,1},{2,0,2}}

$\endgroup$
  • 2
    $\begingroup$ I like the answer,thanks! $\endgroup$ – KarryMa Apr 6 at 9:55
  • $\begingroup$ @KarryMa Alternatively to PadLeft you can add 3 as 3rd argument IntegerDigits[{12, 24, 4, 8, 10, 20}, 3, 3]. $\endgroup$ – Coolwater Apr 6 at 14:49
  • $\begingroup$ yes, you are so right! $\endgroup$ – J42161217 Apr 6 at 14:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.