How to perform right circular shift
조회 수: 7 (최근 30일)
이전 댓글 표시
Hi. I have written a code to perform circular shift but it does not give me all X28 and Y28 keys . It returns only one X28 and Y28 with out any circular shift.What I did wrong
key_56=1:56;
x=key_56(1:28);
y=key_56(29:56);
R_key=[1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1];
icount=0;
for i=1:16
icount=icount+R_key(i);
I=icount;
end
%circular shift
X28 = circshift(x', -icount)';
Y28 = circshift(y', -icount)';
댓글 수: 3
Walter Roberson
2019년 11월 4일
sum(R_key) is 28, so icount is 28. That is the same as the length of your data, so you are circular shifting each bit of data exactly to the same place it started.
채택된 답변
Walter Roberson
2019년 11월 4일
key_56=1:56;
x=key_56(1:28);
y=key_56(29:56);
R_key=[1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1];
shift_counts = cumsum(R_key);
num_shifts = length(shift_counts);
x_shifted = zeros(num_shifts, length(x));
y_shifted = zeros(num_shifts, length(y));
for i = 1 : num_shifts
x_shifted(i, :) = circshift(x, -shift_counts(i));
y_shifted(i, :) = circshift(y, -shift_counts(i));
end
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Axis Labels에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!