Bit missing after circular shift

조회 수: 8 (최근 30일)
Amrita  K
Amrita K 2016년 4월 11일
편집: Amrita K 2016년 4월 12일
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
Azzi Abdelmalek
Azzi Abdelmalek 2016년 4월 11일
Can you post an example?
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