circshift
смещает по кругу элементы матрицы
Синтаксис
B = circshift(A, shift) B = circshift(A, shift, 0) B = circshift(A, shifts) B = circshift(A, shifts, dims)
Аргументы
- A, B
векторы, матрицы, гиперматрицы любого обычного типа данных, структуры, cell-массивы, пользовательских типов.
B
имеет форму, размеры и типA
. Пользовательские типы применимы, при условии, что операторыsize()
, вставки и извлечения определены для типа переменнойA
.- shift
уникальное положительное или отрицательное целое: сдвиг для применения к индексам вдоль первого неединичной размерности, или к линейным индексам элементов
A
, если в качестве третьего входного аргумента используется0
.- shifts
вектор положительных или отрицательных целых чисел: свдиги, которые применяются к диапазонам вдоль направлений, указанных в
dims
(или1:length(shifts)
по умолчанию).- dims
вектор целых чисел в диапазоне
[1, ndims(A)]
: указывает размерностиA
, вдоль которых, соответственно, должны применятся сдвигиshifts
.
Описание
circshift(A, shift)
сдвигает вдоль первой размерности
A
размером > 1.
circshift(A, shift, 0)
по кругу сдвигает элементы
A
на shift
позиций.
circshift(A, shifts)
по кругу сдвигает индексы
строк A
на shifts(1)
,
индексы столбцов A
на shifts(2)
,
индексы слоёв A
на shifts(3)
и т.д.
circshift(A, shifts, dims)
по кругу сдвигает A
на shifts(1)
вдоль её размерности №dims(1)
,
на shifts(2)
вдоль её размерности №dims(2)
и т.д.
Примеры
circshift(1:7, 2) circshift(1:7, -1)
--> circshift(1:7, 2) ans = 6. 7. 1. 2. 3. 4. 5. --> circshift(1:7, -1) ans = 2. 3. 4. 5. 6. 7. 1.
M = matrix(1:12, 3, 4) circshift(M, 1) circshift(M, 1, 2) circshift(M, [-1 1]) circshift(M, [-2 1], [2 1])
--> M = matrix(1:12, 3, 4) M = 1. 4. 7. 10. 2. 5. 8. 11. 3. 6. 9. 12. --> circshift(M, 1) ans = 3. 6. 9. 12. 1. 4. 7. 10. 2. 5. 8. 11. --> circshift(M, 1, 2) ans = 10. 1. 4. 7. 11. 2. 5. 8. 12. 3. 6. 9. --> circshift(M, [-1 1]) ans = 11. 2. 5. 8. 12. 3. 6. 9. 10. 1. 4. 7. --> circshift(M, [-2 1], [2 1]) ans = 9. 12. 3. 6. 7. 10. 1. 4. 8. 11. 2. 5.
M = matrix(1:12, 3, 4) circshift(M, 5, 0)
--> circshift(M, 5, 0) ans = 8. 11. 2. 5. 9. 12. 3. 6. 10. 1. 4. 7.
С гиперматрицей текстов:
t = matrix([string(1:12) strsplit("a":"l")' strsplit("A":"L")'],3,4,3) circshift(t, 1, 0) circshift(t, 1) circshift(t, 1, 3) circshift(t, [1 -1], [2 3])
--> t = matrix([string(1:12) strsplit("a":"l")' strsplit("A":"L")'],3,4,3) t = (:,:,1) !1 4 7 10 ! !2 5 8 11 ! !3 6 9 12 ! (:,:,2) !a d g j ! !b e h k ! !c f i l ! (:,:,3) !A D G J ! !B E H K ! !C F I L ! --> circshift(t, 1, 0) ans = (:,:,1) !L 3 6 9 ! !1 4 7 10 ! !2 5 8 11 ! (:,:,2) !12 c f i ! !a d g j ! !b e h k ! (:,:,3) !l C F I ! !A D G J ! !B E H K ! --> circshift(t, 1) ans = (:,:,1) !3 6 9 12 ! !1 4 7 10 ! !2 5 8 11 ! (:,:,2) !c f i l ! !a d g j ! !b e h k ! (:,:,3) !C F I L ! !A D G J ! !B E H K ! --> circshift(t, 1, 3) ans = (:,:,1) !A D G J ! !B E H K ! !C F I L ! (:,:,2) !1 4 7 10 ! !2 5 8 11 ! !3 6 9 12 ! (:,:,3) !a d g j ! !b e h k ! !c f i l ! --> circshift(t, [1 -1], [2 3]) ans = (:,:,1) !j a d g ! !k b e h ! !l c f i ! (:,:,2) !J A D G ! !K B E H ! !L C F I ! (:,:,3) !10 1 4 7 ! !11 2 5 8 ! !12 3 6 9 !
С cell-массивом:
L = list(1,%t); C = {%f "a" %i %z %t "b" %e %s 0 "c" %pi L } circshift(C, 1, 0) circshift(C, 1) circshift(C, 1, 2) circshift(C, [1 -1])
Смотрите также
История
Версия | Описание |
6.1 | Введена circshift() . |
Report an issue | ||
<< cat | Манипуляции с матрицами | flipdim >> |