Bit missing after circular shift

8 views (last 30 days)
Amrita  K
Amrita K on 11 Apr 2016
Edited: Amrita K on 12 Apr 2016
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
Azzi Abdelmalek
Azzi Abdelmalek on 11 Apr 2016
Can you post an example?
Amrita  K
Amrita K on 11 Apr 2016
Edited: Image Analyst on 11 Apr 2016
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
Roger Stafford
Roger Stafford on 11 Apr 2016
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)

Image Analyst
Image Analyst on 11 Apr 2016
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

Find more on Entering Commands in Help Center and File Exchange

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!