フィルターのクリア

Create a array of 1 and -1

2 ビュー (過去 30 日間)
Mate 2u
Mate 2u 2012 年 5 月 4 日
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!
Andrei Bobrov
Andrei Bobrov 2012 年 5 月 4 日
Thank you Elige.

サインインしてコメントする。

その他の回答 (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