Mercurial > hg > octave-nkf
changeset 5408:9461ff9278fb
[project @ 2005-07-08 15:46:15 by jwe]
author | jwe |
---|---|
date | Fri, 08 Jul 2005 15:46:15 +0000 |
parents | 2911127d0fe7 |
children | fda074a55b5c |
files | scripts/ChangeLog scripts/deprecated/weibull_rnd.m scripts/statistics/distributions/weibrnd.m scripts/statistics/distributions/weibull_rnd.m |
diffstat | 4 files changed, 143 insertions(+), 95 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,3 +1,8 @@ +2005-07-08 John W. Eaton <jwe@octave.org> + + * statistics/distributions/weibrnd.m: Rename from weibull_rnd.m. + * deprecated/weibull_rnd.m: New file. + 2005-07-08 cctsim <cctsim@yahoo.co.uk> * strings/dec2base.m: Allow matrix arguments.
new file mode 100644 --- /dev/null +++ b/scripts/deprecated/weibull_rnd.m @@ -0,0 +1,42 @@ +## Copyright (C) 1995, 1996, 1997 Kurt Hornik +## +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, write to the Free +## Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +## 02110-1301, USA. + +## -*- texinfo -*- +## @deftypefn {Function File} {} weibull_rnd (@var{alpha}, @var{sigma}, @var{r}, @var{c}) +## @deftypefnx {Function File} {} weibull_rnd (@var{alpha}, @var{sigma}, @var{sz}) +## +## This function has been deprecated. Use weibrnd instead. +## +## Return an @var{r} by @var{c} matrix of random samples from the +## Weibull distribution with parameters @var{alpha} and @var{sigma} +## which must be scalar or of size @var{r} by @var{c}. Or if @var{sz} +## is a vector return a matrix of size @var{sz}. +## +## If @var{r} and @var{c} are omitted, the size of the result matrix is +## the common size of @var{alpha} and @var{sigma}. +## @end deftypefn + +## Author: KH <Kurt.Hornik@ci.tuwien.ac.at> +## Description: Random deviates from the Weibull distribution + +function rnd = weibull_rnd (varargin) + + rnd = weibrnd(varargin{:}); + +endfunction
new file mode 100644 --- /dev/null +++ b/scripts/statistics/distributions/weibrnd.m @@ -0,0 +1,96 @@ +## Copyright (C) 1995, 1996, 1997 Kurt Hornik +## +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, write to the Free +## Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +## 02110-1301, USA. + +## -*- texinfo -*- +## @deftypefn {Function File} {} weibrnd (@var{alpha}, @var{sigma}, @var{r}, @var{c}) +## @deftypefnx {Function File} {} weibrnd (@var{alpha}, @var{sigma}, @var{sz}) +## Return an @var{r} by @var{c} matrix of random samples from the +## Weibull distribution with parameters @var{alpha} and @var{sigma} +## which must be scalar or of size @var{r} by @var{c}. Or if @var{sz} +## is a vector return a matrix of size @var{sz}. +## +## If @var{r} and @var{c} are omitted, the size of the result matrix is +## the common size of @var{alpha} and @var{sigma}. +## @end deftypefn + +## Author: KH <Kurt.Hornik@ci.tuwien.ac.at> +## Description: Random deviates from the Weibull distribution + +function rnd = weibrnd (shape, scale, r, c) + + if (nargin > 1) + if (!isscalar(shape) || !isscalar(scale)) + [retval, shape, scale] = common_size (shape, scale); + if (retval > 0) + error ("weibrnd: shape and scale must be of common size or scalar"); + endif + endif + endif + + if (nargin == 4) + if (! (isscalar (r) && (r > 0) && (r == round (r)))) + error ("weibrnd: r must be a positive integer"); + endif + if (! (isscalar (c) && (c > 0) && (c == round (c)))) + error ("weibrnd: c must be a positive integer"); + endif + sz = [r, c]; + + if (any (size (scale) != 1) && + ((length (size (scale)) != length (sz)) || + any (size (scale) != sz))) + error ("weilbull_rnd: shape and scale must be scalar or of size [r, c]"); + endif + elseif (nargin == 3) + if (isscalar (r) && (r > 0)) + sz = [r, r]; + elseif (isvector(r) && all (r > 0)) + sz = r(:)'; + else + error ("weibrnd: r must be a postive integer or vector"); + endif + + if (any (size (scale) != 1) && + ((length (size (scale)) != length (sz)) || + any (size (scale) != sz))) + error ("weibrnd: shape and scale must be scalar or of size sz"); + endif + elseif (nargin == 2) + sz = size(shape); + else + usage ("weibrnd (alpha, sigma, r, c)"); + endif + + if (isscalar (shape) && isscalar (scale)) + if ((shape > 0) & (shape < Inf) & (scale > 0) & (scale < Inf)) + rnd = (scale * (- log (1 - rand (sz))) .^ (1 / shape)); + else + rnd = NaN * ones (sz); + endif + else + rnd = NaN * ones (sz); + k = find ((shape > 0) & (shape < Inf) & (scale > 0) & (scale < Inf)); + if (any (k)) + rnd(k) = (scale(k) + .* (- log (1 - rand (size (k)))) .^ (1 ./ shape(k))); + endif + endif + +endfunction +
deleted file mode 100644 --- a/scripts/statistics/distributions/weibull_rnd.m +++ /dev/null @@ -1,95 +0,0 @@ -## Copyright (C) 1995, 1996, 1997 Kurt Hornik -## -## This file is part of Octave. -## -## Octave is free software; you can redistribute it and/or modify it -## under the terms of the GNU General Public License as published by -## the Free Software Foundation; either version 2, or (at your option) -## any later version. -## -## Octave is distributed in the hope that it will be useful, but -## WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -## General Public License for more details. -## -## You should have received a copy of the GNU General Public License -## along with Octave; see the file COPYING. If not, write to the Free -## Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -## 02110-1301, USA. - -## -*- texinfo -*- -## @deftypefn {Function File} {} weibull_rnd (@var{alpha}, @var{sigma}, @var{r}, @var{c}) -## @deftypefnx {Function File} {} weibull_rnd (@var{alpha}, @var{sigma}, @var{sz}) -## Return an @var{r} by @var{c} matrix of random samples from the -## Weibull distribution with parameters @var{alpha} and @var{sigma} -## which must be scalar or of size @var{r} by @var{c}. Or if @var{sz} -## is a vector return a matrix of size @var{sz}. -## -## If @var{r} and @var{c} are omitted, the size of the result matrix is -## the common size of @var{alpha} and @var{sigma}. -## @end deftypefn - -## Author: KH <Kurt.Hornik@ci.tuwien.ac.at> -## Description: Random deviates from the Weibull distribution - -function rnd = weibull_rnd (shape, scale, r, c) - - if (nargin > 1) - if (!isscalar(shape) || !isscalar(scale)) - [retval, shape, scale] = common_size (shape, scale); - if (retval > 0) - error ("weibull_rnd: shape and scale must be of common size or scalar"); - endif - endif - endif - - if (nargin == 4) - if (! (isscalar (r) && (r > 0) && (r == round (r)))) - error ("weibull_rnd: r must be a positive integer"); - endif - if (! (isscalar (c) && (c > 0) && (c == round (c)))) - error ("weibull_rnd: c must be a positive integer"); - endif - sz = [r, c]; - - if (any (size (scale) != 1) && - ((length (size (scale)) != length (sz)) || - any (size (scale) != sz))) - error ("weilbull_rnd: shape and scale must be scalar or of size [r, c]"); - endif - elseif (nargin == 3) - if (isscalar (r) && (r > 0)) - sz = [r, r]; - elseif (isvector(r) && all (r > 0)) - sz = r(:)'; - else - error ("weibull_rnd: r must be a postive integer or vector"); - endif - - if (any (size (scale) != 1) && - ((length (size (scale)) != length (sz)) || - any (size (scale) != sz))) - error ("weibull_rnd: shape and scale must be scalar or of size sz"); - endif - elseif (nargin == 2) - sz = size(shape); - else - usage ("weibull_rnd (alpha, sigma, r, c)"); - endif - - if (isscalar (shape) && isscalar (scale)) - if ((shape > 0) & (shape < Inf) & (scale > 0) & (scale < Inf)) - rnd = (scale * (- log (1 - rand (sz))) .^ (1 / shape)); - else - rnd = NaN * ones (sz); - endif - else - rnd = NaN * ones (sz); - k = find ((shape > 0) & (shape < Inf) & (scale > 0) & (scale < Inf)); - if (any (k)) - rnd(k) = (scale(k) - .* (- log (1 - rand (size (k)))) .^ (1 ./ shape(k))); - endif - endif - -endfunction