## -*- texinfo -*- ## @deftypefn {} {@var{eqBW} =} enbw (@var{window}) ## @deftypefnx {} {@var{eqBW} =} enbw (@var{window}, @var{fs}) ## Compute the Equivalent Noise Bandwidth (ENBW) of a window. ## Equivalent noise bandwidth is the width of a rectangular window that has the ## same area as the supplied window. ## If fs is supplied, then the result is scaled by the frequency resolution. ## See: https://www.gaussianwaves.com/2011/02/window-functions-an-analysis/ ## for an easy to understand reference. function eqBW = enbw(window, varargin) ## Make window a column vector if required. if (size(window, 1) == 1) window = window(:); endif fs = size(window, 1); win_size = fs; if (nargin > 1) fs = varargin{1}; elseif (nargin > 2) evalin ("caller", "print_usage"); endif if (! (isscalar (fs) && fs > 0)) error ("pwelch: FS must be a scalar greater than 0"); endif eqBW = mean(window.^2)./mean(window).^2 * fs/win_size; endfunction