samer@0: % alpc - LPC arrow samer@0: % samer@0: % alpc :: samer@0: % N:natural ~'size of waveform blocks to expect', samer@0: % M:natural ~'order of LPC to do' samer@0: % options { samer@0: % specfn :: ([[N,T]]->[[dftbins(N),T]])/ @powspec ~'function to compute spectra'; samer@0: % window :: (N:natural->[[N]]) / @hanning ~'function to compute window' samer@0: % } samer@0: % -> arrow({[[N,1]]},{[[M,1]]},empty). samer@0: samer@0: function o=alpc(N,M,varargin) samer@37: opts=options('window',@hanning,'nargout',1,varargin{:}); samer@0: w=spdiag(opts.window(N)); samer@0: if opts.nargout<=1 samer@0: o=arr(@fn); samer@0: else samer@0: o=arr(@fn2); samer@0: end samer@0: samer@0: function y=fn(x) samer@0: y=lpc(w*x,M); samer@0: end samer@0: samer@0: function [y,v]=fn2(x) samer@0: [y,v]=lpc(w*x,M); samer@0: end samer@0: end