function out = RandLim(n,lower,upper)
% returns pseudo-random values drawn from a uniform distribution with lower
% and upper limits LOWER and UPPER.
% LOWER and UPPER can also be matrices of the same shape as rand(N) would
% create
%
% N is a vector indicating the dimensions of the output:
%   N = [3]      creates a    3x3 matrix
%   N = [1,3]    creates a    1x3 matrix
%   N = [17,1,3] creates a 17x1x3 matrix
%
% LOWER and UPPER can be any number

% DN 2008-07-21 Wrote it
% DN 2008-09-19 Support for vector lower and upper limits
% DN 2016-08-25 Switched from deprecated nargchk to narginchk

narginchk(3,3);

r = rand(n);
if (~isscalar(lower) && any(size(lower)~=size(r))) || (~isscalar(upper) && any(size(upper)~=size(r)))
    error('LOWER and UPPER must each be scalar or have the same shape as rand(N)')
else
    out = lower + r.*(upper-lower);
end
