circshift

Циклический сдвиг массива

Синтаксис

Y = circshift(A,K)
Y = circshift(A,K,dim)

Описание

пример

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

Входные параметры

свернуть все

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

Типы данных: единственный | удваиваются | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический | char | строка | struct | таблица | ячейка
Поддержка комплексного числа: Да

Переключите сумму, заданную как целочисленный скаляр или вектор целых чисел.

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

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

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

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

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

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

Была ли эта тема полезной?