0001 function ofmt=grabfmt(y,fs,Nfmt)
0002 if(nargin==1)
0003 Nfmt=3;
0004 fs=10000;
0005 elseif(nargin<3)
0006 Nfmt=3;
0007 end
0008
0009 Nlpc=round(fs/1000)+2;
0010 winsize=round(fs*.02);
0011 begwin=1;
0012
0013 ypre=convn(y,[1,-.95]);
0014 j=1;
0015 for i=1:winsize:length(ypre)-winsize
0016
0017
0018 data=ypre(i:i+winsize);
0019 hamm_data=hamming(length(data)).*data';
0020 [a,g]=lpc(hamm_data,Nlpc);
0021 r=roots(a);
0022 r(abs(r)<.8 | angle(r)<=0)=[];
0023 r=sort(angle(r)/(2*pi)*fs);
0024 fmt(1:min(Nfmt,length(r)),j)=r(1:min(Nfmt,length(r)));
0025 j=j+1;
0026 end
0027 meanfmt=mean(fmt,2);
0028 for i=2:size(fmt,2)-1
0029 for j=1:size(fmt,1)
0030 if(abs(fmt(j,i)-fmt(j,i-1))>0.3*meanfmt(j) && ...
0031 abs(fmt(j,i)-fmt(j,i+1))>0.3*meanfmt(j))
0032 fmt(j,i)=(fmt(j,i-1)+fmt(j,i+1))/2;
0033 end
0034 end
0035 end
0036 ofmt=fmt';
0037
0038