Code covered by the BSD License  

Highlights from
Generation of Random Variates

image thumbnail

Generation of Random Variates

by

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

Contact us