FUNCTION shift of vector's position
6 views (last 30 days)
Show older comments
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.
0 Comments
Accepted Answer
amjad hammad
on 8 Dec 2021
Edited: Walter Roberson
on 8 Dec 2021
2 Comments
Walter Roberson
on 8 Dec 2021
This will work in one direction but not the other:
rotation([shift+1:end, 1:shift]) = vector
More Answers (2)
Chunru
on 7 Dec 2021
Edited: Chunru
on 7 Dec 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 Comments
Walter Roberson
on 7 Dec 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)
0 Comments
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!