⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gedrnd.m

📁 计量工具箱
💻 M
字号:
function random = gedrnd(n,nu) 
% PURPOSE:
%     Generates Deviates from the Generalized Error Distribution 
%     This is the same as the Exponential Power Distn with the single exception
% 
% 
% USAGE:
%     random = gedrnd(t,nu) 
% 
% 
% INPUTS:
%     t is the number of deviates wanted 
%     nu is the shape parameter
% 
% 
% OUTPUTS:
%     random - t by 1 vector of deviates
% 
% COMMENTS:
%     NOTE nu must be greater than 1
%     All deviates are from distribition with unit variance
% 
% 
%     Uses an acceptance rejection method
% 
%     The Generalized Error dist'n pdf is given by:
%     f(x)=Kd * exp (-|x|^nu)/((gamma(3/nu)/gamma(1/nu))^0.5)
%     KD = inv(2 * gamma (1+(1/nu) ) )
% 
%     Taken from Tadikamalla 1980
% 
%     Included in the ucsd_garch toolbox and the JPL library
%     Requires the JPL toolbox
% 
% Author: Kevin Sheppard
% kksheppard@ucsd.edu
% Revision: 2    Date: 12/31/2001

stddev=(gamma(3/nu)/gamma(1/nu))^(0.5);
invstd=inv(stddev);

A = 1/nu;
B = A^A;
dummy =1;
random=zeros(n,1);


if nu>1 & nu<2
   for i=1:n
      while dummy == 1
         u = rand;
         if u > .5
            x=B*(-log(2*(1-u)));
         else
            x=B*log(2*u);
         end
         if log(rand)<=(-abs(x)^nu + abs(x)/B - 1 + A)
            random(i)=invstd*x;
            break
         end
      end
   end
else if nu>=2
      for i=1:n
         while dummy == 1
            x = B*randn;
            if log(rand)<=(-abs(x)^nu + x^2/(2*(B^2)) - 0.5 + A)
               random(i)=invstd*x;
               break
            end
         end
      end   
   end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -