Extending an order in a vector

3 vues (au cours des 30 derniers jours)
Josué Ortega
Josué Ortega le 26 Août 2019
Commenté : James Tursa le 28 Août 2019
I have a vector that provides me with a strict order of n number. If n is 5, for example, I type
y=randperm(5)
and I get something like
1 3 5 4 2
I want to scale this order by a factor of x. If x=3, I would like to get
1 2 3 7 8 9 13 14 15 10 11 12 4 5 6
Is there an easy way to do this that I am missing? I know that
reshape(repmat(y,x=3,1),1,[])
creates
1 1 1 3 3 3 5 5 5 4 4 4 2 2 2
and then I can add 1 to 3 using a loop, but surely there is something faster that I am missing.
  2 commentaires
Josué Ortega
Josué Ortega le 28 Août 2019
I have another question. The command you suggested gives me
1 2 3 7 8 9 13 14 15 10 11 12 4 5 6
is there a way to get the order of each group randomly?
So that I could get
3 1 2 9 7 8 13 14 15 11 10 12 4 6 5
Any ideas are most welcomed.
James Tursa
James Tursa le 28 Août 2019
result = cell2mat(arrayfun(@(y)randperm(x)+(y-1)*x,y,'uni',false));

Connectez-vous pour commenter.

Réponse acceptée

James Tursa
James Tursa le 26 Août 2019
One way:
>> result = cell2mat(arrayfun(@(y)x*y-x+1:x*y,y,'uni',false))
result =
1 2 3 7 8 9 13 14 15 10 11 12 4 5 6
  4 commentaires
Josué Ortega
Josué Ortega le 26 Août 2019
exactly
Josué Ortega
Josué Ortega le 26 Août 2019
got it, apologies for the silly question

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by