Please note that the recommended version of Scilab is 2024.1.0. This page might be outdated.
See the recommended documentation of this function
flipdim
меняем порядок (частей) строк, столбцов, страниц... массива
Синтаксис
y = flipdim(x, dim) y = flipdim(x, dim, blockSize)
Аргументы
- x, y
векторы, матрицы или гиперматрицы любого обычного типа данных или cell-массива.
y
получает размерыx
.- dim
положительное целое: индексы размерности/направления
x
, вдоль которой порядок элементовx
должен быть изменён.- blockSize
положительное целое, общий делитель
size(x,dim)
: число строк, столбцов страниц и т.д. в каждом блоке. Значение по умолчанию 1.
Описание
flipdim(x, 1)
изменяет порядок
строк в x
.
flipdim(x, 2)
изменяет порядок
столбцов в x
.
flipdim(x, 3)
изменяет порядок
страниц в x
. И т.д.
Необязательный параметр blockSize
позволяет разделить
x
на size(x,1)/blockSize
блоков
из blockSize
строк (dim=1
),
или в size(x,2)/blockSize
блоков из blockSize
столбцов (dim=2
) и т.д. (dim>2
)
и меняет их порядок. В каждом блоке меняется порядок элементов (строк, столбцов,
страниц и т.д.).
Примеры
// Пример 1: переключает строки x (= элементы вдоль первой размерности) x = [1 2 3 4; 5 6 7 8] y = flipdim(x, 1) // Пример 2: переключает столбцы (= элементы вдоль второй размерности) y = flipdim(x, 2) // Пример 3: переключает страницы (= элементы вдоль третьей размерности) x = matrix(1:24, [3 2 4]) y = flipdim(x, 3) // Пример 4: первый пример с комплексными числами x = [1+%i 2*%i 3 4; 5 6-%i 7 8*%pi*%i] y = flipdim(x, 1) // Кодированные целые числа: x = int16(grand(4, 3, 2, "uin", -9, 9)) y = flipdim(x, 1) // Логические значения: x = (grand(3, 4, "uin", -9, 9) > 0) y = flipdim(x, 2) // Тексты: x = matrix(strsplit("a":"x", 1:23), 4, 6); x = x+x flipdim(x, 2) // Полиномы: x = inv_coeff(grand(3, 9, "uin", 0, 3), 2) flipdim(x, 1) // Дробно-рациональные: n = inv_coeff(grand(3, 9, "uin", 0, 3), 2); d = inv_coeff(grand(3, 9, "uin", 0, 3), 2); r = n./d flipdim(r, 2)
Примеры, использующие blockSize
:
X = [0 1 2 3 4 5 6 7 8 9 10 11]; flipdim(X, 2, 2) // => [10 11 8 9 6 7 4 5 2 3 0 1] // Размер блока = 2. flipdim(X, 2, 3) // => [9 10 11 6 7 8 3 4 5 0 1 2] flipdim(X, 2, 4) // => [8 9 10 11 4 5 6 7 0 1 2 3] flipdim(X, 2, 6) // => [6 7 8 9 10 11 0 1 2 3 4 5] // Ошибка, если blockSize не делится на результирующую размерность x. y = flipdim(x, 2, 5); // size(X) = [1 12] и blockSize=5 не делится на 12.
Примеры результатов:
--> x x = -5 -2 0 9 0 -7 -6 9 -1 -8 -7 8 --> flipdim(x, 1) ans = -1 -8 -7 8 0 -7 -6 9 -5 -2 0 9 --> flipdim(x, 2) ans = 9 0 -2 -5 9 -6 -7 0 8 -7 -8 -1
--> x x = (:,:,1) 9 4 -3 -4 -8 -3 (:,:,2) 5 8 9 4 4 9 --> flipdim(x, 3) ans = (:,:,1) 5 8 9 4 4 9 (:,:,2) 9 4 -3 -4 -8 -3
--> x x = -2 3 -5 9 -4 -8 2 8 4 -9 6 -6 -9 8 3 4 -3 4 --> flipdim(x, 2, 2) ans = -4 -8 -5 9 -2 3 6 -6 4 -9 2 8 -3 4 3 4 -9 8 --> flipdim(x, 2, 3) ans = 9 -4 -8 -2 3 -5 -9 6 -6 2 8 4 4 -3 4 -9 8 3
Смотрите также
История
Версия | Описание |
5.5.0 |
|
Report an issue | ||
<< circshift | Манипуляции с матрицами | matrix >> |