Please note that the recommended version of Scilab is 2026.0.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
Смотрите также
История
| Version | Description |
| 5.5.0 |
|
| Report an issue | ||
| << circshift | Манипуляции с матрицами | matrix >> |