comparison scripts/statistics/distributions/frnd.m @ 7032:4d4197ffb09d

[project @ 2007-10-15 16:31:55 by jwe]
author jwe
date Mon, 15 Oct 2007 16:31:55 +0000
parents a1dbe9d80eee
children 3306cfcb856e
comparison
equal deleted inserted replaced
7031:120f3135952f 7032:4d4197ffb09d
76 print_usage (); 76 print_usage ();
77 endif 77 endif
78 78
79 79
80 if (isscalar (m) && isscalar (n)) 80 if (isscalar (m) && isscalar (n))
81 if ((m > 0) && (m < Inf) && (n > 0) && (n < Inf)) 81 if (isinf (m) || isinf (n))
82 rnd = n ./ m .* randg(m/2,sz) ./ randg(n/2,sz); 82 if (isinf (m))
83 rnd = ones (sz);
84 else
85 rnd = 2 ./ m .* randg(m / 2, sz);
86 endif
87 if (! isinf (n))
88 rnd = 0.5 .* n .* rnd ./ randg (n / 2, sz);
89 endif
90 elseif ((m > 0) && (m < Inf) && (n > 0) && (n < Inf))
91 rnd = n ./ m .* randg (m / 2, sz) ./ randg (n / 2, sz);
83 else 92 else
84 rnd = NaN * ones (sz); 93 rnd = NaN * ones (sz);
85 endif 94 endif
86 else 95 else
87 rnd = zeros (sz); 96 rnd = zeros (sz);
88 97
89 k = find (!(m > 0) | !(m < Inf) | 98 k = find (isinf(m) | isinf(n));
90 !(n > 0) | !(n < Inf)); 99 if (any (k))
100 rnd (k) = 1;
101 k2 = find (!isinf(m) & isinf(n));
102 rnd (k2) = 2 ./ m(k2) .* randg (m(k2) ./ 2, size(k2));
103 k2 = find (isinf(m) & !isinf(n));
104 rnd (k2) = 0.5 .* n(k2) .* rnd(k2) ./ randg (n(k2) ./ 2, size(k2));
105 endif
106
107 k = find (!(m > 0) | !(n > 0));
91 if (any (k)) 108 if (any (k))
92 rnd(k) = NaN; 109 rnd(k) = NaN;
93 endif 110 endif
94 111
95 k = find ((m > 0) & (m < Inf) & 112 k = find ((m > 0) & (m < Inf) &