From bce9aba538662c2dfc09a1fd950972f6ac2c32a0 Mon Sep 17 00:00:00 2001 From: stepan Date: Mon, 16 Feb 2009 09:55:30 +0000 Subject: [PATCH] v4.1:: Added a random number generator for the exponential distribution. git-svn-id: https://www.dynare.org/svn/dynare/trunk@2417 ac1d8469-bf42-47a9-8791-bf33cf982152 --- matlab/distributions/toolbox/exprnd.m | 42 +++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 matlab/distributions/toolbox/exprnd.m diff --git a/matlab/distributions/toolbox/exprnd.m b/matlab/distributions/toolbox/exprnd.m new file mode 100644 index 000000000..9fb56e353 --- /dev/null +++ b/matlab/distributions/toolbox/exprnd.m @@ -0,0 +1,42 @@ +function rnd = exprnd(a) +% Random samples from the exponential distribution with expectation 1/a +% and variance (1/a)^2. +% +% INPUTS +% a [double] m*n matrix of positive parameters +% +% OUTPUT +% rnd [double] m*n matrix, independent draws from the exponential +% distribution rnd(j,j) has expectation 1/a(i,j) and +% variance (1/a(i,j))^2 +% +% ALGORITHM +% Inverse transform sampling. +% +% SPECIAL REQUIREMENTS +% None. +% + +% Copyright (C) 2009 Dynare Team +% +% This file is part of Dynare. +% +% Dynare 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 3 of the License, or +% (at your option) any later version. +% +% Dynare 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 Dynare. If not, see . + if any(a(:)<1e-15) + disp('exprnd:: The parameter of the exponential distribution has to be positive!') + error; + end + [m,n] = size(a); + uniform_variates = rand(m,n); + rnd = -log(uniform_variates)./a; \ No newline at end of file