diff --git a/get_distance.m b/get_distance.m index d45fc052f60cbd231f148e1fe9be0c2ad023d03a..9d8c6378cbace725a83e60e13947db9bed2a86a3 100644 --- a/get_distance.m +++ b/get_distance.m @@ -1,4 +1,4 @@ -function [d_close, ic_mean] = get_distance(signal, thr) +function [d_close, ic_mean] = get_distance(signal, thr, plot_) % function to get the estimated distance from a binaural measurement with % using the interaural coherence @@ -30,9 +30,9 @@ requests = {'ic'}; % Parameters of the auditory filterbank processor fb_type = 'gammatone'; -fb_lowFreqHz = 300; -fb_highFreqHz = 2000; -fb_nChannels = 8; +fb_lowFreqHz = 100; %300 +fb_highFreqHz = 8000; %2k +fb_nChannels = 32; % Parameters of innerhaircell processor ihc_method = 'dau'; @@ -65,16 +65,21 @@ mObj1.processSignal(); % % -plot = 0; +%plot = 0; -if plot +if plot_ % Plot the original ear signal - dObj1.plot([],[],'bGray',1,'decimateRatio',3,'bSignal',1); - ylim([-1.25 1.25]); +% dObj1.plot([],[],'bGray',1,'decimateRatio',3,'bSignal',1); +% ylim([-2^16/2 2^16/2]); % Plot IC dObj1.ic{1}.plot; - title('Interaural coherence (anechoic)') + title('Interaural coherence') + + lims_x = get(gca, 'Xlim'); + lims_y = get(gca, 'Ylim'); + + rectangle('Position',[lims_x(1) 6 sum(abs(lims_x)) 19-6], 'LineWidth',4) % Plot the original ear signal % dObj2.plot([],[],'bGray',1,'decimateRatio',3,'bSignal',1); @@ -90,7 +95,7 @@ ic_Obj = dObj1.ic; ic_Obj = ic_Obj{1}.Data; ic = ic_Obj(:); -ic_mean = mean(mean(ic)); +ic_mean = mean(mean(ic(:,6:19))); if ic_mean >= thr d_close = 1; diff --git a/state_machine.m b/state_machine.m index 6a99e52e5e4fc8a56c31e2e6a964530d6a573848..48bdd0c97f4ee085d7c1892ed42e0610cb9d3bb1 100644 --- a/state_machine.m +++ b/state_machine.m @@ -20,7 +20,7 @@ while(true) end % The angle to the source is small enough, take a step forward - [there, ic] = get_distance(audio, th_dist); + [there, ic] = get_distance(audio, th_dist, 0); if ~there sendPosition.moveRelativePosition('map', step_distance, 0, 0); @@ -30,6 +30,7 @@ while(true) % We are there, analyze the source audio = get_audio(12000); [source_num,source_name] = analyze_source(audio,fs); + [there, ic] = get_distance(audio, th_dist, 1); display('Source label determined') disp(source_name)