ECG-Kit 1.0
(1,602 bytes)
function result=twopoints(data,ndirect,seed)
%TWOPOINTS calculates ndirect directions through two randomly chosen data points from data.
% If ndirect is larger than the number of all possible directions, then all
% these combinations are considered.
%
% Required input arguments:
% data : Data matrix
% ndirect : Number of directions through two random data points that
% needs to be constructed
%
% Optional input arguments:
% seed : To define the state of the generator (default=0)
% (0 sets the generator to its default initial state)
%
%I/O:
% result=twopoints(x,250,0);
%
% Output arguments:
% result : matrix containing the ndirect directions (each row is a
% direction)
%
% This function is part of LIBRA: the Matlab Library for Robust Analysis,
% available at:
% http://wis.kuleuven.be/stat/robust.html
%
% Last modified: 09/06/2008
if nargin==2
seed=0;
end
[n,p]=size(data);
nrich1=n*(n-1)/2;
ndirect=min(ndirect,nrich1);
true = (ndirect == nrich1);
B=zeros(ndirect,p);
if true
perm=[1 1];
end
k=1;
for ndir=1:ndirect
if true
k1=2;
perm(k1)=perm(k1)+1;
while ~(k1==1 || perm(k1) <=(n-(k+1-k1)))
k1=k1-1;
perm(k1)=perm(k1)+1;
for j=(k1+1):k+1
perm(j)=perm(j-1)+1;
end
end
index=perm; % index : contains trial subsample.
else
[index,seed]=randomset(n,2,seed);
end
B(ndir,:)=data(index(1),:)-data(index(2),:);
end
result=B;