Only Shifting the outer loop
Afficher commentaires plus anciens
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 commentaires
Gina Barlage
le 1 Juin 2015
Jan
le 1 Juin 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
le 1 Juin 2015
Walter Roberson
le 2 Juin 2015
Don't shift the indices, shift the content. See where I said "insert the circshift'ed Values"? Values, not indices
Gina Barlage
le 2 Juin 2015
Réponses (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 commentaires
Gina Barlage
le 31 Mai 2015
Jan
le 1 Juin 2015
Values = A(outerIndices)
A(outerIndices) = ...
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!