Shift dimensions

`B = shiftdim(X,n)`

[B,nshifts] = shiftdim(X)

`B = shiftdim(X,n)`

shifts
the dimensions of `X`

by `n`

. When `n`

is
positive, `shiftdim`

shifts the dimensions to the
left and wraps the `n`

leading dimensions to the
end. When `n`

is negative, `shiftdim`

shifts
the dimensions to the right and pads with singletons.

`[B,nshifts] = shiftdim(X)`

returns
the array `B`

with the same number of elements as `X`

but
with any leading singleton dimensions removed. A singleton dimension
is any dimension for which `size(A,dim) = 1`

. `nshifts`

is
the number of dimensions that are removed.

If `X`

is a scalar, `shiftdim`

has
no effect.

The `shiftdim`

command is handy for creating
functions that, like `sum`

or `diff`

,
work along the first nonsingleton dimension.

a = rand(1,1,3,1,2); [b,n] = shiftdim(a); % b is 3-by-1-by-2 and n is 2. c = shiftdim(b,-n); % c == a. d = shiftdim(a,3); % d is 1-by-2-by-1-by-1-by-3.

Was this topic helpful?