samer@0: % aspectrum - frequency spectrum arrow samer@0: % samer@0: % aspectrum :: samer@0: % N:natural ~'size of waveform blocks to expect' 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,T]]},{[[dftbins(N),T]]},empty). samer@0: samer@0: function o=aspectrum(N,varargin) samer@37: opts=options('specfn',@powspec,'window',@hanning,varargin{:}); samer@0: specfn=opts.specfn; samer@0: w=spdiag(opts.window(N)); samer@0: o=arr(@fn); samer@0: function y=fn(x) samer@0: y=specfn(w*x); samer@0: end samer@0: end