Permutation of only x elements of a vector
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Josué Ortega
il 14 Set 2017
Commentato: Josué Ortega
il 14 Set 2017
Imagine a vector of natural numbers between 1 and 20, say
x=randperm(20)
I want to generate a vector identical to x, but changing the position of exactly 4 elements. How can I do this in general for a vector of m elements, when I want to change n elements?
2 Commenti
Stephen23
il 14 Set 2017
"...changing the position of exactly 4 elements"
Do the positions have to change, or do you accept the possibility of the positions (randomly) being the same?
Risposta accettata
Guillaume
il 14 Set 2017
Doesn't your question just reduce to selecting 4 random integers from 1 to numel(x) using either randperm if the elements have to swap or randi if you accept the positions being the same (as per Stephen's question). You can then swap them in a fixed order or using randperm (which runs the risk of not doing any swapping)
x = 1:20;
swapidx = randperm(numel(x), 4); %or randi(n, 1, 4);
x(swapidx) = x(fliplr(swapidx)) %swap 1st index with fourth, 2nd with 3rd
x(swapidx) = x(swapidx(randperm(4))) %swap randomly (may not swap)
0 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!