Mercurial > hg > gccphat-windowing
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Functions/gccPHATFunc_win.m Mon Jun 11 17:42:13 2012 +0100 @@ -0,0 +1,35 @@ +function [frameDelayVec]=gccPHATFunc_win(x,frameSize,hopSize,windowShape) +% calculate the GCC-PHAT delay estimation on frames of data +% +% Input: +% - x: stereo audio file. x(:,2) is delayed +% - frameSize: size of frames (samples) +% - hopSize: overlap between frames (samples) +% - windowShape: string passed to window() +% +% Output: +% - frameDelayVec: array of delay estimation for each frame +% +% Developers: - Alice Clifford (alice.clifford@eecs.qmul.ac.uk) + +[xMat,numFrames]=createMat(x,frameSize,hopSize); + +w=repmat(window(windowShape,frameSize),[1 2 numFrames]); + +X=fft(xMat.*w); %FFT of each frame with window applied + +for n=1:numFrames + + %GCC-PHAT + Sxs=X(:,2,n).*conj(X(:,1,n)); + + S=Sxs./abs(Sxs); + + s=ifft(S); + + [dummy,frameDelay]=max(s(1:frameSize/2)); %assume delay in first frameSize/2 samples + + frameDelayVec(n)=frameDelay-1; %compensate for index starting at 1 + + +end