Shift origin of arrays and vectors.

1 2 |

`x` |
Vector to be shifted |

`i` |
Number of places elements to be shifted, with default value of 1 meaning to put the last element first, followed by the first element, then the second, etc |

`a` |
Array to be shifted |

`v` |
Vector of numbers to be shifted in each dimension, with
default value corresponding to |

Function `shift(x,n)`

returns *P^n(x)* where *P* is the
permutation *(n,1,2,...,n-1)*.

Function `ashift`

is the array generalization of this: the
*n-th* dimension is shifted by `v[n]`

. In other
words,
`ashift(a,v)=a[shift(1:(dim(a)[1]),v[1]),...,shift(1:(dim(a)[n]),v[n])]`

.
It is named by analogy with `abind()`

and `aperm()`

.

This function is here because a shifted semimagic square or hypercube is semimagic and a shifted pandiagonal square or hypercube is pandiagonal (note that a shifted magic square is not necessarily magic, and a shifted perfect hypercube is not necessarily perfect).

Robin K. S. Hankin

1 2 3 4 5 |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

Please suggest features or report bugs with the GitHub issue tracker.

All documentation is copyright its authors; we didn't write any of that.