Effacer les filtres
Effacer les filtres

FUNCTION shift of vector's position

6 vues (au cours des 30 derniers jours)
amjad hammad
amjad hammad le 6 Déc 2021
Commenté : Chunru le 9 Déc 2021
ANYONE CAN HELP ME PLS TO CREAT THIS FUNCTION I TRIED TO DO IT BUT I COULDNT WITHOUT any toolbox functions of cycles
function rotated = rotateRight( vector, shift )
% Performs cyclic shift of vector's position - the ROR operation.
% Performs horizontal ROR, if a matrix is supplied, rotate all rows.
% The scalar shift specifies how many positions to rotate
% if negative, a ROL operation is performed.
% You cannot use any toolbox functions of cycles,
% just indexing.

Réponse acceptée

amjad hammad
amjad hammad le 8 Déc 2021
Modifié(e) : Walter Roberson le 8 Déc 2021
rotated = zeros(1, size(vector, 2))
shift = mod(shift, size(vector, 2))
rotated(1:shift) = vector(end-shift+1:end)
rotated(shift+1:end) = vector(1:end-shift)
i did it in this way but is there anyone have another method how to do it with same conditionals
  2 commentaires
Walter Roberson
Walter Roberson le 8 Déc 2021
This will work in one direction but not the other:
rotation([shift+1:end, 1:shift]) = vector
amjad hammad
amjad hammad le 8 Déc 2021
thank you it work perfect

Connectez-vous pour commenter.

Plus de réponses (2)

Chunru
Chunru le 7 Déc 2021
Modifié(e) : Chunru le 7 Déc 2021
Here is some pseudo code:
%1. Let the vector index be idx = (0:n-1) + 1
%2. When rotating to right by "shift" (which can be +ve/-ve), the corresponding index becomes
% newIdx = mod((0:n-1) + shift, n) + 1;
% where mod implements the rotation.
%3. Get the rotated vector: y = vector(newIdx)
  2 commentaires
amjad hammad
amjad hammad le 8 Déc 2021
thanks but i tried what you mean but i get this answer
y =
3 4 5 6 7 8 9 10 1 2
what i need be like this the and will be like arraythis vector 1:10 and shift 2
rotated =
9 10 1 2 3 4 5 6 7 8
Chunru
Chunru le 9 Déc 2021
Then
newIdx = mod((0:n-1) - shift, n) + 1;

Connectez-vous pour commenter.


Walter Roberson
Walter Roberson le 7 Déc 2021
Take a copy of what is about to be overwriten.
Use array subscripts to move the old data to the new positions. For example
A(:,1:5) = A(:,3:7);
Now write the saved data to the other end of the array, into the spots vacated, like A(:,6:7)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by