Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語
Справка Scilab >> Основные функции > Манипуляции с матрицами > permute

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 Расширение для рациональных значений.
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Feb 14 15:13:21 CET 2017