I'm tring to code a STFT program in Matlab. I got results but I'm confused a bit. I have a audio signal of 900000 pts sampled at 1000Hz (15 min signal). I've taken fft with following parameters =>
hop size of H = 1400 pts
the window length M = H(1400)*6
So, 5/6 of the window overlaps with the next one. The program runs for 637 interation, as (637*1400 + M = 900200)
Now, I get a 637 pt vector with frequency in them. I should get a frequency vs time plot. But it only has 637 frequency bins, for a signal of 900000 time sample.
- How, can I find the change of frequency with Time (900000 sample) or 15 min?
- Moreover, how does changing the window length and overlap affect the outcome of STFT? Thanks The Code is below:
while k + M <= xlen %data chunk %window length & Window xw = x(k+1:k+M) .*w; %windowed signal %zero padding b = 5; %Zero Padding Factor 'b' xw = [xw; zeros(M*5,1)]; [nft,c] = size(xw); %plot(abs(fft(xw)))
X = abs(fft(xw)); XF = X(1:length(X)/2); [q,ind] = max(XF); %take index of Max Amplitude v(j) = ((fs/2)/(nft/2)) * ind; %convert Bin to frequency k = k+L; j = j+1; end