I want to apply a for loop to an array (say [1 2 3]) so that the output gives every possible combination of that array (i.e. [123], [132], [213], [231], [312], [321])
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Aiden Chrisan
el 13 de Mzo. de 2018
Comentada: Jan
el 19 de Mzo. de 2018
%this is the code i have present%
%Selection Sort - Iterating Arrays%
%1. Define input array and variables%
a = input('Please enter a list of numbers: ');
n=length(a);
%2. For loop - finding min index in list%
for i=1: n-1
imin=i;
for j=i+1:n
if a(j)~=a(imin)
imin=j;
%3. swapping elements - forming temp variable%
if imin~=i
temp=a(i);
a(i)=a(imin);
a(imin)=temp
end
end
end
end
%4. Displaying results%
disp(a)
%But it only gives 3 of the possible combinations%
%any help would be much appreciated%
0 comentarios
Respuesta aceptada
Jan
el 19 de Mzo. de 2018
Editada: Jan
el 19 de Mzo. de 2018
result = perms(1:3)
This replies a matrix, which contains the permutations as rows. If you really want the number 123 instead of the vector [1,2,3], use:
result = perms(1:3) * [100; 10; 1]
2 comentarios
Jan
el 19 de Mzo. de 2018
@Stephen: Thanks. I hope, I n more can offer even more sophisticated methods than a matrix multiplication ;-)
Más respuestas (1)
Akira Agata
el 19 de Mzo. de 2018
If the input is 1-by-3 array with different digits, like [1 2 3], the following code generates all possible combination.
a = [1 2 3];
c = cellstr(num2str(a'))';
% List of all possible combination
[x,y,z] = meshgrid(c,c,c);
list = strcat(x(:), y(:), z(:));
2 comentarios
Stephen23
el 19 de Mzo. de 2018
Editada: Stephen23
el 19 de Mzo. de 2018
@Jos (10584): I guess it was a literal interpretation of what is shown in the question title: i.e. [123] rather than [1,2,3] . Using chars makes sense for that case, but judging by the OP's code I doubt that this was their intention.
Ver también
Categorías
Más información sobre Loops and Conditional Statements 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!