Translate a matrix with nested loops?

조회 수: 1 (최근 30일)
Colin Starker
Colin Starker 2017년 3월 18일
답변: dpb 2017년 3월 18일
I need to translate a matrix up and to the right with nested loops.
The code should be able to take any matrix A...
A=
[1 2 3 4 5;
6 7 8 9 10;
11 12 13 14 15;
16 17 18 19 20]
...and translate it by user inputs X and Y (2 and 2, in this example) to produce matrix B...
B=
[0 0 11 12 13;
0 0 16 17 18;
0 0 0 0 0;
0 0 0 0 0]

채택된 답변

Roger Stafford
Roger Stafford 2017년 3월 18일
No need for loops:
up = 2; right = 2;
B = zeros(size(A));
B(1:end-up,1+right:end) = A(1+up:end,1:end-right);

추가 답변 (1개)

dpb
dpb 2017년 3월 18일
Alternate
B=circshift(A,[up right]);
B(:,1:right)=0; B(end-up+1:end,:)=0;
I've always thought there should be a companion to cirshift that shifts in a constant or by default zero...think I've made the enhancement request a time or two, even.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by