% SUpDEq - Spatial Upsampling by Directional Equalization function [sparseHRTFdataset, sparseHRIRdataset] = supdeq_getSparseDataset(sparseGrid,NmaxSparse,referenceOrder,type) This function returns a sparse HRTF or HRIR dataset by spatial subsampling of a high order reference HRTF dataset of the Neumann KU100 at order N = 35 or N = 44. Output: sparseHRTFdataset - Struct with sparse HRTF dataset. sparseHRIRdataset - Struct with sparse HRIR dataset. Input: sparseGrid - Sparse sampling grid, e.g. created with one of the supdeq grid functions (supdeq_lebedev, supdeq_gauss, etc.) NmaxSparse - Highest stable grid order of sparse grid. Only required for metadata of sparseHRTFdataset struct referenceOrder - Chose N = 35 or N = 44 (SH order used to transform the reference dataset) Default: N = 35 type - Choose between Neumann KU100 (TH Köln), FABIAN (TU Berlin) or HMSII (TH Köln) HRTFs. Define by string 'ku100','fabian',or 'hmsII' Default: 'ku100' Dependencies: SOFiA toolbox, AKtools (C) 2020 by JMA, Johannes M. Arend TH Köln - University of Applied Sciences Institute of Communications Engineering Department of Acoustics and Audio Signal Processing
0001 %% SUpDEq - Spatial Upsampling by Directional Equalization 0002 % 0003 % function [sparseHRTFdataset, sparseHRIRdataset] = supdeq_getSparseDataset(sparseGrid,NmaxSparse,referenceOrder,type) 0004 % 0005 % This function returns a sparse HRTF or HRIR dataset by spatial 0006 % subsampling of a high order reference HRTF dataset of the Neumann KU100 0007 % at order N = 35 or N = 44. 0008 % 0009 % Output: 0010 % sparseHRTFdataset - Struct with sparse HRTF dataset. 0011 % sparseHRIRdataset - Struct with sparse HRIR dataset. 0012 % 0013 % Input: 0014 % sparseGrid - Sparse sampling grid, e.g. created with one of 0015 % the supdeq grid functions (supdeq_lebedev, supdeq_gauss, etc.) 0016 % NmaxSparse - Highest stable grid order of sparse grid. Only 0017 % required for metadata of sparseHRTFdataset struct 0018 % referenceOrder - Chose N = 35 or N = 44 (SH order used to 0019 % transform the reference dataset) 0020 % Default: N = 35 0021 % type - Choose between Neumann KU100 (TH Köln), FABIAN 0022 % (TU Berlin) or HMSII (TH Köln) HRTFs. Define by 0023 % string 'ku100','fabian',or 'hmsII' 0024 % Default: 'ku100' 0025 % 0026 % Dependencies: SOFiA toolbox, AKtools 0027 % 0028 % (C) 2020 by JMA, Johannes M. Arend 0029 % TH Köln - University of Applied Sciences 0030 % Institute of Communications Engineering 0031 % Department of Acoustics and Audio Signal Processing 0032 0033 function [sparseHRTFdataset, sparseHRIRdataset] = supdeq_getSparseDataset(sparseGrid,NmaxSparse,referenceOrder,type) 0034 0035 if nargin < 1 0036 error('Please define a sparse grid.'); 0037 end 0038 0039 if nargin < 2 0040 error('Please define NmaxSparse.'); 0041 end 0042 0043 if nargin < 3 || isempty(referenceOrder) 0044 referenceOrder = 35; 0045 end 0046 0047 if nargin < 4 || isempty(type) 0048 type = 'ku100'; 0049 end 0050 0051 if referenceOrder ~= 35 && referenceOrder ~= 44 0052 error('Reference dataset only available at N = 35 or N = 44.'); 0053 end 0054 0055 %% Get sparse datasets 0056 0057 %Load reference dataset 0058 if referenceOrder == 35 0059 if strcmp(type,'ku100') 0060 referenceHRTFdataset = importdata('HRIRs_sfd_N35.mat'); 0061 end 0062 if strcmp(type,'fabian') 0063 referenceHRTFdataset = importdata('HRIRs_FABIAN_sfd_N35.mat'); 0064 end 0065 if strcmp(type,'hmsII') 0066 referenceHRTFdataset = importdata('HRIRs_HMSII_sfd_N35.mat'); 0067 end 0068 end 0069 if referenceOrder == 44 0070 if strcmp(type,'ku100') 0071 referenceHRTFdataset = importdata('HRIRs_sfd_N44.mat'); 0072 end 0073 if strcmp(type,'fabian') 0074 referenceHRTFdataset = importdata('HRIRs_FABIAN_sfd_N44.mat'); 0075 end 0076 if strcmp(type,'hmsII') 0077 referenceHRTFdataset = importdata('HRIRs_HMSII_sfd_N44.mat'); 0078 end 0079 end 0080 0081 %Get HRTFs from referenceHRTFdataset 0082 [sparseHRTFdataset.HRTF_L, sparseHRTFdataset.HRTF_R] = supdeq_getArbHRTF(referenceHRTFdataset,sparseGrid,'DEG',2,'ak'); 0083 %Fill struct with additional info 0084 sparseHRTFdataset.f = referenceHRTFdataset.f; 0085 sparseHRTFdataset.Nmax = NmaxSparse; 0086 sparseHRTFdataset.FFToversize = referenceHRTFdataset.FFToversize; 0087 sparseHRTFdataset.samplingGrid = sparseGrid; 0088 if isfield(referenceHRTFdataset,'sourceDistance') 0089 sparseHRTFdataset.sourceDistance = referenceHRTFdataset.sourceDistance; 0090 end 0091 0092 %Get HRIRs from referenceHRTFdataset 0093 [sparseHRIRdataset.HRIR_L, sparseHRIRdataset.HRIR_R] = supdeq_getArbHRIR(referenceHRTFdataset,sparseGrid,'DEG',2,'ak'); 0094 sparseHRIRdataset.Nmax = NmaxSparse; 0095 sparseHRIRdataset.samplingGrid = sparseGrid; 0096 if isfield(referenceHRTFdataset,'sourceDistance') 0097 sparseHRIRdataset.sourceDistance = referenceHRTFdataset.sourceDistance; 0098 end 0099 0100 end 0101