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])
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
%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 Kommentare
Akzeptierte Antwort
Jan
am 19 Mär. 2018
Bearbeitet: Jan
am 19 Mär. 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 Kommentare
Jan
am 19 Mär. 2018
@Stephen: Thanks. I hope, I n more can offer even more sophisticated methods than a matrix multiplication ;-)
Weitere Antworten (1)
Akira Agata
am 19 Mär. 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 Kommentare
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!