# OperatorSchmidtRank

Jump to navigation
Jump to search

OperatorSchmidtRank | |

Computes the operator Schmidt rank of a bipartite operator | |

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

Related functions | OperatorSchmidtDecomposition SchmidtRank |

Function category | Entanglement and separability |

` OperatorSchmidtRank` is a function that computes the operator Schmidt rank of a bipartite operator. If the operator is full, the operator Schmidt rank is computed using MATLAB's

`rank`function. If the operator is sparse, the operator Schmidt rank is computed using the QR decomposition.

## Syntax

`RNK = OperatorSchmidtRank(X)``RNK = OperatorSchmidtRank(X,DIM)`

## Argument descriptions

`X`: A bipartite operator to have its operator Schmidt rank computed.`DIM`(optional, by default has both 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 the first subsystem has dimension`DIM`and the second subsystem has dimension`length(X)/DIM`. - If $X \in M_{n_1} \otimes M_{n_2}$ then
`DIM`should be a row vector containing the dimensions (i.e.,`DIM = [n_1, n_2]`). - If the subsystems aren't square (i.e., $X \in M_{m_1, n_1} \otimes M_{m_2, n_2}$) 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_2; n_1, n_2]`.

- If

## Examples

### A random example

A random unitary will almost surely have full operator Schmidt rank:

```
>> OperatorSchmidtRank(RandomUnitary(4))
ans =
4
```

## Source code

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