смещает по кругу элементы матрицы
B = circshift(A, shift) B = circshift(A, shift, 0) B = circshift(A, shifts) B = circshift(A, shifts, dims)
векторы, матрицы, гиперматрицы любого обычного типа данных, структуры,
cell-массивы, пользовательских типов. B имеет форму,
размеры и тип A. Пользовательские типы применимы, при
условии, что операторы size(), вставки и извлечения
определены для типа переменной A.
уникальное положительное или отрицательное целое: сдвиг для применения к
индексам вдоль первого неединичной размерности, или к линейным индексам
элементов A, если в качестве третьего входного
аргумента используется 0.
вектор положительных или отрицательных целых чисел: свдиги, которые
применяются к диапазонам вдоль направлений, указанных в dims
(или 1:length(shifts) по умолчанию).
вектор целых чисел в диапазоне [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) 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]) | ![]() | ![]() |
| Version | Description |
| 6.1 | Введена circshift(). |