Only Shifting the outer loop
이전 댓글 표시
This is the assignment I was given: he script should assume an m-by-n array A (m, n >= 2) is assigned in the Command Window. The value mover should also be assigned. The script should rotate all of the values on the outer loop of the array by mover spots clockwise and call the output A_out.
Example executions follow:
>> A = [1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15; 16 17 18 19 20]; mover = 2;
>> script25
A_out =
11 6 1 2 3
16 7 8 9 4
17 12 13 14 5
18 19 20 15 10
So far I have where it shifts by two positions but I don't know how to get the jut the outer loop to shift. Any hints?
A = [1 2 3 4 5; 6 7 8 9 10; 11 12 13 14 15; 16 17 18 19 20]
mover = 2
B = circshift(A,mover,2)
댓글 수: 5
Gina Barlage
2015년 6월 1일
Jan
2015년 6월 1일
No, the outerIndices suggested by Matt J are indices, not the values as in your code. Stay at this code:
Values = A(outerIndices)
A(outerIndices) = ...
Now all you have to do is to insert the circshift 'ed Values instead of the "...". You do not need any loops.
Gina Barlage
2015년 6월 1일
Walter Roberson
2015년 6월 2일
Don't shift the indices, shift the content. See where I said "insert the circshift'ed Values"? Values, not indices
Gina Barlage
2015년 6월 2일
답변 (1개)
As a hint, the following should give you the Linear Indices of the outer edges of the matrix in clockwise order,
I=reshape(1:m*n,m,n);
outerIndices=[I(1,:),I(2:end-1,end).',I(end,end:-1:1),I(end-1:-1:2,1).'];
카테고리
도움말 센터 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!