Noninvasive Fetal ECG: The PhysioNet/Computing in Cardiology Challenge 2013 1.0.0
(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