Dawn@4: function C = SpectralCentroid( signal, windowLength, step, fs) Dawn@4: Dawn@4: % function C = SpectralCentroid(signal,windowLength, step, fs) Dawn@4: % Dawn@4: % This function computes the spectral centroid feature of an audio signal Dawn@4: % ARGUMENTS: Dawn@4: % - signal: the audio samples Dawn@4: % - windowLength: the length of the window analysis (in number of samples) Dawn@4: % - step: the step of the window analysis (in number of samples) Dawn@4: % - fs: the sampling frequency Dawn@4: % Dawn@4: % RETURNS: Dawn@4: % - C: the sequence of the spectral centroid feature Dawn@4: % Dawn@4: Dawn@4: signal = signal / max(abs(signal)); Dawn@4: curPos = 1; Dawn@4: L = length(signal); Dawn@4: numOfFrames = floor((L-windowLength)/step) + 1; Dawn@4: H = hamming(windowLength); Dawn@4: m = ((fs/(2*windowLength))*[1:windowLength])'; Dawn@4: C = zeros(numOfFrames,1); Dawn@4: for (i=1:numOfFrames) Dawn@4: window = H.*(signal(curPos:curPos+windowLength-1))'; Dawn@4: FFT = (abs(fft(window,2*windowLength))); Dawn@4: FFT = FFT(1:windowLength); Dawn@4: FFT = FFT / max(FFT); Dawn@4: C(i) = sum(m.*FFT)/sum(FFT); Dawn@4: if (sum(window.^2)<0.010) Dawn@4: C(i) = 0.0; Dawn@4: end Dawn@4: curPos = curPos + step; Dawn@4: end Dawn@4: C = C / (fs/2);