Contenuto principale

circshift

Spostare l'array in modo circolare

Descrizione

Y = circshift(A,K) sposta gli elementi nell'array A in modo circolare di K posizioni. Se K è un numero intero, circshift effettua lo spostamento lungo la prima dimensione di A la cui grandezza non è uguale a 1. Se K è un vettore di numeri interi, ogni elemento di K l'entità dello spostamento nella dimensione corrispondente di A.

Nota

Il comportamento predefinito di circshift(A,K) dove K è uno scalare è stato modificato nella release R2016b. Per mantenere il comportamento della release R2016a e precedenti, utilizzare circshift(A,K,1). Questa sintassi specifica 1 come la dimensione lungo cui operare.

esempio

Y = circshift(A,K,dim) sposta i valori nell'array A in modo circolare di K posizioni lungo la dimensione dim. Gli input K e dim devono essere scalari.

esempio

Esempi

comprimi tutto

Creare un vettore colonna numerico.

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

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10

Utilizzare circshift per spostare gli elementi di tre posizioni.

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

     8
     9
    10
     1
     2
     3
     4
     5
     6
     7

Il risultato Y presenta gli stessi elementi di A ma in ordine diverso.

Creare un array di caratteri e utilizzare circshift per spostare i caratteri di 3 posizioni. I caratteri sono in un ordine diverso in Y.

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

Crea un array numerico con un cluster di uno in alto a sinistra.

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

Utilizzare circshift per spostare ogni colonna di A di una posizione verso destra.

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

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

Spostare gli elementi di A di una posizione in ciascuna dimensione. Il cluster di uno si trova ora al centro della matrice.

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

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

Per riportare il cluster nella sua posizione originale, utilizzare circshift su Y con valori di spostamento negativi. La matrice X equivale a 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

Argomenti di input

comprimi tutto

Array di input, specificato come vettore, matrice o array multidimensionale.

Tipi di dati: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell
Supporto numeri complessi:

Entità dello spostamento, specificata come scalare intero o vettore di numeri interi.

  • Se si specifica K come numero intero e non si specifica dim, circshift effettua lo spostamento lungo la prima dimensione la cui grandezza non è uguale a 1. Un valore positivo di K effettua lo spostamento verso la fine della dimensione, mentre un valore negativo di K lo effettua verso l'inizio.

  • Se si specifica K come vettore di numeri interi, l'N-esimo elemento in K specifica l'entità dello spostamento per l'N-esima dimensione in A. Se l'N-esimo elemento in K è positivo, i valori di A si spostano verso la fine dell'N-esima dimensione. Se l'N-esimo elemento è negativo, i valori si spostano verso l'inizio.

Se l'entità dello spostamento è maggiore della lunghezza della dimensione corrispondente in A, lo spostamento si avvolge all'inizio di tale dimensione in modo circolare. Ad esempio, spostando un vettore a 3 elementi di +3 posizioni, i suoi elementi tornano alle loro posizioni originali.

Dimensione lungo la quale operare, specificata come scalare intero positivo. Se non viene specificato alcun valore, l'impostazione predefinita è la prima dimensione la cui grandezza non è uguale a 1. Se si specifica dim, K deve essere uno scalare intero. In linea generale, specificare dim = 1 to per scambiare le righe, dim = 2 per scambiare le colonne e così via.

Funzionalità estese

espandi tutto

Cronologia versioni

Introduzione prima di R2006a