# coherence.m

Coherence order selection function - keeps only the specified orders of coherence in the state vector. This function is useful as a replacement for gradients and phase cycles because coherence order filtering can be accomplished analytically, by just picking out the required coherence orders and zeroing everything else.

## Syntax

    rho=coherence(spin_system,rho,spec)


## Arguments

    rho    -  a state vector or a horizontal stack thereof

spec   -  a cell array containing the specification of
which coherences to keep on which spins. For
example
{{'13C',[1 -1]},{'1H',-1}}

keeps the states that have coherence order

((1 OR -1 on 13C) AND (-1 on 1H))


## Outputs

  rho     - the state vector with the undesired orders of
spin correlations zeroed out


## Examples

    rho=coherence(spin_system,rho,{{'13C',[1 -1]},{'1H',-1}});


keeps all states that simultaneously have coherence order 1 or -1 in the 13C subspace, and coherence order -1 in the 1H subspace.

    rho=coherence(spin_system,rho,{{3,0},{5,-1}});


keeps all states that simultaneously have coherence order 0 on spin number 3, and coherence order -1 on spin number 5.

## Notes

Because projection quantum number information is required, this function only works with sphten-liouv formalism. It supports Fokker-Planck direct products.