exponenta event banner

circshift

Циклическая смена массива

Описание

пример

Y = circshift(A,K) циклически сдвигает элементы в массиве A около K должности. Если K является целым числом, то circshift смещается вдоль первого размера A размер которого не равен 1. Если K является вектором целых чисел, то каждый элемент K указывает величину сдвига в соответствующей размерности A.

Примечание

Поведение по умолчанию circshift(A,K) где K является скаляром, измененным в R2016b. Для сохранения поведения R2016a и предыдущих версий используйте circshift(A,K,1). Этот синтаксис задает 1 в качестве размера для работы.

пример

Y = circshift(A,K,dim) циклическое смещение значений в массиве A около K положения вдоль размера dim. Исходные данные K и dim должны быть скалярами.

Примеры

свернуть все

Создайте числовой вектор столбца.

A = (1:10)'
A = 10×1

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10

Использовать circshift для смещения элементов на три положения.

Y = circshift(A,3)
Y = 10×1

     8
     9
    10
     1
     2
     3
     4
     5
     6
     7

Результат, Y, имеет те же элементы, что и A но они в другом порядке.

Создание массива символов и использование circshift для перемещения символов на 3 позиции. Символы находятся в другом порядке в Y.

A = 'racecar';  
Y = circshift(A,3)
Y = 
'carrace'

Создайте числовой массив с кластером в верхнем левом углу.

A = [1 1 0 0; 1 1 0 0; 0 0 0 0; 0 0 0 0]
A = 4×4

     1     1     0     0
     1     1     0     0
     0     0     0     0
     0     0     0     0

Использовать circshift для сдвига каждой строки A одна позиция вправо.

Y = circshift(A,1,2)
Y = 4×4

     0     1     1     0
     0     1     1     0
     0     0     0     0
     0     0     0     0

Смещение элементов A на одну позицию в каждом измерении. Скопление единиц теперь находится в центре матрицы.

Y = circshift(A,[1 1])
Y = 4×4

     0     0     0     0
     0     1     1     0
     0     1     1     0
     0     0     0     0

Чтобы переместить кластер обратно в исходное положение, используйте circshift на Y с отрицательными значениями сдвига. Матрица X эквивалентно A.

X = circshift(Y,[-1 -1])
X = 4×4

     1     1     0     0
     1     1     0     0
     0     0     0     0
     0     0     0     0

Входные аргументы

свернуть все

Входной массив, заданный как вектор, матрица или многомерный массив.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell
Поддержка комплексного номера: Да

Величина сдвига, заданная как целочисленный скаляр или вектор целых чисел.

  • При указании K в виде целого числа и не указывать dim, то circshift смещается вдоль первого размера, размер которого не равен 1. Положительный K смещается к концу размерности и отрицательный K смещается к началу.

  • При указании K как вектор целых чисел, затем N-й элемент в K указывает величину сдвига для N-го размера в A. Если N-й элемент в K является положительным, то значения A сместиться к концу N-го размера. Если N-й элемент отрицательный, то значения смещаются к началу.

Если величина сдвига больше длины соответствующего размера в A, то сдвиг циклически оборачивается к началу этого размера. Например, смещение 3-элементного вектора на + 3 положения возвращает его элементы в исходное положение.

Размерность для работы, заданная как целочисленный скаляр. Если значение не указано, по умолчанию используется первый размер, размер которого не равен 1. При указании dim, то K должен быть целочисленным скаляром. В общем, указать dim = 1 для обмена строками, dim = 2 для обмена столбцами и т.д.

Расширенные возможности

.

Создание кода графического процессора
Создание кода CUDA ® для графических процессоров NVIDIA ® с помощью Coder™ графических процессоров

.

См. также

| | |

Представлен до R2006a