blob: 47f7be7b20d5af85dd471a795f44b74b1505baf5 [file]
function plot_distribution(varargin)
% PLOT_DISTRIBUTION(X,Y) - Plots the mean with standard deviation errors as a shaded region in the open
% figure window.
% Inputs:
% X: vector of n domain values (the x-axis).
% Y: mxn matrix of distribution of range values (the y-axis), where m
% corresponds to the number of data samples for each value n.
%
% PLOT_DISTRIBUTION(X,Y,...)
% Parameter options include:
% 'Alpha': the alpha value of the shaded region, default 0.15.
% 'Color': the shaded region color.
% 'LineWidth': the contour line width, default = 2.0.
[X,Y,color_value,alpha_value,line_width] = parseinputs(varargin{:});
MU = mean(Y);
SIGMA = std(Y);
hold on
% Create the polygons for the shaded region
Ptop = MU+SIGMA;
Pbot = MU-SIGMA;
for i=1:numel(X)-1
Px = [X(i) X(i+1) X(i+1) X(i)];
Py = [Ptop(i) Ptop(i+1) Pbot(i+1) Pbot(i)];
fill(Px,Py,color_value,'FaceAlpha',alpha_value,'EdgeColor','none');
end
plot(X,MU,'LineWidth',line_width,'Color',color_value);
hold off
end
function [X,Y,color_value,alpha_value,line_width] = parseinputs(varargin)
% Check the number of input args
minargs = 2;
numopts = 3;
maxargs = minargs + 2*numopts;
narginchk(minargs,maxargs);
ax = gca;
% Set the defaults
alpha_value = 0.15;
color_value = ax.ColorOrder(ax.ColorOrderIndex,:);
line_width = 2.0;
% Get the inputs and check them
X = varargin{1};
validateattributes(X,{'numeric'},{'vector','nonnan','finite'},mfilename,'X',2);
Y = varargin{2};
validateattributes(Y,{'numeric'},{'2d','nonnan','finite','ncols',numel(X)},mfilename,'Y',2);
if nargin > minargs
for i=(minargs+1):2:nargin
PNAME = varargin{i};
PVALUE = varargin{i+1};
PNAME = validatestring(PNAME,{'Alpha','Color','LineWidth','Prctile'},...
mfilename,'ParameterName',i);
switch PNAME
case 'Alpha'
validateattributes(PVALUE,{'numeric'},{'scalar','nonnan','finite','nonnegative','<=',1.0},mfilename,PNAME,i+1);
alpha_value = PVALUE;
case 'Color'
validateattributes(PVALUE,{'numeric'},{'real','nonnegative','nonempty','vector','numel',3,'<=',1.0},mfilename,PNAME,i+1);
color_value = PVALUE;
case 'LineWidth'
validateattributes(PVALUE,{'numeric'},{'scalar','finite','nonnegative'},...
mfilename,PNAME,i+1);
line_width = PVALUE;
end
end
end
end