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
0 个评论
采纳的回答
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 Center 和 File Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!