view m-toolbox/classes/+utils/@math/spflat.m @ 44:409a22968d5e
default
Add unit tests
author
Daniele Nicolodi <nicolodi@science.unitn.it>
date
Tue, 06 Dec 2011 18:42:11 +0100 (2011-12-06)
parents
f0afece42f48
children
line source
+ − % spflat measures the flatness of a given spectrum
+ − %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ − %
+ − % DESCRIPTION: spflat measures the flatness of a given spectrum using the
+ − % spectral flatness measure method reported in [1]. It outputs the spectral
+ − % flatness coefficient:
+ − %
+ − % 0 <= sw <= 1
+ − %
+ − % If the spectrum is peaky then sw is near 0. The more the spectrum is flat
+ − % the more sw in near to 1. The sw coefficient is practically calculated by
+ − % the ratio between geometric mean and arithmetic mean of the spectrum.
+ − %
+ − % CALL:
+ − %
+ − % sw = spflat(S)
+ − %
+ − % INPUTS:
+ − %
+ − % - S sample power spectrum. More than one sample spectrum can be
+ − % input if they are combined in a single nxm matrix. The algorithm
+ − % calculates sw for each spectrum.
+ − %
+ − % OUTPUT:
+ − %
+ − % - sw spectral flatness coefficient. If more than one spectrum
+ − % are input sw is a row vector.
+ − %
+ − % REFERENCES:
+ − %
+ − % [1] S. M. Kay, Modern spectral estimation:Theory and Application,
+ − % Prentice Hall, Englewood Cliffs (1988) ISBN-10: 0130151599. Pages
+ − % ??.
+ − %
+ − %
+ − %
+ − % VERSION: $Id: spflat.m,v 1.2 2009/01/29 08:59:26 luigi Exp $
+ − %
+ − %
+ − % HISTORY: 28-01-2009 L Ferraioli
+ − % Creation
+ − %
+ − %
+ − %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ − function sw = spflat(S)
+ −
+ − % willing to work with columns
+ − [a,b] = size(S);
+ − if a>1 && b>1
+ − warning('Matlab:MultipleSpectra','A matrix of data was input; Spectral Flatness Coefficient will be calculated for each column')
+ − else
+ − if a<b
+ − S = S.';
+ − end
+ − end
+ − Ns = size(S,1);
+ − gmean = exp(sum(log(S))./Ns);
+ − sw = gmean./mean(S);
+ −
+ − end