Difference between revisions of "PermuteSystems"
(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 ( | + | * <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