annotate Functions/gccPHATFunc_win.m @ 0:ab043bd3b162 tip

First commit
author Alice Clifford <alice.clifford@eecs.qmul.ac.uk>
date Mon, 11 Jun 2012 17:42:13 +0100
parents
children
rev   line source
alice@0 1 function [frameDelayVec]=gccPHATFunc_win(x,frameSize,hopSize,windowShape)
alice@0 2 % calculate the GCC-PHAT delay estimation on frames of data
alice@0 3 %
alice@0 4 % Input:
alice@0 5 % - x: stereo audio file. x(:,2) is delayed
alice@0 6 % - frameSize: size of frames (samples)
alice@0 7 % - hopSize: overlap between frames (samples)
alice@0 8 % - windowShape: string passed to window()
alice@0 9 %
alice@0 10 % Output:
alice@0 11 % - frameDelayVec: array of delay estimation for each frame
alice@0 12 %
alice@0 13 % Developers: - Alice Clifford (alice.clifford@eecs.qmul.ac.uk)
alice@0 14
alice@0 15 [xMat,numFrames]=createMat(x,frameSize,hopSize);
alice@0 16
alice@0 17 w=repmat(window(windowShape,frameSize),[1 2 numFrames]);
alice@0 18
alice@0 19 X=fft(xMat.*w); %FFT of each frame with window applied
alice@0 20
alice@0 21 for n=1:numFrames
alice@0 22
alice@0 23 %GCC-PHAT
alice@0 24 Sxs=X(:,2,n).*conj(X(:,1,n));
alice@0 25
alice@0 26 S=Sxs./abs(Sxs);
alice@0 27
alice@0 28 s=ifft(S);
alice@0 29
alice@0 30 [dummy,frameDelay]=max(s(1:frameSize/2)); %assume delay in first frameSize/2 samples
alice@0 31
alice@0 32 frameDelayVec(n)=frameDelay-1; %compensate for index starting at 1
alice@0 33
alice@0 34
alice@0 35 end