permute переставляет размерности массива

## Синтаксис

    y = permute(x, dims)

## Аргументы

x

  массив с любым числом размерностей (0, 1, 2 или любым числом n>2) любого типа данных: логических, целочисленных десятичных вещественных или комплексных чисел, полиномов, рациональных значений, массива структур, cell-массива.

dims

  допустимая перестановка `1:n>=nmin`, где `n` - это количество размерностей желаемого массива, по меньшей мере `nmin = ndims(x)`.

  Размерность `#i` в `y` была размерностью `#dims(i)` в `x`.

y

  массив, у которого содержимое массива `x`, с одинаковыми, не переставленными размерами.

## Описание

Переставляет размерности массива согласно `dims`.

Любые размерности в конце последовательности результата `y`, которые оказываются одноэлементным множеством (имеют новый размер равный 1, произошедший из предыдущей размерности неединичного размера не в конце последовательности), автоматически игнорируются (удаляются).
Главным образом `permute()` представляет интерес, когда идёт работа с гиперматрицами. Чтобы просто транспонировать матрицу (переставить местами их строки и столбцы и наоборот), то лучше использовать операторы `. '` или `'`.

## Примеры

    // Пример 1: матрица становится гиперматрицей, одна сторона которой имеет размер
    //           равный единице (здесь количество строк)
    x = [1 2 3; 4 5 6]
    y = permute(x,[3 1 2])

    --> x = [1 2 3; 4 5 6]
     x  =
       1.   2.   3.
       4.   5.   6.

    --> y = permute(x,[3 1 2])
     y  =
    (:,:,1)
       1.   4.
    (:,:,2)
       2.   5.
    (:,:,3)
       3.   6.

    // Пример 2: С закодированными целыми числами
    x = int8(matrix(1:24, [3 4 2]))
    y = permute(x, [2 3 1])

    --> x = int8(matrix(1:24, [3 4 2]))
     x  =
    (:,:,1)
      1  4  7  10
      2  5  8  11
      3  6  9  12
    (:,:,2)
      13  16  19  22
      14  17  20  23
      15  18  21  24

    --> y = permute(x, [2 3 1])
     y  =
    (:,:,1)
      1  13
      4  16
      7  19
     10  22
    (:,:,2)
      2  14
      5  17
      8  20
     11  23
    (:,:,3)
      3  15
      6  18
      9  21
     12  24

    // Пример 3:
    x = matrix(1:8, [2 1 4])
    y = permute(x, [3 1 2]);
    // Размерность 1 была третьей: размер = 4 = новое количество строк
    // Размерность 2 была первой: размер = 2 = новое количество строк
    // Размерность 3 была второй: размер = 1 = новое количество страниц
    y

## Смотрите также

- pertrans
- quote
- ndims
- squeeze

## История

6.0 Расширение для рациональных значений.