Applies to version: 1.1.0

View the code

Go to function

ITDESTIMATOR - Estimate ITD from a binaural signal


itd = itdestimator(data,mode,threshlvl,lowpass,butterpoly,upper_cutfreq)

Input parameters

SOFA object or IR matrix with dimensions:
emitter x receiver x time
fs sampling rate, used only if data provided as matrix

(optional) Select one estimation methods ('Threshold' (default),'Cen_e2','MaxIACCr', 'MaxIACCe', 'CenIACCr','CenIACCe', 'CenIACC2e', 'PhminXcor','IRGD')

For details concerning estimation methods see: ''

lowpass (optional) Bandwidth considered. 'lp' for lowpass (default), 'bb' for broadband
peak (optional) Method to find the max, used in Threshold mode only. 'hp' for max (default), 'fb' for findpeak
threshlvl (optional) Set threshold level for 'Threshold' mode in dB. Default is -10 dB.
butterpoly (optional) Select the order of the polynom applied in the butterworth filter. ( 2 =< i =< 10 ) Default is 10.
upper_cutfreq (optional) Set frequency of lowpass cutoff in Hz. Default is 3000 Hz.
lower_cutfreq (optional) Set frequency of highpass cutoff in Hz, only used in IRGD mode. Default is 1000 Hz.
output debug information about calculations.

Output parameters

itd interaural time difference in seconds
toa detected activation onsets for left and right channels
IACC interaural cross-correlation coefficient Available on when xcorr is used (modes: 'MaxIACCr', 'MaxIACCe', 'CenIACCr','CenIACCe', 'CenIACC2e')


Purpose: Estimates the ITD based on biaural impulse responses. Several different estimaton methods can be chosen. MaxIAACe is recommended.


  1. SOFA API from for Matlab (in e.g. thirdparty/SOFA)


Obj = SOFAload(fullfile(SOFAdbPath,'baumgartner2017','hrtf b_nh15.sofa')); toa_diff = itdestimator(Obj,'MaxIACCe','lp','upper_cutfreq',3000)

With these settings the estimator uses the MaxIAAce method and applies a lowpass with a cut off frequency of 3 kHz.

The output array is structured as the SOFA Data.IR If you would like to select for example only data on the horizontal plane you could:

plane_idx = find( Obj.SourcePosition(:,2) == 0 ); plane_angle = Obj.SourcePosition(plane_idx,1);