Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.0.0 - Русский


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

Смотрите также

  • flipdim — меняем порядок (частей) строк, столбцов, страниц... массива
  • fftshift — перегруппировывает результат БПФ, сдвигая нулевую частоту в центр спектра

История

ВерсияОписание
6.1 Введена circshift().
Report an issue
<< cat Манипуляции с матрицами flipdim >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Mar 07 09:28:42 CET 2023