Mercurial > hg > ltpda
diff m-toolbox/classes/+utils/@math/spflat.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/+utils/@math/spflat.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,60 @@ +% 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 \ No newline at end of file