You are here : matlabSignal Processingshiftdata

# shiftdata() - Signal Processing

```[x,perm,nshifts] = shiftdata(x,dim) shifts
data x to permute dimension dim to
the first column using the same permutation as the built-in filter function. The vector perm returns
the permutation vector that is used.If dim is missing or empty, then the first
nonsingleton dimension is shifted to the first column, and the number
of shifts is returned in nshifts. shiftdata is meant to be used in tandem with unshiftdata, which shifts the data back
to its original shape. These functions are useful for creating functions
that work along a certain dimension, like filter, goertzel, sgolayfilt,
and sosfilt.```

### Syntax

`[x,perm,nshifts] = shiftdata(x,dim)`

### Example

```Permute Dimensions of a Magic SquareOpen This Example
This example shifts x, a 3-by-3 magic square, permuting dimension 2 to the first column. unshiftdata shifts x back to its original shape.
Create a 3-by-3 magic square.x = magic(3)

x =

8     1     6
3     5     7
4     9     2

Shift the matrix x to work along the second dimension. The permutation vector, perm, and the number of shifts, nshifts, are returned along with the shifted matrix.[x,perm,nshifts] = shiftdata(x,2)

x =

8     3     4
1     5     9
6     7     2

perm =

2     1

nshifts =

[]

Shift the matrix back to its original shape.y = unshiftdata(x,perm,nshifts)

y =

8     1     6
3     5     7
4     9     2

Rearrange Array to Operate on First Nonsigleton DimensionOpen This Example
This example shows how shiftdata and unshiftdata work when you define dim as empty.
Define x as a row vector.x = 1:5

x =

1     2     3     4     5

Define dim as empty to shift the first non-singleton dimension of x to the first column. shiftdata returns x as a column vector, along with perm, the permutation vector, and nshifts, the number of shifts.[x,perm,nshifts] = shiftdata(x,[])

x =

1
2
3
4
5

perm =

[]

nshifts =

1

Using unshiftdata, restore x to its original shape.y = unshiftdata(x,perm,nshifts)

y =

1     2     3     4     5```