Home > fcn > AfRelease.m

AfRelease

PURPOSE ^

SYNOPSIS ^

function [af,gstartidx,gendidx]=AfRelease(af);

DESCRIPTION ^

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [af,gstartidx,gendidx]=AfRelease(af);
0002 threshold=0.05;
0003   
0004   
0005 [i,j]=find(af<=threshold);
0006 af_idx=unique(j);
0007 af_comp=unique(i);
0008 af_bound=find(diff(af_idx)>5);
0009 
0010 gstartidx=[];
0011 gendidx=[];
0012 
0013 if(~isempty(af_comp))
0014   [nil af_bound(end+1)]=max(af_idx);
0015   
0016   for n=1:length(af_bound),
0017     if(n==1)
0018       startidx=af_idx(1);
0019     else
0020       startidx=af_idx(af_bound(n-1)+1);
0021     end
0022     gstartidx(n)=startidx;
0023     idxvalid=startidx:af_idx(af_bound(n));
0024     [i,j]=find(af(:,idxvalid)<=threshold);
0025     comp=unique(i);
0026     tedix=[];
0027     for nn=1:length(comp),
0028       idx=idxvalid(find(af(comp(nn),idxvalid)<=threshold));
0029       
0030       dur=idx(end)-idx(1);
0031       rls=floor(0.7*dur)+startidx;
0032       trans=max(round(0.05*dur),5);
0033       
0034       af(comp(nn),rls:rls+trans) = ...
0035           interp1([rls,rls+trans],[threshold 0.1],rls:rls+trans);
0036       af(comp(nn),rls+trans:idx(end))=0.1;
0037       searchIdx=idx(end)+(1:min(size(af(comp(nn),:),2)-idx(end),70));
0038       tempSearchIdx=searchIdx(find(af(comp(nn),searchIdx)<0.1));
0039       af(comp(nn),tempSearchIdx)=0.1;
0040       if(~isempty(tempSearchIdx))
0041         tedix(nn)=max(tempSearchIdx);
0042       end
0043     end
0044     if(~isempty(tedix))
0045       gendidx(n)=max(tedix);
0046     end
0047   end
0048 end

Generated on Tue 27-Mar-2007 12:06:24 by m2html © 2003