Mercurial > hg > mauch-mirex-2010
diff _misc/featureextraction/.svn/text-base/myframefft.m~.svn-base @ 8:b5b38998ef3b
added all that other stuff
author | matthiasm |
---|---|
date | Fri, 11 Apr 2014 15:54:25 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/_misc/featureextraction/.svn/text-base/myframefft.m~.svn-base Fri Apr 11 15:54:25 2014 +0100 @@ -0,0 +1,68 @@ + +% segment audio data into overlapping frames and take fft of each frame + +function fftframes = myframefft(audiodata, winlength, overlap, windowkind, varargin) + +if nargin > 4 + nPad = varargin{1}; + zeropadding = true; +end + +fprintf(1,''); + +win = winlength; + +% Pad audio with zeros so that first analysis frame corresponds with first +% audio sample + +pad = zeros((win/2),1); + +%audiodata = [pad; audiodata; pad]; + +% find size of input +ilength = length(audiodata); + + +%pad audio data +audiodata = [pad; audiodata; pad]; + +% set hop size +hop = fix(win.*overlap); + +% set number of windows +num_win = ceil((ilength+1)/win/overlap); + +start=1; + +fftframes = zeros(win,num_win); + +check = ceil(num_win/10); + +if windowkind == 'hamming' + window = hamming(win); +else + window = rectwin(win); +end + + +% do fft analysis for each window: +for i = 1 : num_win; + start = floor(win * overlap * (i-1) + 1); + if ~zeropadding + segment = window .* audiodata(start:(start + win - 1)); + fftframes(:,i) = fft(segment, win)'; + else + segment = [window .* audiodata(start:(start + win - 1)) zeros(nPad*win)]; + fftframes(:,i) = fft(segment, win)'; + end + +% start = start + hop + + if mod(i,check) == 0 + fprintf(1,'.'); + end + +end; +fprintf(1,'\n'); + +