view dsp/specgrm.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents 62e31e7980e6
children
line wrap: on
line source
%  specgrm - Time-Varying Spectrum
% 
%  specgrm ::
%     X:[[T]]   ~'signal of length T',
%     N:natural | H:[[N]] ~'window length or window', 
%     M:natural ~'hop size',
%     options {
%		   fs :: nonneg/1	~'sampling rate';
%      range:: [[2]] ~'range for tfdimage'
%     }
%  -> [[1+N/2,floor(T/M)]] ~'sequence of short term spectra'.  
%
%  Examples:
%     Y1=specgram(x,hanning(256),128,'fs',44100)
%
%  Side Effects
%    Image Plot of the spectrogram if no output

function y=specgrm(x,w,m,varargin)
	if length(w)==1,	H=ones(w,1); 
	else H=w; end
	if nargin<3 m=[]; end
	
	n = length(H); if isempty(m), m=n/2; end
	if n>m, bufargs={'nodelay'}; else bufargs={}; end
	y = powspec(diag(sparse(H))*buffer(zeropad(n-m,x),n,n-m,bufargs{:}));

	% Make Spectrogram Display if no arg out
	if nargout==0
		opts=options('fs',1,'range',13.5,varargin{:});

		tfdimage(y,n,m,opts.fs,opts.range,opts);
		clear y;
	end