Noninvasive Fetal ECG: The PhysioNet/Computing in Cardiology Challenge 2013 1.0.0

File: <base>/sources/mhaghpanahi_at_gmail.com/SigSelect.m (959 bytes)
function final_order = SigSelect(X,fs,checkno)

sub_order=[];
[nrow,ncol]=size(X);

if nrow > ncol
    X=X';
end


blocksize=2000;
nblocks = max(nrow,ncol)/blocksize;
n=min(nrow,ncol);

range=randi(nblocks,1,checkno);
% e=zeros(n,checkno);


F=0:150;
interval=1:38;
maxInd= zeros(1,checkno);

for j=1:checkno
    for i=1:n    
        [S(:,i),F,T,P(:,i)] = spectrogram(X(i,(range(j)-1)*blocksize+1:range(j)*blocksize),blocksize,[],F,fs);
    end
    
    p_ratio =  sum(P(interval,:))./sum(P);

    
    k_meas=kurtosis(X(:,(range(j)-1)*blocksize+1:range(j)*blocksize)');
    [dummy, maxInd(j)]=max(k_meas.*p_ratio);

    clear S T P;
end

compare= hist(maxInd,1:n);
[csort, order]=sort(compare,'descend');

if sum(csort==0)<3 
    final_order = order;
    return;
else
    sub_order = SigSelect(X(order(csort==0),:),fs,checkno);
end

w=order(csort==0);
final_order = [order(csort~=0) w(sub_order)];
    
end