help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: statistics distributions function names


From: Ben Barrowes
Subject: Re: statistics distributions function names
Date: Fri, 01 Jul 2005 12:24:36 -0600
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.7) Gecko/20050414

For example octave's weibull_rnd.m, a new file named weibrnd.m could be placed in the
statistics/distributions
directory containing the text of weibull_rnd.m except for the name change:

## 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 <address@hidden>
## 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


The following patch adds a depreciation warning in weibull_rnd.m:

*** /usr/local/share/octave/2.9.3/m/statistics/distributions/weibull_rnd.m 2005-06-01 14:07:16.000000000 -0600
--- weibull_rnd.m       2005-07-01 12:16:05.000000000 -0600
***************
*** 34,39 ****
--- 34,41 ----

 function rnd = weibull_rnd (shape, scale, r, c)

+   warning('weibull_rnd is being depreciaited in favor of weibrnd')
+
   if (nargin > 1)
     if (!isscalar(shape) || !isscalar(scale))
       [retval, shape, scale] = common_size (shape, scale);



This approach is simple, but should work for most of the statistics function now located in statistics/distributions. Let me know if this is acceptable and I will send other similar modified files to you as I get the chance.

Note that I couldn't find any other function in the octave distribution that referenced weibull_rnd.m, so no other trunk functions needs to be changed.

bb



John W. Eaton wrote:

On 23-Jun-2005, Ben Barrowes wrote:

| Why are the names for the distribution functions in
| /usr/local/share/octave/2.9.3/m/statistics/distributions/
| different from their ML counterparts?

I'm not certain, but it might be that some of the Octave functions
were written before the functions in Matlab.  Or, it might be that
they were written at a time when there was not so much empasis on
compatibility with Matlab.

If you owuld like for this to improve, then please submit patches to
provide a compatibile interface.  It would be best to keep the current
interface at least for a while, perhaps also having the incompatible
functions emit warnings.

jwe



-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------




-------------------------------------------------------------
Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:  http://www.octave.org
How to fund new projects:  http://www.octave.org/funding.html
Subscription information:  http://www.octave.org/archive.html
-------------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]