# PartialTranspose

Jump to navigation
Jump to search

PartialTranspose | |

Computes the partial transpose of a matrix | |

Other toolboxes required | none |
---|---|

Related functions | PartialMap PartialTrace |

Function category | Superoperators |

` PartialTranspose` is a function that computes the partial transpose of a matrix. The transposition may be taken on any subset of the subsystems on which the matrix acts.

## Syntax

`XPT = PartialTranspose(X)``XPT = PartialTranspose(X,SYS)``XPT = PartialTranspose(X,SYS,DIM)`

## Argument descriptions

`X`: A matrix to have its partial transpose returned.`SYS`(optional, default 2): A scalar or vector containing the indices of the subsystems on which the transpose is to be applied.`DIM`(optional, by default has all subsystems of equal dimension): A specification of the dimensions of the subsystems that`X`lives on.`DIM`can be provided in one of three ways:- If
`DIM`is a scalar, it is assumed that`X`lives on the tensor product of two spaces, the first of which has dimension`DIM`and the second of which has dimension`length(X)/DIM`. - If $X \in M_{n_1} \otimes \cdots \otimes M_{n_p}$ then
`DIM`should be a row vector containing the dimensions (i.e.,`DIM = [n_1, ..., n_p]`). - If the subsystems aren't square (i.e., $X \in M_{m_1, n_1} \otimes \cdots \otimes M_{m_p, n_p}$) then
`DIM`should be a matrix with two rows. The first row of`DIM`should contain the row dimensions of the subsystems (i.e., the m_{i}'s) and its second row should contain the column dimensions (i.e., the n_{i}'s). In other words, you should set`DIM = [m_1, ..., m_p; n_1, ..., n_p]`.

- If

## Examples

### A bipartite square matrix

By default, the `PartialTranspose` function performs the transposition on the second subsystem:

```
>> X = reshape(1:16,4,4)'
X =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
>> PartialTranspose(X)
ans =
1 5 3 7
2 6 4 8
9 13 11 15
10 14 12 16
```

By specifying the `SYS` argument, you can perform the transposition on the first subsystem instead:

```
>> PartialTranspose(X,1)
ans =
1 2 9 10
5 6 13 14
3 4 11 12
7 8 15 16
```

Applying the transpose to both the first and second subsystems results in the standard transpose of `X`:

```
>> norm(PartialTranspose(X,[1,2]) - X.')
ans =
0
```

## Source code

Click here to view this function's source code on github.