Only Shifting the outer loop
Show older comments
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 Comments
Gina Barlage
on 1 Jun 2015
Jan
on 1 Jun 2015
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
on 1 Jun 2015
Walter Roberson
on 2 Jun 2015
Don't shift the indices, shift the content. See where I said "insert the circshift'ed Values"? Values, not indices
Gina Barlage
on 2 Jun 2015
Answers (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).'];
2 Comments
Gina Barlage
on 31 May 2015
Jan
on 1 Jun 2015
Values = A(outerIndices)
A(outerIndices) = ...
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!