# All possible combination based on 2^n but with 1 and -1

1 vue (au cours des 30 derniers jours)
BeeTiaw le 14 Mai 2021
Commenté : Dyuman Joshi le 14 Mai 2021
Hi all, thank you for those of you who have answered my question below.
I have a slightly different question but still does not know how to achieve this.
Again, I want to create a matrix containing all possible combination. Example of this is shown below. The size of the matrix depends on the number of variable n and the total of combination should follow the . The example below is valid for and, hence, the total number of rows is 8. The value of each element is 1 and -1.
How to create this matrix automatically depending on the number of variable n?
##### 2 commentairesAfficher AucuneMasquer Aucune
Jan le 14 Mai 2021
Your example contain [1,1,1] twice.
BeeTiaw le 14 Mai 2021
Modifié(e) : BeeTiaw le 14 Mai 2021
Yes. It is correct. That is the desired output.

Connectez-vous pour commenter.

### Réponses (3)

Dyuman Joshi le 14 Mai 2021
y=dec2bin([7 4 2 1])-'0';
y(y==0)=-1;
z =[y; flipud(y)]
This only works for this particular example. If you want a generalised answer, give more examples.
##### 2 commentairesAfficher AucuneMasquer Aucune
BeeTiaw le 14 Mai 2021
I am still trying to understand why we put [7 4 2 1].
Dyuman Joshi le 14 Mai 2021
Because only this combination corresponds to the desired result.
That's why I mentioned - "This only works for this particular example. If you want a generalised answer, give more examples"

Connectez-vous pour commenter.

Daniel Pollard le 14 Mai 2021
You could take the answer from your previous question, subtract 0.5 and multiply by 2. Your accepted answer was
n = 3;
m = dec2bin(0:pow2(n)-1)-'0' % limited precision
m = 8×3
0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1
which then becomes
n = 3;
m = dec2bin(0:pow2(n)-1)-'0'; % limited precision
m = 2*(m-0.5)
m = 8×3
-1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1
##### 0 commentairesAfficher -2 commentaires plus anciensMasquer -2 commentaires plus anciens

Connectez-vous pour commenter.

Jan le 14 Mai 2021
Modifié(e) : Jan le 14 Mai 2021
dec2bin creates a CHAR vector, while -'0' converts it to a double again. This indirection costs some time. The direct approach:
n = 3;
m = rem(floor((0:2^n-1).' ./ 2 .^ (0:n-1)), 2)
m = 8×3
0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 1
pool = [1, -1]; % Arbitrary values
result = pool(m + 1) % Add 1 to use m as index
result = 8×3
1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1
##### 1 commentaireAfficher -1 commentaires plus anciensMasquer -1 commentaires plus anciens
BeeTiaw le 14 Mai 2021
This is not creating the desired output as per the figure. The combination is different.

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by