annotate Code/Descriptors/Matlab/MPEG7/FromWeb/mpeg7getspec.m @ 4:92ca03a8fa99 tip

Update to ICASSP 2013 benchmark
author Dawn Black
date Wed, 13 Feb 2013 11:02:39 +0000
parents
children
rev   line source
Dawn@4 1 % Modified 30/04/2002 by Thorsten Kastner - zero pad (length overlap) at start and end for overlap removed;
Dawn@4 2 % because: there's no overlap in ASF
Dawn@4 3 function [fftout,phase] = mpeg7getspec( data, fs, hopsize, windowsize, window, FFTsize)
Dawn@4 4 % data = data(1:5004);
Dawn@4 5 if size(data,1)==1
Dawn@4 6 data = data';
Dawn@4 7 end
Dawn@4 8
Dawn@4 9 hs = mean(hopsize);
Dawn@4 10 hops = length(hopsize);
Dawn@4 11 num_f = ceil(length(data)/hs);
Dawn@4 12 rem_f = mod(num_f,hops);
Dawn@4 13 pad = sum(hopsize(1:rem_f)) - (length(data)-(num_f-rem_f)*hs);
Dawn@4 14 data = [data; zeros(pad,1)];
Dawn@4 15 num_samples = length(data);
Dawn@4 16 fstart = 1;
Dawn@4 17 fftout = [];
Dawn@4 18 NormWindow = sum(window.*window);
Dawn@4 19 spec = (h_specgram2(data,FFTsize,fs,window,hopsize))/sqrt(FFTsize*NormWindow);
Dawn@4 20 fftout = abs(spec);
Dawn@4 21 phase = angle(spec);
Dawn@4 22 % figure(30); imagesc([1 size(fftout(2))],[0 v.fs/2],fftout)
Dawn@4 23 % Need to compensate first and last frames for the zero padding
Dawn@4 24
Dawn@4 25 if pad
Dawn@4 26 fftout(:,end) = fftout(:,end)*sqrt(windowsize/(windowsize-pad));
Dawn@4 27 end