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