shiftdim

Shift array dimensions

Description

example

B = shiftdim(A,n) shifts the dimensions of an array A by n positions. shiftdim shifts the dimensions to the left when n is a positive integer and to the right when n is a negative integer. For example, if A is a 2-by-3-by-4 array, then shiftdim(A,2) returns a 4-by-2-by-3 array.

B = shiftdim(A) returns an array with the same elements as A but with leading dimensions of length 1 removed.

example

[B,m] = shiftdim(A) also returns the number of dimensions of length 1 that were removed.

Examples

collapse all

Create a 4-by-2-by-3-by-5 array. Shift the dimensions 2 positions to the left, wrapping the first 2 lengths to the last 2 dimensions.

A = rand(4,2,3,5);
B = shiftdim(A,2);
size(B)
ans = 1×4

3     5     4     2

Shift the dimensions 2 positions to the right, resulting in 2 leading dimensions of length 1. Shifting to the right does not wrap the dimension lengths.

C = shiftdim(A,-2);
size(C)
ans = 1×6

1     1     4     2     3     5

Shift the dimensions of an array.

Compute a 5-D array A, and remove the leading dimensions of length 1. The shiftdim function shifts 2 dimensions and returns the 3-D array B.

A = rand(1,1,3,2,4);
[B,nshifts] = shiftdim(A);
nshifts
nshifts = 2
size(B)
ans = 1×3

3     2     4

Shift the dimensions of B twice to the left.

C = shiftdim(B,2);
size(C)
ans = 1×3

4     3     2

Shift the dimensions of C once to the right.

D = shiftdim(C,-1);
size(D)
ans = 1×4

1     4     3     2

Input Arguments

collapse all

Input array, specified as a vector, matrix, or multidimensional array.

Number of dimension positions to shift, specified as an integer. When n is positive, shiftdim shifts the dimensions to the left, wrapping the leading dimensions to the end. When n is negative, shiftdim shifts the dimensions to the right, padding additional leading dimensions with length 1.

Output Arguments

collapse all

Output array, specified as a vector, matrix, or multidimensional array.

Number of dimensions removed, specified as a non-negative integer. shiftdim removes only leading dimensions of length 1.