THE AUDITORY MODELING TOOLBOX

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).

View the help

Go to function

PLOT_KELVASA2015 - Plot figures from Kelvasa and Dietz (2015)

Program code:

function plot_kelvasa2015(data,varargin)
%PLOT_KELVASA2015 Plot figures from Kelvasa and Dietz (2015) 
%   Usage: plot_kelvasa2015('fig8a')
%
%   PLOT_KELVASA2015('fig8a','identifier','BTE','HRTFchannels',[3,4]);
%   plots paper figure 8a using the behind-the-ear
%   microphone channel('BTE')
%          
%   PLOT_KELVASA2015('fig8a',varargin);
%   plots figure data for fig8a with updated model
%   parameters specified as key/value pairs in 'varargin'.
%   NOTE: When re-producing figures with new paramters,
%   'identifier' must be set so previously computed data is not
%   
%        
%   The following flags can be specified;
%
%     'redo'    Recomputes data for specified figure
%
%     'plot'    Plot the output of the experiment. This is the default.
%
%     'noplot'  Don't plot, only return data.
%
%     'fig5'    Reproduce Fig. 5.
%
%     'fig6'    Reproduce Fig. 6.
%
%     'fig8a'    Reproduce Fig. 8a.
%
%     'fig8b'    Reproduce Fig. 8b.
%
%     'fig9a'    Reproduce Fig. 9a.
%
%     'fig10'    Reproduce Fig. 10.
%
%     'fig12'    Reproduce Fig. 12.
%
%   References:
%     D. Kelvasa and M. Dietz. Auditory model-based sound direction
%     estimation with bilateral cochlear implants. Trends in Hearing,
%     19:2331216515616378, 2015.
%     
%
%   Url: http://amtoolbox.sourceforge.net/amt-0.9.9/doc/plot/plot_kelvasa2015.php

% Copyright (C) 2009-2015 Piotr Majdak and the AMT team.
% This file is part of Auditory Modeling Toolbox (AMT) version 0.9.9
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program.  If not, see <http://www.gnu.org/licenses/>.

%   Authors: 
%            Daryl Kelvasa (daryl.kelvasa@uni-oldenburg.de) 2016
%            Mathias Dietz (mdietz@uwo.ca) 2016
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Retrieve and compute model paramters
% Set flags
    
      definput.flags.type = {'missingflag','fig5','fig6','fig7','fig8a',...
                                           'fig8b','fig9a','fig10','fig12'};
      definput.flags.debugging = {'no_debug','debug'};
      definput.flags.plot = {'plot','no_plot'};
      definput.flags.plot_stage_fig = {'no_plot_stage_fig','plot_stage_fig'};
   
    % import default arguments from other functions
    definput.import={'kelvasa2015','amt_cache'};
                        
    [flags,kv]  = 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


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
%% Plot Figure 5 from Kelvasa and Dietz 2015
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if flags.do_fig5

binPos  = [ 10, 13, 16, 19, 22];
levels = 35:70;

%Set plot layout for consecutive plots
rows =  3;
axisHeight = 5;
axisWidth = 7;
xIndent = 4;
yIndent = 1.9;

%Set plot labels
colLabel{1} = {'SSN','\fontsize{18}noHRTF'};
colLabel{2} = {'SSN','\fontsize{18}HRTF'};
colLabel{3} = {'SSN','\fontsize{18}HRTF'};
colLabel{4} = {'Sp','\fontsize{18}noHRTF'};
colLabel{5} = {'Sp','\fontsize{18}HRTF'};
colLabel{6} = {'Sp','\fontsize{18}HRTF'};
colLabel{7} = {'PN','\fontsize{18}noHRTF'};
colLabel{8} = {'PN','\fontsize{18}HRTF'};
colLabel{9} = {'PN','\fontsize{18}HRTF'};
colLabel{10} = {'WN','\fontsize{18}noHRTF'};
colLabel{11} = {'WN','\fontsize{18}HRTF'};
colLabel{12} = {'WN','\fontsize{18}HRTF'};
                       
%Set colors for each bin plot
col = hsv(numel(binPos));    
col(2,:) = col(2,:) + [0.2 -0.5 0];

%Generate Main Figure
mainFig = figure('units','centimeters',...
                        'position',[0 0 37 18.5]);
