HOW TO MOVE THE ELEMENTS BACK IN ORDER IN MATRICS WHICH ARE BEEN MOVED DIAGONALLY

조회 수: 1 (최근 30일)
1 4 6 8 2 3 7 9 5
all elements are move diagonally one pixel for m*n matix WHEN APPLYING THE FOLLOWING CODE
I = [
1 4 6
8 2 3
7 9 5]; % initial array
idx = reshape(1:numel(I),size(I));
for jj = -size(I,1) + 2 : size(I,2) - 2
a = diag(idx,jj);
I(a) = I(circshift(a,1));
end
example output
2 3 6
9 5 4
7 8 1
HOW TO GET THE ORIGINAL RESULT TO SHIFT DIAGONALLY . THE EXAMPLE OUTPUT IS
1 4 6 8 2 3 7 9 5

채택된 답변

Matt Fig
Matt Fig 2012년 9월 25일
Are you asking how to undo what your code does?
for jj = -size(I,1) + 2 : size(I,2) - 2
a = diag(idx,jj);
I(a) = I(circshift(a,-1)); % Note the -1
end

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by