Bit missing after circular shift

8 次查看(过去 30 天)
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 个评论
Amrita  K
Amrita K 2016-4-11
编辑:Image Analyst 2016-4-11
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

请先登录,再进行评论。

采纳的回答

Roger Stafford
Roger Stafford 2016-4-11
编辑:Roger Stafford 2016-4-11
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 个评论
Roger Stafford
Roger Stafford 2016-4-11
Yes, I did mean that. Thanks Walter.
Amrita  K
Amrita K 2016-4-12
编辑:Amrita K 2016-4-12
Thank you Sir, it's working. Appreciate it.

请先登录,再进行评论。

更多回答(1 个)

Image Analyst
Image Analyst 2016-4-11
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!

类别

Help CenterFile Exchange 中查找有关 Entering Commands 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by