view 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 source
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