Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
circshift
circularly shifts elements or subarrays of an array (regular, of structures, cells, custom)
Syntax
B = circshift(A, shift) B = circshift(A, shift, 0) B = circshift(A, shifts) B = circshift(A, shifts, dims)
Arguments
- A, B
row, column, matrix or 2D array, hypermatrix or ND-array of any number of dimensions and of any sizes.
B
has the shape, sizes and type ofA
. Custom types are accepted provided thatsize()
, insertion, and extraction operators are defined forA
's type.- shift
unique positive or negative integer: the shift to apply to indices along the first non-singleton dimension, or to linear indices of
A
components if0
is used as third input argument.- shifts
vector of positive or negative integers: shifts to apply on ranges along directions specified in
dims
(or1:length(shifts)
by default).- dims
Vector of integers in
[1, ndims(A)]
: indices ofA
dimensions along which the respectiveshifts
must be performed.
Description
circshift(A, shift)
shifts along the first dimension of
A
of size > 1.
circshift(A, shift, 0)
circularly shifts A
components by shift
positions.
circshift(A, shifts)
circularly shifts
indices of A
rows by shifts(1)
,
indices of A
columns by shifts(2)
,
indices of A
layers by shifts(3)
, etc.
circshift(A, shifts, dims)
circularly shifts A
by shifts(1)
along its dimension #dims(1)
,
by shifts(2)
along its dimension #dims(2)
, etc.
Examples
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.
With an hypermatrix of texts:
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 !
With an array of cells:
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])
See also
History
Version | Description |
6.1 | circshift() introduced. |
Report an issue | ||
<< cat | Matrix manipulation | flipdim >> |