Mercurial > octave-nkf
annotate scripts/statistics/distributions/cauchy_rnd.m @ 10549:95c3e38098bf
Untabify .m scripts
author | Rik <code@nomad.inbox5.com> |
---|---|
date | Fri, 23 Apr 2010 11:28:50 -0700 |
parents | 3306cfcb856e |
children | be55736a0783 |
rev | line source |
---|---|
7017 | 1 ## Copyright (C) 1995, 1996, 1997, 1998, 2000, 2002, 2004, 2005, 2006, |
2 ## 2007 Kurt Hornik | |
3426 | 3 ## |
3922 | 4 ## This file is part of Octave. |
5 ## | |
6 ## Octave is free software; you can redistribute it and/or modify it | |
7 ## under the terms of the GNU General Public License as published by | |
7016 | 8 ## the Free Software Foundation; either version 3 of the License, or (at |
9 ## your option) any later version. | |
3426 | 10 ## |
3922 | 11 ## Octave is distributed in the hope that it will be useful, but |
3191 | 12 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
3426 | 14 ## General Public License for more details. |
15 ## | |
3191 | 16 ## You should have received a copy of the GNU General Public License |
7016 | 17 ## along with Octave; see the file COPYING. If not, see |
18 ## <http://www.gnu.org/licenses/>. | |
3191 | 19 |
3456 | 20 ## -*- texinfo -*- |
21 ## @deftypefn {Function File} {} cauchy_rnd (@var{lambda}, @var{sigma}, @var{r}, @var{c}) | |
4854 | 22 ## @deftypefnx {Function File} {} cauchy_rnd (@var{lambda}, @var{sigma}, @var{sz}) |
23 ## Return an @var{r} by @var{c} or a @code{size (@var{sz})} matrix of | |
24 ## random samples from the Cauchy distribution with parameters @var{lambda} | |
25 ## and @var{sigma} which must both be scalar or of size @var{r} by @var{c}. | |
3191 | 26 ## |
3456 | 27 ## If @var{r} and @var{c} are omitted, the size of the result matrix is |
28 ## the common size of @var{lambda} and @var{sigma}. | |
29 ## @end deftypefn | |
3426 | 30 |
5428 | 31 ## Author: KH <Kurt.Hornik@wu-wien.ac.at> |
3456 | 32 ## Description: Random deviates from the Cauchy distribution |
3191 | 33 |
34 function rnd = cauchy_rnd (l, scale, r, c) | |
3426 | 35 |
4854 | 36 if (nargin > 1) |
37 if (!isscalar (l) || !isscalar (scale)) | |
38 [retval, l, scale] = common_size (l, scale); | |
39 if (retval > 0) | |
10549 | 40 error ("cauchy_rnd: lambda and sigma must be of common size or scalar"); |
4854 | 41 endif |
42 endif | |
43 endif | |
44 | |
3191 | 45 if (nargin == 4) |
4030 | 46 if (! (isscalar (r) && (r > 0) && (r == round (r)))) |
3456 | 47 error ("cauchy_rnd: r must be a positive integer"); |
3191 | 48 endif |
4030 | 49 if (! (isscalar (c) && (c > 0) && (c == round (c)))) |
3456 | 50 error ("cauchy_rnd: c must be a positive integer"); |
3191 | 51 endif |
4854 | 52 sz = [r, c]; |
4856 | 53 |
4857 | 54 if (any (size (l) != 1) |
10549 | 55 && (length (size (l)) != length (sz) || any (size (l) != sz))) |
4856 | 56 error ("cauchy_rnd: lambda and sigma must be scalar or of size [r, c]"); |
57 endif | |
4854 | 58 elseif (nargin == 3) |
59 if (isscalar (r) && (r > 0)) | |
60 sz = [r, r]; | |
61 elseif (isvector(r) && all (r > 0)) | |
62 sz = r(:)'; | |
63 else | |
7007 | 64 error ("cauchy_rnd: r must be a positive integer or vector"); |
3191 | 65 endif |
4856 | 66 |
4857 | 67 if (any (size (l) != 1) |
10549 | 68 && (length (size (l)) != length (sz) || any (size (l) != sz))) |
4856 | 69 error ("cauchy_rnd: lambda and sigma must be scalar or of size sz"); |
70 endif | |
3191 | 71 elseif (nargin == 2) |
4854 | 72 sz = size(l); |
3191 | 73 else |
6046 | 74 print_usage (); |
3191 | 75 endif |
3426 | 76 |
4854 | 77 if (isscalar (l) && isscalar (scale)) |
78 if (find (!(l > -Inf) | !(l < Inf) | !(scale > 0) | !(scale < Inf))) | |
10525
3306cfcb856e
Replace constructs like "NaN * one()" with "NaN()" and "Inf * ones ()" with "Inf()"
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
79 rnd = NaN (sz); |
4854 | 80 else |
81 rnd = l - cot (pi * rand (sz)) .* scale; | |
82 endif | |
83 else | |
10525
3306cfcb856e
Replace constructs like "NaN * one()" with "NaN()" and "Inf * ones ()" with "Inf()"
David Bateman <dbateman@free.fr>
parents:
7017
diff
changeset
|
84 rnd = NaN (sz); |
4854 | 85 k = find ((l > -Inf) & (l < Inf) & (scale > 0) & (scale < Inf)); |
86 if (any (k)) | |
87 rnd(k) = l(k)(:) - cot (pi * rand (size (k))) .* scale(k)(:); | |
88 endif | |
3191 | 89 endif |
90 | |
91 endfunction |