Code covered by the BSD License

# Generation of Random Variates

### James Huntley (view profile)

generates random variates from over 870 univariate distributions

weib_pdf(x,a,b)
```function y = weib_pdf(x,a,b)
%WEIB_PDF Weibull probability density function (pdf).
%   Y = WEIB_PDF(X,A,B) returns the Weibull pdf with parameters
%   A and B at the values in X.
%
%   The size of P is the common size of the input arguments. A scalar input
%   functions as a constant matrix of the same size as the other inputs.
%
%   Some references refer to the Weibull distribution with
%   a single parameter, this corresponds to WEIBPDF with A = 1.

%   References:
%      [1] J. K. Patel, C. H. Kapadia, and D. B. Owen, "Handbook
%      of Statistical Distributions", Marcel-Dekker, 1976.

%   Copyright 1993-2000 The MathWorks, Inc.
%   \$Revision: 2.8 \$  \$Date: 2000/05/26 18:53:56 \$

if nargin < 3,
error('Requires three input arguments.');
end

[errorcode x a b] = distchck(3,x,a,b);

if errorcode > 0
error('Requires non-scalar arguments to match in size.');
end

y = zeros(size(x));

k1 = find(a <= 0 | b <= 0);
if any(k1)
tmp   = NaN;
y(k1) = tmp(ones(size(k1)));
end

k = find(x > 0 & a > 0 & b > 0);
if any(k),
y(k) = a(k) .* b(k) .* x(k) .^ (b(k) - 1) .* exp(-a(k) .* x(k) .^ b(k));
end

% Special case for asymptote.
k1 = find(x == 0 & b < 1);
if any(k1)
tmp   = Inf;
y(k1) = tmp(ones(size(k1)));
end

% Special case when Weibull is the same as exponential.
k2 = find(x == 0 & b == 1);
if any(k2)
y(k2) = a(k2) .* exp(-a(k2) .* x(k2));
end

return
```