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 >> |