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