Bit missing after circular shift

I have noticed that after performing circular shift, the bit after the shift value is missing.
Shiftvalue = randi(2, n)
n is the max length of array
X = circshift(A, [1, Shiftvalue])
Problem : if Shiftvalue is 25, then the 26th bit is missing. Please help.

2 Comments

Can you post an example?
Shiftvalue = 27
A=[1 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0]
X=010001100001111111111011100 10110110

Sign in to comment.

 Accepted Answer

Roger Stafford
Roger Stafford on 11 Apr 2016
Edited: Roger Stafford on 11 Apr 2016
Your result can be accounted for if your A row vector is a string vector of 1's amd 0's except that its first element is a blank space character:
A = ' 10110110010001100001111111111011100' (<-- Corrected)
X = circshift(A,[1,27]);
X = 010001100001111111111011100 10110110
Note: The call for a shift of 1 in the rows does nothing to a row vector. Nevertheless you should really have 0 there to get zero shift in case you happen to deal with arrays with more than one row:
X = circshift(A,[0,27]);

3 Comments

I think Roger meant
A = ' 10110110010001100001111111111011100'
Yes, I did mean that. Thanks Walter.
Amrita  K
Amrita K on 12 Apr 2016
Edited: Amrita K on 12 Apr 2016
Thank you Sir, it's working. Appreciate it.

Sign in to comment.

More Answers (1)

This works just as expected for me:
ShiftValue = 27
A=[9 0 1 1 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0]
X = circshift(A, [0, ShiftValue])
% Element 1 (which is 9) should now be at element 28.
X(28) % It is 9, just as expected!

Categories

Tags

No tags entered yet.

Asked:

on 11 Apr 2016

Edited:

on 12 Apr 2016

Community Treasure Hunt

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

Start Hunting!