for axisInd = 1 : 12
                                
%Generate axis
           cornerX = xIndent + axisWidth*(ceil(axisInd/rows)-1);
           if ismember(axisInd,[1,4,7,10]);  cornerY = yIndent;
           elseif ismember(axisInd,[2,5,8,11]);  cornerY = yIndent + axisHeight;
           else ismember(axisInd,[3,6,9,12]);  cornerY = yIndent + 2*axisHeight; 
           end
           
ax(axisInd)= axes          ('Parent',mainFig,...
                            'Units','centimeters',...
                            'ColorOrder',col,... 
                            'Fontsize',22,...
                            'XTick',45:10:65,...
                            'XTickLabel',[],...
                            'XLim',[35 75],...
                            'YTick',150:150:450,...
                            'YTickLabel',[],.....
                            'YLim',[0 500],...
                            'Position',...
                                [cornerX cornerY axisWidth axisHeight]);
                           
                            hold(ax(axisInd),'on')           
                            axis(ax(axisInd),'manual')      
                     
dataInd = [1, 2, 2, 3, 4, 4, 5, 6, 6, 7, 8, 8];                    
% Plot Data
if ismember(axisInd,[3,6,9,12])
    plotData = data(dataInd(axisInd)).currentPerBinPerLevel;
    plotData = plotData.*0.04;
else
    plotData = data(dataInd(axisInd)).spikeRatePerBinPerLevel;
end
plot(ax(axisInd),levels,plotData,'Linewidth',3)
    
%Labels, legend, grid  
               if ismember(axisInd,[3 6 9 12]); labPos = 40;
               else labPos = 410;end
               text(37,labPos,colLabel{axisInd},...
                        'Fontsize',22,'EdgeColor','black');
                    
               if ismember(axisInd,[1 4 7 10])
                    set(ax(axisInd),'XTickLabel',45:10:65);end
                              
               if ismember(axisInd,[3 6 9 12])
                   ylim(ax(axisInd),[0 50])
                    set(ax(axisInd),'YTick',[15,30,45]); 
               end
                
               if ismember(axisInd,[1 2])
                    set(ax(axisInd),'YTickLabel',[150,300,450]); 
               end
   
               if axisInd == 7
                    h = xlabel(ax(axisInd),'Signal Level (dB SPL)');
                    p = get(h,'Position');p(1) = p(1) - 20;
                    set(h,'position',p);
               end
                    
               if axisInd == 3
                    set(ax(axisInd),'YTickLabel',[15,30,45])
                    curTitle = sprintf('Total charge\n (nC)');
                    h =ylabel(ax(axisInd),curTitle,'Fontsize',22);
                    p = get(h,'position'); p = p + [-2.5 0 0];
                    set(h,'position',p);
               end
                    
          
               if axisInd == 1
                    ANTitle = sprintf('AN response rate\n(spikes/sec)');
                    h = ylabel(ax(axisInd),ANTitle,'Fontsize',22);
                    p = get(h,'position'); p = p + [- 1 300 0];
                    set(h,'position',p);
               end
                
end 
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
%% Plot Figure 6 from Kelvasa and Dietz 2015
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if flags.do_fig6

%Set plot layout for consecutive plots
rows =  2;
columns = 3; 
axisHeight = 4.8;
axisWidth = 9;
xIndent = 4.5;
yIndent = 1.9;

%Needed parameters
azis = data(1).azis;
binPos  = [ 10, 13, 16, 19, 22];

