Switch to side-by-side view

--- a
+++ b/Supporting Functions/kakearney-boundedline-pkg-8179f9a/singlepatch/singlepatch.m
@@ -0,0 +1,65 @@
+function varargout = singlepatch(varargin)
+%SINGLEPATCH Concatenate patches to be plotted as one
+%
+% [xp, yp, zp, ...] = singlepatch(x, y, z, ...)
+%
+% Concatenates uneven vectors of x and y coordinates by replicating the
+% last point in each polygon.  This allows patches with different numbers
+% of vertices to be plotted as one, which is often much, much more
+% efficient than plotting lots of individual patches.  
+%
+% Input variables:
+%
+%   x:   cell array, with each cell holding a vector of coordinates
+%        associates with a single patch.  The input variables must all be
+%        of the same size, and usually will correspond to x, y, z, and c
+%        data for the patches.
+%
+% Output variables:
+%
+%   xp:  m x n array of coordinates, where m is the maximum length of the
+%        vectors in x and n is numel(x).  
+
+% Copyright 2015 Kelly Kearney
+
+if nargin ~= nargout
+    error('Must supply the same number of input variables as output variables');
+end
+
+nv = nargin;
+vars = varargin;
+
+sz = cellfun(@size, vars{1}(:), 'uni', 0);
+sz = cat(1, sz{:});
+
+if all(sz(:,1) == 1)
+    for ii = 1:nv
+        vars{ii} = catuneven(1, NaN, vars{ii}{:})';
+    end
+%     x = catuneven(1, NaN, x{:})';
+%     y = catuneven(1, NaN, y{:})';
+elseif all(sz(:,2) == 1)
+    for ii = 1:nv
+        vars{ii} = catuneven(2, NaN, vars{ii}{:});
+    end
+%     x = catuneven(2, NaN, x{:});
+%     y = catuneven(2, NaN, y{:});
+else
+    error('Inputs must be cell arrays of vectors');
+end
+
+[ii,jj] = find(isnan(vars{1}));
+
+ind = accumarray(jj, ii, [size(vars{1},2) 1], @min); 
+ij1 = [ii jj];
+ij2 = [ind(jj)-1 jj];
+idx1 = sub2ind(size(vars{1}), ij1(:,1), ij1(:,2));
+idx2 = sub2ind(size(vars{1}), ij2(:,1), ij2(:,2));
+
+for ii = 1:nv
+    vars{ii}(idx1) = vars{ii}(idx2);
+end
+
+varargout = vars;
+
+