Mercurial > hg > gccphat-windowing
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 |