Dawn@4: % Modified 30/04/2002 by Thorsten Kastner - zero pad (length overlap) at start and end for overlap removed; Dawn@4: % because: there's no overlap in ASF Dawn@4: function [fftout,phase] = mpeg7getspec( data, fs, hopsize, windowsize, window, FFTsize) Dawn@4: % data = data(1:5004); Dawn@4: if size(data,1)==1 Dawn@4: data = data'; Dawn@4: end Dawn@4: Dawn@4: hs = mean(hopsize); Dawn@4: hops = length(hopsize); Dawn@4: num_f = ceil(length(data)/hs); Dawn@4: rem_f = mod(num_f,hops); Dawn@4: pad = sum(hopsize(1:rem_f)) - (length(data)-(num_f-rem_f)*hs); Dawn@4: data = [data; zeros(pad,1)]; Dawn@4: num_samples = length(data); Dawn@4: fstart = 1; Dawn@4: fftout = []; Dawn@4: NormWindow = sum(window.*window); Dawn@4: spec = (h_specgram2(data,FFTsize,fs,window,hopsize))/sqrt(FFTsize*NormWindow); Dawn@4: fftout = abs(spec); Dawn@4: phase = angle(spec); Dawn@4: % figure(30); imagesc([1 size(fftout(2))],[0 v.fs/2],fftout) Dawn@4: % Need to compensate first and last frames for the zero padding Dawn@4: Dawn@4: if pad Dawn@4: fftout(:,end) = fftout(:,end)*sqrt(windowsize/(windowsize-pad)); Dawn@4: end