Mercurial > hg > emotion-detection-top-level
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 |