# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

# shiftdata

Shift data to operate on specified dimension

## Syntax

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

## Description

`[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 non-singleton 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`.

## Examples

### Example 1

This example shifts `x`, a 3-x-3 magic square, permuting dimension `2` to the first column. `unshiftdata` shifts `x` back to its original shape.

1. Create a 3-x-3 magic square:

```x = fi(magic(3)) x = 8 1 6 3 5 7 4 9 2 ```

2. Shift the matrix `x` to work along the second dimension:

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

The permutation vector, `perm`, and the number of shifts, `nshifts`, are returned along with the shifted matrix, `x`:

```x = 8 3 4 1 5 9 6 7 2 perm = 2 1 nshifts = []```

3. Shift the matrix back to its original shape:

```y = unshiftdata(x,perm,nshifts) y = 8 1 6 3 5 7 4 9 2 ```

### Example 2

This example shows how `shiftdata` and `unshiftdata` work when you define `dim` as empty.

1. Define `x` as a row vector:

```x = 1:5 x = 1 2 3 4 5 ```

2. Define `dim` as empty to shift the first non-singleton dimension of `x` to the first column:

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

`x` is returned as a column vector, along with `perm`, the permutation vector, and `nshifts`, the number of shifts:

```x = 1 2 3 4 5 perm = [] nshifts = 1 ```

3. Using `unshiftdata`, restore `x` to its original shape:

```y = unshiftdata(x,perm,nshifts) y = 1 2 3 4 5```