Create a array of 1 and -1

1 次查看(过去 30 天)
EDITED
Hi there, I want a 4 x 1 vector of all combinations of 1 and -1.
For instance [1 1 1 1] , [1 1 1 -1] , [1 1 -1 1]
etc..
  1 个评论
Walter Roberson
Walter Roberson 2012-5-4
[1 1 1 -1] appears to be the same combination as [1 1 -1 1]. Are you sure you want combinations and not permutations?

请先登录,再进行评论。

采纳的回答

Andrei Bobrov
Andrei Bobrov 2012-5-4
use function ff2n from Statistics Toolbox
out = ff2n(4)*2-1;
OR:
out = unique(nchoosek((-1).^(1:8),4),'rows');
  2 个评论
Dr. Seis
Dr. Seis 2012-5-4
I knew there was a more efficient way to do this!

请先登录,再进行评论。

更多回答(2 个)

Walter Roberson
Walter Roberson 2012-5-4
Taken how many at a time? If you say 2 at a time, then you have the problem that there are only 3 combinations: [-1 -1], [-1 1], [1 1]. The potential combination [1 -1] is the same combination as [-1 1] because by definition the order within a combination is irrelevant.
  2 个评论
Dr. Seis
Dr. Seis 2012-5-4
4x1 array... i.e., [1;1;1;1], [1;1;1;-1], [1;1;-1;-1], ...
Mate 2u
Mate 2u 2012-5-4
Wheres the input?

请先登录,再进行评论。


Dr. Seis
Dr. Seis 2012-5-4
Not the most efficient, but:
>> a=nchoosek([1,2,3,4,5,6,7,8],4);
>> b = ones(size(a));
>> b(mod(a,2)==0) = b(mod(a,2)==0)*-1;
>> c = unique(b,'rows')'
c =
Columns 1 through 12
-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 -1 1 1 -1 -1 1 1 -1 -1 1 1
-1 1 -1 1 -1 1 -1 1 -1 1 -1 1
Columns 13 through 16
1 1 1 1
1 1 1 1
-1 -1 1 1
-1 1 -1 1

Community Treasure Hunt

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

Start Hunting!

Translated by