FreeMat

- Main Page
- Related Pages

IPERMUTE Array Inverse Permutation Function

Section: Array Generation and Manipulations

# Usage

The `ipermute` function rearranges the contents of an array according to the inverse of the specified permutation vector. The syntax for its use is

       y = ipermute(x,p)

where `p` is a permutation vector - i.e., a vector containing the integers `1...ndims(x)` each occuring exactly once. The resulting array `y` contains the same data as the array `x`, but ordered according to the inverse of the given permutation. This function and the `permute` function are inverses of each other.

# Example

First we create a large multi-dimensional array, then permute it and then inverse permute it, to retrieve the original array:

    --> A = randn(13,5,7,2);
    --> size(A)

    ans =
     13  5  7  2

    --> B = permute(A,[3,4,2,1]);
    --> size(B)

    ans =
      7  2  5 13

    --> C = ipermute(B,[3,4,2,1]);
    --> size(C)

    ans =
     13  5  7  2

    --> any(A~=C)

    ans =

    (:,:,1,1) =
     0 0 0 0 0

    (:,:,2,1) =
     0 0 0 0 0

    (:,:,3,1) =
     0 0 0 0 0

    (:,:,4,1) =
     0 0 0 0 0

    (:,:,5,1) =
     0 0 0 0 0

    (:,:,6,1) =
     0 0 0 0 0

    (:,:,7,1) =
     0 0 0 0 0

    (:,:,1,2) =
     0 0 0 0 0

    (:,:,2,2) =
     0 0 0 0 0

    (:,:,3,2) =
     0 0 0 0 0

    (:,:,4,2) =
     0 0 0 0 0

    (:,:,5,2) =
     0 0 0 0 0

    (:,:,6,2) =
     0 0 0 0 0

    (:,:,7,2) =
     0 0 0 0 0