www.gusucode.com > 声音的处理有:LPC,FFT,共振峰,频谱源码程序 > siganlandsystemusingMatlab/SSUM/library/spec_rolloff.m

    function sc_value = spec_rolloff(signal,Fs)

	FFT = fft(signal);
	mag = abs(FFT);
	mag = mag(1:length(mag)/2);
	spsum = 0;

	% Sum entire spectrum
	for i=1:length(mag),
		spsum = spsum + mag(i);
	end

	% Find bin where 85% of spectral energy is below
	cut = 0.15*spsum;
	i = 1;
	while (spsum > cut)
		spsum = spsum - mag(i);
		i = i+1;
	end

	Hz_per_bin = Fs/length(signal);
	sc_value = Hz_per_bin*i;