Shift array by one element backwards or forward
47 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
John Jarvis
il 17 Feb 2020
Modificato: Captain Karnage
il 16 Mag 2023
For example, I have an array indexed by n, running from -n to +n
A_n=[-n,..-1,0,1,.....]
I want to create a new array A_{n+1} which will shift every element of A_n one place forward
and A_{n-1} which will shift every element of A_n one place backwards.
How to do it?
0 Commenti
Risposta accettata
Bhaskar R
il 17 Feb 2020
x = -5:5; % array
fr = circshift(x, 1); % forward
bk = circshift(x, -1); % backward
3 Commenti
Bhaskar R
il 17 Feb 2020
"Warning: CIRCSHIFT(X,K) with scalar K and where size(X,1)==1 will change behavior in future versions. To
retain current behavior, use CIRCSHIFT(X,[K,0]) instead. "
As warning suggested modify command as
x = -5:5; % array
fr = circshift(x, [0, 1]); % forward
bk = circshift(x, [0, -1]); % backward
Captain Karnage
il 16 Mag 2023
Modificato: Captain Karnage
il 16 Mag 2023
So this depends on whether you have a horizontal or vertical vector. @Bhaskar R's example works for a horizontal vector (-5:5 will give you a horizontal vector). For a vertical vector it will be just like the suggestion in the warning:
x = -5:5; % array
fr = circshift(x, [1, 0]); % forward
bk = circshift(x, [-1, 0]); % backward
I can confirm that is what worked for me.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Resizing and Reshaping Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!