This documentation page applies to an outdated major AMT version. We show it for archival purposes only.
Click here for the documentation menu and here to download the latest AMT (1.6.0).
function data = data_baumgartner2013(varargin)
%DATA_BAUMGARTNER2013 Data from Baumgartner et al. (2013)
% Usage: data = data_baumgartner2013(flag)
%
% `data_baumgartner2013(flag)` returns data of the table or
% the pool of listener-specific models from Baumgartner et al. (2013)
% describing a model for sound localization in sagittal planes (SPs)
% on the basis of listener-specific directional transfer functions (DTFs).
%
% The flag may be one of:
%
% 'tab1' Calibration data for listener pool listed in Table 1. The
% output contains the following fields: *id*, *u*, *goupell10* and
% *walder10*
%
% 'ari' DTFs and calibration data of the pool. The output contains the
% following fields: *id*, *u*, *goupell10*, *walder10*, *dtfs*,
% *fs* and *pos*
%
% 'pool' DTFs and calibration data of the pool. The output contains the
% following fields: *id*, *u*, *goupell10*, *walder10*, *fs*
% and *Obj*.
%
% The fields in the output contains the following information
%
% .id listener ID
%
% .u listener-specific uncertainty
%
% .goupell10 boolean flag indicating whether listener
% participated in Goupell et al. (2010)
%
% .walder10 boolean flag indicating whether listener
% participated in Walder (2010)
%
% .dtfs matrix containing DTFs.
% Dimensions: time, position, channel
% (more details see doc: HRTF format)
%
% .fs sampling rate of impulse responses
%
% .pos source-position matrix referring to
% 2nd dimension of hM and formated acc.
% to meta.pos (ARI format).
% 6th col: lateral angle
% 7th col: polar angle
%
% .Obj DTF data in SOFA Format
%
% Examples:
% ---------
%
% To get calibration data of pool of listener-specific models, use::
%
% data_baumgartner2013('tab1');
%
% To get all listener-specific data of the pool, use::
%
% data_baumgartner2013('pool');
%
% See also: baumgartner2013, exp_baumgartner2013
%
% References: baumgartner2013assessment baumgartner2012modelling
% AUTHOR : Robert Baumgartner
%% ------ Check input options --------------------------------------------
% Define input flags
definput.flags.type = {'missingflag','tab1','pool'};
definput.flags.HRTFformat = {'sofa','ari'};
% Parse input options
[flags,keyvals] = ltfatarghelper({},definput,varargin);
if flags.do_missingflag
flagnames=[sprintf('%s, ',definput.flags.type{2:end-2}),...
sprintf('%s or %s',definput.flags.type{end-1},definput.flags.type{end})];
error('%s: You must specify one of the following flags: %s.',upper(mfilename),flagnames);
end;
%% Table 1 (model calibration)
if flags.do_tab1 || flags.do_pool
listeners={ ...
'NH12' 1.6 true true; ...
'NH15' 2.0 true true; ...
'NH21' 1.8 true false; ...
'NH22' 2.0 true false; ...
'NH33' 2.3 true false; ...
'NH39' 2.3 true true; ...
'NH41' 3.0 true false; ...
'NH42' 1.8 true false; ...
'NH43' 1.9 false true; ...
'NH46' 1.8 false true; ...
'NH55' 2.0 false true; ...
'NH58' 1.4 false true; ...
'NH62' 2.2 false true; ...
'NH64' 2.1 false true; ...
'NH68' 2.1 false true; ...
'NH71' 2.1 false true; ...
'NH72' 2.2 false true; ...
};
f={'id', 'u', 'goupell10', 'walder10'};
data=cell2struct(listeners,f,2);
end
%% Listener pool (listener-specific SP-DTFs)
if flags.do_pool % load also DTFs of SPs
% sort acc. to ascending exp. PE
data = data([12,1,10,3,14,16,8,9,4,2,7,15,17,5,11,6,13]);
if flags.do_ari
hpath = which('hrtfinit'); % find local path of hrtf repository
hpath = hpath(1:end-10);
sl = hpath(end); % slash sign (OS dependent)
if exist([hpath 'hrtf_M_baumgartner2013'],'dir') ~= 7
fprintf([' Sorry! Before you can run this script, you have to download the HRTF Database from \n http://www.kfs.oeaw.ac.at/hrtf/database/amt/baumgartner2013.zip , \n unzip it, and move it into your HRTF repository \n ' hpath ' .\n' ' Then, press any key to quit pausing. \n'])
pause
end
hpath = [hpath sl 'hrtf_M_baumgartner2013' sl];
for ii = 1:length(data)
load([hpath 'hrtf_M_baumgartner2013 ' data(ii).id])
data(ii).fs = stimPar.SamplingRate;
data(ii).pos = meta.pos;
data(ii).dtfs = double(hM);
end
end
if flags.do_sofa
for ii = 1:length(data)
filename = fullfile(SOFAdbPath,'baumgartner2013',...
['ARI_' data(ii).id '_hrtf_M_dtf 256.sofa']);
% if exist(filename,'file') ~= 2
% fprintf([' Sorry! Before you can run this script, you have to download the HRTF Database from \n http://www.kfs.oeaw.ac.at/hrtf/database/amt/SOFA_baumgartner2013.zip , \n unzip it, and move the folder into your HRTF repository \n ' SOFAdbPath ' .\n' ' Then, press any key to quit pausing. \n'])
% pause
% end
data(ii).Obj = SOFAload(filename);
data(ii).fs = data(ii).Obj.Data.SamplingRate;
end
end
end
end