필터 지우기
필터 지우기

How to perform right circular shift

조회 수: 1 (최근 30일)
sadiqa ilyas
sadiqa ilyas 2019년 11월 4일
댓글: sadiqa ilyas 2019년 11월 5일
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
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.
sadiqa ilyas
sadiqa ilyas 2019년 11월 4일
Yes but I want all these outputs. 16 out puts after the circular shift performed according to R_key

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
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 CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by