Difference between revisions of "PermuteSystems"

From QETLAB
Jump to navigation Jump to search
(Created page with "{{Function |name=PermuteSystems |desc=Permutes subsystems within a state or operator |req=opt_args |upd=November 14, 2012 |v=1.00|}} <tt>'''PermuteSystems'''</tt> ...")
 
m (added rel tag)
Line 3: Line 3:
 
|desc=Permutes subsystems within a [[state]] or [[operator]]
 
|desc=Permutes subsystems within a [[state]] or [[operator]]
 
|req=[[opt_args]]
 
|req=[[opt_args]]
 +
|rel=[[PermutationOperator]]<br />[[Swap]]<br />[[SwapOperator]]
 
|upd=November 14, 2012
 
|upd=November 14, 2012
 
|v=1.00|}}
 
|v=1.00|}}
Line 14: Line 15:
  
 
==Argument Descriptions==
 
==Argument Descriptions==
* <tt>X</tt>: a vector (i.e., a [[pure quantum state]]) or a matrix to have its subsystems permuted
+
* <tt>X</tt>: a vector (e.g., a [[pure quantum state]]) or a matrix to have its subsystems permuted
 
* <tt>PERM</tt>: a permutation vector
 
* <tt>PERM</tt>: a permutation vector
 
* <tt>DIM</tt> (optional, default has all subsystems of equal dimension):  
 
* <tt>DIM</tt> (optional, default has all subsystems of equal dimension):  

Revision as of 17:46, 14 November 2012

PermuteSystems
Permutes subsystems within a state or operator

Other toolboxes required opt_args
Related functions PermutationOperator
Swap
SwapOperator

PermuteSystems is a function that allows the user to permute the order of the subsystems underlying a quantum state or operator that is defined on the tensor product of 2 or more subsystems. It works with full and sparse numeric matrices as well as symbolic matrices.

Syntax

  • PX = PermuteSystems(X,PERM)
  • PX = PermuteSystems(X,PERM,DIM)
  • PX = PermuteSystems(X,PERM,DIM,ROW_ONLY)
  • PX = PermuteSystems(X,PERM,DIM,ROW_ONLY,INV_PERM)

Argument Descriptions

  • X: a vector (e.g., a pure quantum state) or a matrix to have its subsystems permuted
  • PERM: a permutation vector
  • DIM (optional, default has all subsystems of equal dimension):
  • ROW_ONLY (optional, default 0):
  • INV_PERM (optional, default 0):

Examples

All subsystems of equal dimension

In cases when all subsystems have the same dimension, most arguments can be omitted. Let's start with a matrix $X \in M_2 \otimes M_2$:

>> X = [1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]

X =

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16

If we want to permute the two subsystems, we can call PermuteSystems with the permutation vector PERM = [2,1] (though if your needs are as simple as this, you may be better off using Swap.m):

>> PermuteSystems(X,[2,1])

ans =

     1     3     2     4
     9    11    10    12
     5     7     6     8
    13    15    14    16

Similarly, the following code acts on a matrix $X \in M_A \otimes M_B \otimes M_C$ (where each subsystem has dimension 2) and outputs a matrix representation in the standard basis of $M_B \otimes M_C \otimes M_A$:

>> X = reshape(1:64,8,8)'

X =

     1     2     3     4     5     6     7     8
     9    10    11    12    13    14    15    16
    17    18    19    20    21    22    23    24
    25    26    27    28    29    30    31    32
    33    34    35    36    37    38    39    40
    41    42    43    44    45    46    47    48
    49    50    51    52    53    54    55    56
    57    58    59    60    61    62    63    64

>> PermuteSystems(X,[2,3,1])

ans =

     1     5     2     6     3     7     4     8
    33    37    34    38    35    39    36    40
     9    13    10    14    11    15    12    16
    41    45    42    46    43    47    44    48
    17    21    18    22    19    23    20    24
    49    53    50    54    51    55    52    56
    25    29    26    30    27    31    28    32
    57    61    58    62    59    63    60    64