annotate _misc/featureextraction/.svn/text-base/myframefft.m~.svn-base @ 9:4ea6619cb3f5 tip

removed log files
author matthiasm
date Fri, 11 Apr 2014 15:55:11 +0100
parents b5b38998ef3b
children
rev   line source
matthiasm@8 1
matthiasm@8 2 % segment audio data into overlapping frames and take fft of each frame
matthiasm@8 3
matthiasm@8 4 function fftframes = myframefft(audiodata, winlength, overlap, windowkind, varargin)
matthiasm@8 5
matthiasm@8 6 if nargin > 4
matthiasm@8 7 nPad = varargin{1};
matthiasm@8 8 zeropadding = true;
matthiasm@8 9 end
matthiasm@8 10
matthiasm@8 11 fprintf(1,'');
matthiasm@8 12
matthiasm@8 13 win = winlength;
matthiasm@8 14
matthiasm@8 15 % Pad audio with zeros so that first analysis frame corresponds with first
matthiasm@8 16 % audio sample
matthiasm@8 17
matthiasm@8 18 pad = zeros((win/2),1);
matthiasm@8 19
matthiasm@8 20 %audiodata = [pad; audiodata; pad];
matthiasm@8 21
matthiasm@8 22 % find size of input
matthiasm@8 23 ilength = length(audiodata);
matthiasm@8 24
matthiasm@8 25
matthiasm@8 26 %pad audio data
matthiasm@8 27 audiodata = [pad; audiodata; pad];
matthiasm@8 28
matthiasm@8 29 % set hop size
matthiasm@8 30 hop = fix(win.*overlap);
matthiasm@8 31
matthiasm@8 32 % set number of windows
matthiasm@8 33 num_win = ceil((ilength+1)/win/overlap);
matthiasm@8 34
matthiasm@8 35 start=1;
matthiasm@8 36
matthiasm@8 37 fftframes = zeros(win,num_win);
matthiasm@8 38
matthiasm@8 39 check = ceil(num_win/10);
matthiasm@8 40
matthiasm@8 41 if windowkind == 'hamming'
matthiasm@8 42 window = hamming(win);
matthiasm@8 43 else
matthiasm@8 44 window = rectwin(win);
matthiasm@8 45 end
matthiasm@8 46
matthiasm@8 47
matthiasm@8 48 % do fft analysis for each window:
matthiasm@8 49 for i = 1 : num_win;
matthiasm@8 50 start = floor(win * overlap * (i-1) + 1);
matthiasm@8 51 if ~zeropadding
matthiasm@8 52 segment = window .* audiodata(start:(start + win - 1));
matthiasm@8 53 fftframes(:,i) = fft(segment, win)';
matthiasm@8 54 else
matthiasm@8 55 segment = [window .* audiodata(start:(start + win - 1)) zeros(nPad*win)];
matthiasm@8 56 fftframes(:,i) = fft(segment, win)';
matthiasm@8 57 end
matthiasm@8 58
matthiasm@8 59 % start = start + hop
matthiasm@8 60
matthiasm@8 61 if mod(i,check) == 0
matthiasm@8 62 fprintf(1,'.');
matthiasm@8 63 end
matthiasm@8 64
matthiasm@8 65 end;
matthiasm@8 66 fprintf(1,'\n');
matthiasm@8 67
matthiasm@8 68