How to circ shift rows by different increments
조회 수: 21 (최근 30일)
이전 댓글 표시
I have a 100x100 matrix and I am trying to figure how to shift them in different increments. For example I want row 1 to shift by none, row 2 by 10, row 3 by 20, row 4 by 30, and row 5 by 40 and for it to repeat this process every 5 rows. How can I achieve this?
댓글 수: 0
채택된 답변
추가 답변 (1개)
Jan
2021년 2월 22일
편집: Jan
2021년 2월 22일
What does "shift" mean? Circular shifting the elements? Adding a value to the contents of the elements?
A = rand(100, 100);
s = [0, 10, 20, 30, 40];
% For circular shifting the elements:
for k = 1:100
sk = s(mod(k - 1, 5)) + 1; % 1:100 -> 1,2,3,4,5,1,2,3,4,5,...
A(k, :) = circshift(A(k, :), sk);
end
% Or if "shift" means adding to the values is meant:
A = A + repmat(s(:), 20, 1);
Did this solve your homework? If so: Sorry. Please mention explicitly, if a question conserns homework, such that we can give useful hinbts instead of a solution.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!