computes the spectral spread from the magnitude spectrum > called by ::ComputeFeature > > @param X: spectrogram (dimension FFTLength X Observations) > @param f_s: sample rate of audio data > > @retval vss spectral spread (in Hz) ======================================================================
0001 %computes the spectral spread from the magnitude spectrum 0002 %> called by ::ComputeFeature 0003 %> 0004 %> @param X: spectrogram (dimension FFTLength X Observations) 0005 %> @param f_s: sample rate of audio data 0006 %> 0007 %> @retval vss spectral spread (in Hz) 0008 % ====================================================================== 0009 function [vss] = FeatureSpectralSpread (X, f_s) 0010 0011 % get spectral centroid as index 0012 vsc = FeatureSpectralCentroid(X, f_s) * 2 / f_s * (size(X, 1)-1); 0013 0014 % allocate memory 0015 vss = zeros(size(vsc)); 0016 0017 % compute spread 0018 for n = 1:size(X,2) 0019 vss(n) = (((0:size(X, 1)-1)-vsc(n)).^2 * X(:, n)) ./ sum(X(:, n)); 0020 end 0021 vss = sqrt(vss); 0022 0023 % convert from index to Hz 0024 vss = vss / (size(X, 1)-1) * f_s / 2; 0025 0026 % avoid NaN for silence frames 0027 vss (sum(X, 1) == 0) = 0; 0028 end 0029 0030