%Set plot labels
xAxisLab = 'Azimuthal angle';
yAxisLab1 = 'Right - Left';
yAxisLab3 = 're 0^\circ';
yAxisLab2 = sprintf('AN response rate differences\n(spikes/sec)');  
colLabel{3} = sprintf('SSN\n65dB');
colLabel{2} = sprintf('SSN\n55dB');
colLabel{1} = sprintf('SSN\n45dB');
azisLabels = [num2str((0:30:90)'),repmat('^\circ',numel(0:30:90),1)];
%label = [num2str(binPos'),repmat(('mm'),5,1)];                         

%Set colors for each bin plot
col = hsv(numel(binPos));    
col(2,:) = col(2,:) + [0.2 -0.5 0];

%Generate Main Figure
mainFig = figure('units','centimeters',...
                        'position',[0 0 38 13]);

for axisInd = 1 : rows*columns
%Generate axis
           cornerX = xIndent + axisWidth*(ceil(axisInd/rows)-1) + ...
                        ceil(axisInd/rows)-1;
           if ismember(axisInd,[1,3,5]);  cornerY = yIndent;
           else cornerY = yIndent + axisHeight; end
             
  ax(axisInd)= axes      ('Parent',mainFig,...
                          'units','centimeters',...
                          'ColorOrder',col,...  
                          'Fontsize',24,...
                          'XTick',0:30:90,...
                          'XTickLabel',[],...
                          'XLim',[0 90],...
                          'YTick',0:50:300,...
                          'YTickLabel',[],...
                          'YGrid','on',...
                          'YLim',[-50 350],...
                          'Position',...
                          [cornerX cornerY axisWidth axisHeight]);
                hold(ax(axisInd),'on')           
                axis(ax(axisInd),'manual')  
          
% Process Data
        if ismember(axisInd,[1 2]); results = data(1); 
        elseif ismember(axisInd,[3 4]); results = data(2); 
        else results = data(3); 
        end 

        rghtSpks = (results.SpkSumPerBin + results.SpkDiffPerBin)./2;
        lftSpks = results.SpkSumPerBin - rghtSpks;
  
        rghtSpks = rghtSpks - repmat(rghtSpks(1,:),size(rghtSpks,1),1);
        lftSpks = lftSpks - repmat(lftSpks(1,:),size(rghtSpks,1),1);

                    
% Plot Data
        if ismember(axisInd,[1 3 5])
        plot(ax(axisInd),azis,results.SpkDiffPerBin,...
                  'Linewidth',4);                   
                    
        else 
        plot(ax(axisInd),azis,rghtSpks,...
                  'Linewidth',4,...
                  'Linestyle','--')
                     
        plot(ax(axisInd),azis,lftSpks,...
                  'Linewidth',4);
        end
    
%Labels, legend, grid
      %Grid                   
      plot(ax(axisInd),azis,zeros(numel(azis)),...
                  'Color','black','Linewidth',2,'Linestyle','--');
            
      plot(ax(axisInd),azis,zeros(numel(azis)),...
                  'Color','black','Linewidth',3)

                    
      if ismember(axisInd,[2 4 6])        
                  %axes(ax(axisInd));   
                  text(3,-300,colLabel{axisInd/2},...
                        'Fontsize',24,...
                        'EdgeColor','black',...
                        'BackgroundColor','white');
      end                    
         
      if ismember(axisInd,2:2:6) 
                    ylim(ax(axisInd),[-300 120])
                    set(ax(axisInd),'YTick',-250:50:100);
      end
            
      if ismember(axisInd,2)
                    set(ax(axisInd),'YTickLabel',...
                        [{''},-200,{''},-100,{''}, 0,{''}, 100 ]);
      end
               
      if ismember(axisInd,1)
                    set(ax(axisInd),'YTickLabel',...
                        [0,{''},100,{''},200,{''},300]);
      end
               
      if ismember(axisInd,[1 3 5])
                    set(ax(axisInd),'XTickLabel',azisLabels);
      end
               
      if axisInd == 3
                    h = xlabel(ax(axisInd),xAxisLab);
                    p = get(h,'Position');%p(1) = p(1) - 50;
                    set(h,'position',p);
      end
      
      
      if axisInd == 2
                    h = ylabel(ax(axisInd),yAxisLab2);
                    p = get(h,'Position'); p(1) = p(1) - 5;
                    p(2) = p(2) - 250; set(h,'position',p);
      end

                
      if axisInd == 6
                    %axes(ax(axisInd));
                    text(100,-40,yAxisLab3,'Fontsize',24,...
                             'Rotation',90,...
                             'VerticalAlignment','middle',...
                             'HorizontalAlignment','center');
      end
                    
      if axisInd == 5
                    %axes(ax(axisInd));
                    text(102,150,yAxisLab1,'Fontsize',24,...
                             'Rotation',90,...
                             'VerticalAlignment','middle',...
                             'HorizontalAlignment','center');
      end
                     
end
end


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
%% Plot Figure 7 from Kelvasa and Dietz 2015
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if flags.do_fig7

%Set plot layout for consecutive plots
rows =  1;
columns = 2; 
axisHeight = 5.5;
axisWidth = 11;
xIndent = 4.7;
yIndent = 1.9;

%Needed parameters
azis = 0:5:90;
binPos  = [ 10, 13, 16, 19, 22];

%Set plot labels
xAxisLab = 'Azimuthal angle';
yAxisLab2 = sprintf('AN response\n rate differences\n(spikes/sec)');  
colLabel{1} = sprintf('SSN\n65dB');
colLabel{2} = sprintf('PN\n65dB');
azisLabels = [num2str((0:30:90)'),repmat('^\circ',numel(0:30:90),1)];
%label = [num2str(binPos'),repmat(('mm'),5,1)];                         

%Set colors for each bin plot
col = hsv(numel(binPos));    
col(2,:) = col(2,:) + [0.2 -0.5 0];

%Generate Main Figure
mainFig = figure('units','centimeters',...
                        'position',[0 0 30 8]);

for axisInd = 1 : rows*columns
%Generate axis
           if axisInd == 1; cornerX = xIndent;
           else cornerX = 1.5*xIndent + axisWidth;end
           cornerY = yIndent; 
             
  ax(axisInd)= axes      ('Parent',mainFig,...
                          'units','centimeters',...
                          'ColorOrder',col,...  
                          'Fontsize',24,...
                          'XTick',0:30:90,...
                          'XTickLabel',[],...
                          'XLim',[0 90],...
                          'YLim',[-120 280],...
                          'YTick',-100:50:250,...
                          'YTickLabel',[],...
                          'YGrid','on',...
                          'Position',...
                          [cornerX cornerY axisWidth axisHeight]);
                hold(ax(axisInd),'on')           
                axis(ax(axisInd),'manual')  
          
% Process Data
        results = data(axisInd); 
                    
% Plot Data
        plot(ax(axisInd),azis,results.SpkDiffPerBin,...
                  'Linewidth',4);                   
                    
%Labels, legend, grid
      %Grid                   
      plot(ax(axisInd),azis,zeros(numel(azis)),...
                  'Color','black','Linewidth',2,'Linestyle','--');
            
      plot(ax(axisInd),azis,zeros(numel(azis)),...
                  'Color','black','Linewidth',3)

                            
     axes(ax(axisInd));   
                  text(3,150,colLabel{axisInd},...
                        'Fontsize',24,...
                        'EdgeColor','black',...
                        'BackgroundColor','white');
               
      if ismember(axisInd,1)
                    set(ax(axisInd),'YTickLabel',...
                        [-100,{''},0,{''},100,{''},200,{''}]);
      end
               
      if ismember(axisInd,[1 2])
                    set(ax(axisInd),'XTickLabel',azisLabels);
      end
               
      if axisInd == 1
                    h = xlabel(ax(axisInd),xAxisLab);
                    p = get(h,'Position');p(1) = p(1) + 50;
                    set(h,'position',p);
      end
      
      
      if axisInd == 1
                    h = ylabel(ax(axisInd),yAxisLab2);
      end

               
end
end


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
%% Plot Figure 8a, 8b, 9a from Kelvasa and Dietz 2015
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if flags.do_fig8a || flags.do_fig8b || flags.do_fig9a

%Set plot layout for consecutive plots
axisHeight = 3.8;
axisWidth1 = 3.8;
axisWidth2 = 1; 
xIndent = 2.3;
yIndent = 2;

%Set plot labels
xAxisLab =  'Target angle';  
yAxisLab = 'Predicted angle';  
axisLabel = {'45dB','22mm','16mm','10mm','65dB','55dB','19mm','13mm'};
azisLabels = {'0^\circ','30^\circ','60^\circ','90^\circ'};

%Set colors for each bin plot
col = hsv(5);    
col(2,:) = col(2,:) + [0.2 -0.5 0];

%Generate Main Figure
% mainFig = figure('units','centimeters',...
%                         'position',[1 1 12 28.5]);
mainFig = figure('units','normalized',...
                        'position',[0.05 0.05 0.5 0.9]);
                    
binPlotInd = [3,5,7,13,15]; binPlotMap(binPlotInd) = [5,3,1,4,2];

for axisInd = 1 : 2: 16
 
%Generate axis
        if ismember(axisInd,1:8); cornerX = xIndent; end 
        if ismember(axisInd,9:16); cornerX = xIndent + axisWidth1 +...
                                            axisWidth2; end 
        if ismember(axisInd,[1 9]); cornerY = yIndent; end 
        if ismember(axisInd,[3 11]); cornerY = yIndent + axisHeight; end 
        if ismember(axisInd,[5 13]); cornerY = yIndent + 2*axisHeight; end 
        if ismember(axisInd,[7 15]); cornerY = yIndent + 3*axisHeight; end 
 

ax(axisInd)=axes('Parent',mainFig,...
                'units','centimeters',...
                'fontsize', 24,...
                'xlim',[-10 100],...
                'ylim',[-10 100],...
                'XTick',0:30:90,...
                'XTickLabel',[],...
                'YTick',0:30:90,...
                'YTickLabel',[],...
                'Position',...
                [cornerX cornerY axisWidth1 axisHeight]);
                hold(ax(axisInd),'on')           
                axis(ax(axisInd),'manual')
                grid(ax(axisInd),'on')
             

          
ax(axisInd+1)=axes('Parent',mainFig,...
                 'units','centimeters',...
                 'xlim',[-10 100],...
                 'ylim',[0 20],...
                  'View',[90 -90],...
                 'Color',get(gcf,'color'),...
                 'xcolor',get(gcf,'color'),...
                 'ycolor',get(gcf,'color'),...
                 'color',get(gcf,'color'),...
                 'ytick',[],...
                 'xtick',[],...
                 'position',[cornerX+axisWidth1 cornerY ...
                    axisWidth2 axisHeight]);
                hold(ax(axisInd+1),'on')
                axis(ax(axisInd+1),'manual')
         
         
%Process data 
        
        if axisInd == 1; 
            predictions = data(1); color = 'black'; 
            predictions = predictions.groupedWeightedPrediction;
        end
        if axisInd == 9; 
            predictions = data(3); color = 'black'; 
            predictions = predictions.groupedWeightedPrediction; 
        end
        if axisInd == 11; 
            predictions= data(2);color = 'black'; 
            predictions = predictions.groupedWeightedPrediction; 
        end
        if ismember(axisInd,binPlotInd);  
            predictions = data(2);
            predictions = ...
               predictions.groupedBinPredictions{binPlotMap(axisInd)}; 
            color = col(binPlotMap(axisInd),:); 
        end
               
      rmsError = sqrt(sum((predictions(1,:) - ...
                                        predictions(3,:)).^2.*...
                                            predictions(2,:))./...
                                            sum(predictions(2,:)));

%Plot data
        scatter(predictions(3,:),predictions(1,:),...
            predictions(2,:).*3,color,'Linewidth',2,'Parent',ax(axisInd)) 
             
        hist(ax(axisInd+1),predictions(1,:),-10:5:100)
        h = findobj(ax(axisInd+1),'Type','patch');
        set(h,'FaceColor',color);
        set(h,'EdgeColor','black');
   
%Labels, legend, grid
         plot(ax(axisInd),-10:100,-10:100,'linestyle','-',...
                        'color','black')
                    
         axes(ax(axisInd))
         text(45,5,[num2str(round(rmsError)),'^\circ'],...
                        'Fontsize',24)

         text(-8,85,axisLabel{ceil(axisInd/2)},...
                        'Fontsize',18,...
                        'Edgecolor','black',...
                        'BackgroundColor','white')  
            
         if ismember(axisInd,1:2:8)
                        set(ax(axisInd),...
                        'YTickLabel',azisLabels,...
                        'Fontsize',20);
         end
               
         if ismember(axisInd,[1,9])
                       set(ax(axisInd),...
                       'XTickLabel',azisLabels,...
                       'Fontsize',20);
         end
               
         if axisInd == 9
                    h = xlabel(ax(axisInd),xAxisLab);
                    p = get(h,'Position');p(2) = p(2)-5;
                    p(1) = p(1)-60; set(h,'position',p);
         end
                
         if axisInd == 5
                    h = ylabel(ax(axisInd),yAxisLab);
                    p = get(h,'Position');p = p + [0 -65 0];
                    set(h,'position',p);
         end                 
end       
end


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
%% Plot Figure 10 from Kelvasa and Dietz 2015
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if flags.do_fig10


%Set plot layout for consecutive plots
axisHeight = 6;
axisWidth1 = 6;
axisWidth2 = 1; 
xIndent = 2.4;
yIndent = 1.7;

%Set plot labels
xAxisLab =  'Target angle';  
yAxisLab = 'Predicted angle';  
azisLabels = {'0^\circ','30^\circ','60^\circ','90^\circ'};
axisLabel = {{'\fontsize{16}Continuous','Speech', '10s'},...
             {'\fontsize{16}Sp 55dB','200 ms'},...
             {'\fontsize{16}Continuous','Speech', '10s'},...
             {'\fontsize{16}Sp 55dB','200 ms'}};

%Generate Main Figure
mainFig = figure('units','centimeters',...
                        'position',[0 0 17 16]);
                    
for axisInd = 1 : 2: 8
 
%Generate axis
        if ismember(axisInd,1:4); cornerX = xIndent; end 
        if ismember(axisInd,5:8); cornerX = xIndent + axisWidth1 +...
                                            axisWidth2; end 
        if ismember(axisInd,[1,5]); cornerY = yIndent; end  
        if ismember(axisInd,[3,7]); cornerY = yIndent + axisHeight; end  


ax(axisInd)=axes('Parent',mainFig,...
                'units','centimeters',...
                'fontsize', 24,...
                'xlim',[-10 100],...
                'ylim',[-10 100],...
                'XTick',0:30:90,...
                'XTickLabel',[],...
                'YTick',0:30:90,...
                'YTickLabel',[],...
                'Position',...
                [cornerX cornerY axisWidth1 axisHeight]);
                hold(ax(axisInd),'on')           
                axis(ax(axisInd),'manual')
                grid(ax(axisInd),'on')
             

          
ax(axisInd+1)=axes('Parent',mainFig,...
                 'units','centimeters',...
                 'xlim',[-10 100],...
                 'ylim',[0 20],...
                  'View',[90 -90],...
                 'Color',get(gcf,'color'),...
                 'xcolor',get(gcf,'color'),...
                 'ycolor',get(gcf,'color'),...
                 'color',get(gcf,'color'),...
                 'ytick',[],...
                 'xtick',[],...
                 'position',[cornerX+axisWidth1 cornerY ...
                    axisWidth2 axisHeight]);
                hold(ax(axisInd+1),'on')
                axis(ax(axisInd+1),'manual')
         
         
%Process data 
         
            predictions = data((axisInd+1)/2);
            predictions = ...
               predictions.groupedWeightedPrediction; 
            color = 'black'; 
               
            rmsError = sqrt(sum((predictions(1,:) - ...
                                        predictions(3,:)).^2.*...
                                            predictions(2,:))./...
                                            sum(predictions(2,:)));

%Plot data
        scatter(predictions(3,:),predictions(1,:),...
            predictions(2,:).*3,color,'Linewidth',2,'Parent',ax(axisInd)) 
             
        hist(ax(axisInd+1),predictions(1,:),-10:5:100)
        h = findobj(ax(axisInd+1),'Type','patch');
        set(h,'FaceColor',color);
        set(h,'EdgeColor','black');
   
%Labels, legend, grid
         plot(ax(axisInd),-10:100,-10:100,'linestyle','-',...
                        'color','black')
                    
         axes(ax(axisInd))
         text(45,5,[num2str(round(rmsError)),'^\circ'],...
                        'Fontsize',24)

         text(-8,80,axisLabel{ceil(axisInd/2)},...
                        'Fontsize',18,...
                        'Edgecolor','black',...
                        'BackgroundColor','white')  
            
         if ismember(axisInd,[1,3])
                        set(ax(axisInd),...
                        'YTickLabel',azisLabels,...
                        'Fontsize',20);
         end
               
         if ismember(axisInd,[1,5])
                       set(ax(axisInd),...
                       'XTickLabel',azisLabels,...
                       'Fontsize',20);
         end
               
         if axisInd == 1
                    h = xlabel(ax(axisInd),xAxisLab);
                    p = get(h,'Position');
                    p(1) = p(1)+55; set(h,'position',p);
         end
                
         if axisInd == 1
                    h = ylabel(ax(axisInd),yAxisLab);
                    p = get(h,'Position');
                    p(2) = p(2)+55; set(h,'position',p);
         end     
         
         if axisInd == 3
            title({'AN Response','difference m90'})
         end     
         if axisInd == 7
            title({'MLE'})
         end 
end

end




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
%% Plot Figure 12 from Kelvasa and Dietz 2015
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if flags.do_fig12
 

%Set plot layout for consecutive plots
axisHeight = 6;
axisWidth1 = 6;
axisWidth2 = 1; 
xIndent = 2.4;
yIndent = 1.7;

%Set plot labels
xAxisLab =  ('Target angle');  
yAxisLab = ('Predicted angle');  
axisLabel = {'SSN',{'SSN','5dB SNR'}};
azisLabels = {'0^\circ','30^\circ','60^\circ','90^\circ'};

%Set colors for each bin plot
col = hsv(5);    
col(2,:) = col(2,:) + [0.2 -0.5 0];

%Generate Main Figure
mainFig = figure('units','centimeters',...
                        'position',[0 0 17 8]);
                    
for axisInd = 1 : 2: 4
 
%Generate axis
        if ismember(axisInd,1:2); cornerX = xIndent; end 
        if ismember(axisInd,3:4); cornerX = xIndent + axisWidth1 +...
                                            axisWidth2; end 
        if ismember(axisInd,1:4); cornerY = yIndent; end  


ax(axisInd)=axes('Parent',mainFig,...
                'units','centimeters',...
                'fontsize', 24,...
                'xlim',[-10 100],...
                'ylim',[-10 100],...
                'XTick',0:30:90,...
                'XTickLabel',[],...
                'YTick',0:30:90,...
                'YTickLabel',[],...
                'Position',...
                [cornerX cornerY axisWidth1 axisHeight]);
                hold(ax(axisInd),'on')           
                axis(ax(axisInd),'manual')
                grid(ax(axisInd),'on')
             

          
ax(axisInd+1)=axes('Parent',mainFig,...
                 'units','centimeters',...
                 'xlim',[-10 100],...
                 'ylim',[0 20],...
                  'View',[90 -90],...
                 'Color',get(gcf,'color'),...
                 'xcolor',get(gcf,'color'),...
                 'ycolor',get(gcf,'color'),...
                 'color',get(gcf,'color'),...
                 'ytick',[],...
                 'xtick',[],...
                 'position',[cornerX+axisWidth1 cornerY ...
                    axisWidth2 axisHeight]);
                hold(ax(axisInd+1),'on')
                axis(ax(axisInd+1),'manual')
         
         
%Process data 
         
            predictions = data((axisInd+1)/2);
            predictions = ...
               predictions.groupedWeightedPrediction; 
            color = 'black'; 
               
            rmsError = sqrt(sum((predictions(1,:) - ...
                                        predictions(3,:)).^2.*...
                                            predictions(2,:))./...
                                            sum(predictions(2,:)));

%Plot data
        scatter(predictions(3,:),predictions(1,:),...
            predictions(2,:).*3,color,'Linewidth',2,'Parent',ax(axisInd)) 
             
        hist(ax(axisInd+1),predictions(1,:),-10:5:100)
        h = findobj(ax(axisInd+1),'Type','patch');
        set(h,'FaceColor',color);
        set(h,'EdgeColor','black');
   
%Labels, legend, grid
         plot(ax(axisInd),-10:100,-10:100,'linestyle','-',...
                        'color','black')
                    
         axes(ax(axisInd))
         text(45,5,[num2str(round(rmsError)),'^\circ'],...
                        'Fontsize',24)

         text(-8,85,axisLabel{ceil(axisInd/2)},...
                        'Fontsize',18,...
                        'Edgecolor','black',...
                        'BackgroundColor','white')  
            
         if ismember(axisInd,1)
                        set(ax(axisInd),...
                        'YTickLabel',azisLabels,...
                        'Fontsize',20);
         end
               
         if ismember(axisInd,[1,3])
                       set(ax(axisInd),...
                       'XTickLabel',azisLabels,...
                       'Fontsize',20);
         end
               
         if axisInd == 1
                    h = xlabel(ax(axisInd),xAxisLab);
                    p = get(h,'Position');
                    p(1) = p(1)+55; set(h,'position',p);
         end
                
         if axisInd == 1
                    h = ylabel(ax(axisInd),yAxisLab);
         end                 
end              

end
end