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');
+
+