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])

3 visualizzazioni (ultimi 30 giorni)
%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%

Risposta accettata

Jan
Jan il 19 Mar 2018
Modificato: Jan il 19 Mar 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]

Più risposte (1)

Akira Agata
Akira Agata il 19 Mar 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 Commenti
Stephen23
Stephen23 il 19 Mar 2018
Modificato: Stephen23 il 19 Mar 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.

Accedi per commentare.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by