Creating combinations of 3 vectors
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Matt
el 14 de Nov. de 2018
Comentada: Akira Agata
el 14 de Nov. de 2018
I have a 3x3 array
A = [50,20,30; 55,25,35; 60,30,40]
and want to produce the 27 combinations below. How can I do this?
Result = [50,20,30; 50,20,35; 50,20,40; 50,25,30; 50,25,35; 50,25,40; 50,30,30; 50,30,35; 50,30,40; 55,20,30; 55,20,35; 55,20,40; 55,25,30; 55,25,35; 55,25,40; 55,30,30; 55,30,35; 55,30,40; 60,20,30; 60,20,35; 60,20,40; 60,25,30; 60,25,35; 60,25,40; 60,30,30; 60,30,35; 60,30,40].
Thanks,
Matt
0 comentarios
Respuesta aceptada
Akira Agata
el 14 de Nov. de 2018
One possible solution would be like this:
A = [50,20,30; 55,25,35; 60,30,40];
[p1,p2,p3] = ndgrid(1:3);
Result = [A(p3(:),1),A(p2(:),2),A(p1(:),3)];
Más respuestas (1)
Guillaume
el 14 de Nov. de 2018
Akira's answer is how I'd do it. Just for the record here is another method
indices = dec2base(0:size(A, 1)^size(A, 2)-1, size(A, 1)) - '0' + 1 + (0:size(A, 2)-1)*size(A, 1);
A(indices)
Works for A up to 10 rows.
1 comentario
Ver también
Categorías
Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!