------------------------------------------------------------
function errorbar(x, y, l,u,symbol)
%ERRORBAR Plot graph with error bars.
% ERRORBAR(X,Y,L,U,SYMBOL) plots the graph of vector X
% vs. vector Y with error bars specified by the vectors
% L and U. The vectors X,Y,L and U must be the same
% length. If X,Y, L and U are matrices then each column
% produces a separate line. The error bars are each drawn
% a distance of U(i) above and L(i) below the points in
% (X,Y) so that each bar is L(i) + U(i) long. SYMBOL is
% a string that controls the line type, plotting symbols
% and color for the X-Y plot.
%
% ERRORBAR(X,Y,L) plots X versus Y with an error bar that
% is symmetric about Y and is 2*L(i) long.
%
% ERRORBAR(Y,L) plots Y with error bars [Y-L Y+L].
%
% For example,
%
% x = 1:10;
% y = sin(x);
% e = std(y)*ones(size(x));
% errorbar(x,y,e)
%
% draws symmetric error bars of unit standard deviation.
% L. Shure 5-17-88, 10-1-91 B.A. Jones 4-5-93
% Copyright (c) 1984-93 by The MathWorks, Inc.
if min(size(x))==1,
npt = length(x);
x = x(:);
y = y(:);
if nargin == 3,
l = l(:);
elseif nargin == 4 | nargin == 5
l = l(:);
u = u(:);
end
else
[npt,n] = size(x);
end
if nargin == 3,
u = l;
end
if nargin == 2
l = y;
u = y;
y = x;
[m,n] = size(y);
x(:) = [1:npt]'*ones(1,n);;
end
if isstr(x) | isstr(y) | isstr(l) | isstr(u)
error('Arguments must be numeric.')
end
if any(size(x)~=size(y)) | any(size(x)~=size(l)) |
any(size(x)~=size(u)),
error('The sizes of X, Y, L and U must be the same.');
end
tee = (max(x(:))-min(x(:)))/100; % make tee .02
% x-distance for
% error bars
xl = x - tee;
xr = x + tee;
n = size(y,2);
% Plot graph and bars
cax = newplot;
next = lower(get(cax,'NextPlot'));
% build up nan-separated vector for bars
xb = [];
yb = [];
nnan = nan*ones(1,n);
for i = 1:npt
ytop = y(i,:) + u(i,:);
ybot = y(i,:) - l(i,:);
xb = [xb; x(i,:); x(i,:) ; nnan;
xl(i,:);xr(i,:);nnan;xl(i,:);xr(i,:);nnan];
yb = [yb; ytop;ybot;nnan;ytop;ytop;nnan;ybot;ybot;nnan];
end
% MODIFIED 04/01/94 BY JOHN L. GALENSKI III
% IF X AND Y ARE MxN ARRAYS, MATLAB WILL CYCLE
% THROUGHT COLORS ON A COLOR MONITOR IF 'SYMBOL'
% IS NOT GIVEN. ON A MONOCHROME MONITOR, MATLAB
% WILL CYCLE THROUGH THE LINE STYLES DEFINED IN
% THE AXES 'LineStyleOrder' PROPERTY.
if nargin ~= 5 & min(size(x)) == 1 & min(size(y)) == 1
symbol = '-';
plot(xb,yb,x,y,symbol)
else
plot(xb,yb,x,y)
end
(c) Copyright 1994 by The MathWorks, Inc.