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 else
matthiasm@8 10 zeropadding = false;
matthiasm@8 11 end
matthiasm@8 12
matthiasm@8 13 fprintf(1,'');
matthiasm@8 14
matthiasm@8 15 win = winlength;
matthiasm@8 16
matthiasm@8 17 % Pad audio with zeros so that first analysis frame corresponds with first
matthiasm@8 18 % audio sample
matthiasm@8 19
matthiasm@8 20 pad = zeros((win/2),1);
matthiasm@8 21
matthiasm@8 22 %audiodata = [pad; audiodata; pad];
matthiasm@8 23
matthiasm@8 24 % find size of input
matthiasm@8 25 ilength = length(audiodata);
matthiasm@8 26
matthiasm@8 27
matthiasm@8 28 %pad audio data
matthiasm@8 29 audiodata = [pad; audiodata; pad];
matthiasm@8 30
matthiasm@8 31 % set hop size
matthiasm@8 32 hop = fix(win.*overlap);
matthiasm@8 33
matthiasm@8 34 % set number of windows
matthiasm@8 35 num_win = ceil((ilength+1)/win/overlap);
matthiasm@8 36
matthiasm@8 37 start=1;
matthiasm@8 38 if ~zeropadding
matthiasm@8 39 fftframes = zeros(win,num_win);
matthiasm@8 40 else
matthiasm@8 41 fftframes = zeros(win*(nPad+1),num_win);
matthiasm@8 42 end
matthiasm@8 43
matthiasm@8 44 check = ceil(num_win/10);
matthiasm@8 45
matthiasm@8 46 switch windowkind
matthiasm@8 47 case 'hamming'
matthiasm@8 48 window = hamming(win);
matthiasm@8 49 case 'rect'
matthiasm@8 50 window = rectwin(win);
matthiasm@8 51 case 'kaiser'
matthiasm@8 52 window = kaiser(win);
matthiasm@8 53 end
matthiasm@8 54
matthiasm@8 55
matthiasm@8 56 % do fft analysis for each window:
matthiasm@8 57 for i = 1 : num_win;
matthiasm@8 58 start = floor(win * overlap * (i-1) + 1);
matthiasm@8 59 if ~zeropadding
matthiasm@8 60 segment = window .* audiodata(start:(start + win - 1));
matthiasm@8 61 fftframes(:,i) = fft(segment, win)';
matthiasm@8 62 else
matthiasm@8 63 segment = window .* audiodata(start:(start + win - 1));
matthiasm@8 64 fftframes(:,i) = fft(segment, win * (nPad+1))';
matthiasm@8 65 end
matthiasm@8 66
matthiasm@8 67 % start = start + hop
matthiasm@8 68
matthiasm@8 69 if mod(i,check) == 0
matthiasm@8 70 fprintf(1,'.');
matthiasm@8 71 end
matthiasm@8 72
matthiasm@8 73 end;
matthiasm@8 74 fprintf(1,'\n');
matthiasm@8 75
matthiasm@8 76