Effacer les filtres
Effacer les filtres

How can I shift Right which is an array of numbers?

4 vues (au cours des 30 derniers jours)
Micky
Micky le 14 Fév 2013
Commenté : vishwajit jadhav le 26 Juin 2020
I need is a new shifted array and eventually I want to add the arrays.(New Shifted array + Original Array). Can I do something like e.g . aa =[11 22 33 44]; bb = aa(2:4); % this is shifting left It gives bb = [22 33 44], but one value is dropped out. If possible can someone provide method to shift right and how to pad the dropped out value appropriately so that the size of the new array remains same as the original array?

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 14 Fév 2013
Modifié(e) : Azzi Abdelmalek le 14 Fév 2013
use circshift function
circshift(aa,[0 -1])
or
circshift(aa,[0 1])
  7 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 14 Fév 2013
Modifié(e) : Azzi Abdelmalek le 14 Fév 2013
n=2
x= [11;22;33;44;55;66]
x=circshift(x,[n 0])
x(1:n)=0 % or what you want
Micky
Micky le 14 Fév 2013
Thanks for the help Azzi.

Connectez-vous pour commenter.

Plus de réponses (2)

Image Analyst
Image Analyst le 14 Fév 2013
Not quire sure what you're describing about not dropping off any values and having bb be the same size as aa, but how about this:
aa =[11 22 33 44];
bb = zeros(size(aa))
bb(2:4) = aa(2:4)
% or
bb1 = zeros(size(aa))
bb1(1:3) = aa(2:4)
In the command window:
bb =
0 22 33 44
bb1 =
22 33 44 0
You can see there is a zero and no value is dropped off or lost and the size of bb is the same as aa. If one of those methods is not what you want, explain in more detail.
  3 commentaires
Image Analyst
Image Analyst le 14 Fév 2013
Modifié(e) : Image Analyst le 14 Fév 2013
My solution will work. You just have to generalize it to "k" instead of fixed numbers of 2:4 like your example.
x = [11;22;33;44;55;66]
% k = -2;
k = +2;
s = zeros(size(x));
if k >= 1
s(k+1:end) = x(1:end-k)
elseif k <= -1
s(1:end+k) = x(-k+1:end)
end
Micky
Micky le 14 Fév 2013
Thanks for the help.

Connectez-vous pour commenter.


komal
komal le 14 Juin 2019
Ques= x =[11;22;33;44]
i want this results
x = [0;11;22;33;44]
How can i do it:

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by