about summary refs log tree commit diff
path: root/sourcecodes/bnt-master/KPMtools/nchoose2.m
blob: 1827d0537caefe760ba9cedf5a754a200249c620 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function c = nchoose2(v, f)
%NCHOOSE2 All combinations of N elements taken two at a time.
%
%   NCHOOSE2(1:N) or NCHOOSEK(V) where V is a vector of length N,
%   produces a matrix with N*(N-1)/2 rows and K columns. Each row of
%   the result has K of the elements in the vector V.
%
%   NCHOOSE2(N,FLAG) is the same as NCHOOSE2(1:N) but faster.
%
%   NCHOOSE2(V) is much faster than NCHOOSEK(V,2).
%
%   See also NCHOOSEK, PERMS.

%   Author:      Peter J. Acklam
%   Time-stamp:  2000-03-03 13:03:59
%   E-mail:      jacklam@math.uio.no
%   URL:         http://www.math.uio.no/~jacklam

   nargs = nargin;
   if nargs < 1
      error('Not enough input arguments.');
   elseif nargs == 1
      v = v(:);
      n = length(v);
   elseif nargs == 2
      n = v;
   else
      error('Too many input arguments.');
   end

   [ c(:,2), c(:,1) ] = find( tril( ones(n), -1 ) );

   if nargs == 1
      c = v(c);
   end