# Rearranging array based on number of steps.

4 vues (au cours des 30 derniers jours)
Santos García Rosado le 1 Juin 2021
Hi everybody,
Let's say I have a vector such as:
A = (1:24)
And I'd like to separate this array into a 2x12 matrix where the first row will show the first 3 positions skipping the next three and so on... The second row will do the same thing but starting from the fourth position. This is the expexted output:
Output = [1 2 3 7 8 9 13 14 15 19 20 21; 4 5 6 10 11 12 16 17 18 22 23 24]
I could do this manually, but some times I'd like it to take 2 or 4 steps instead of 3, as it is in the example above.
Any ideas of how to to achieve this?
Santos
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

### Réponse acceptée

Stephen23 le 1 Juin 2021
Modifié(e) : Stephen23 le 1 Juin 2021
A = 1:24;
N = 3; % number of "steps"
R = 2; % number of rows
M = reshape(permute(reshape(A,N,R,[]),[2,1,3]),R,[])
M = 2×12
1 2 3 7 8 9 13 14 15 19 20 21 4 5 6 10 11 12 16 17 18 22 23 24
[1,2,3,7,8,9,13,14,15,19,20,21;4,5,6,10,11,12,16,17,18,22,23,24]
ans = 2×12
1 2 3 7 8 9 13 14 15 19 20 21 4 5 6 10 11 12 16 17 18 22 23 24
##### 1 commentaireAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens
Santos García Rosado le 1 Juin 2021
Thank you Steven! Neve thought of nesting permute with reshape that way. Thanks!

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

R2021a

### Community Treasure Hunt

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

Start Hunting!

Translated by