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); d(d == 0) = 1; 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]
Примеры результатов:
--> 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 >> |