Home > . > rndprior.m

rndprior

PURPOSE ^

SYNOPSIS ^

function y = rndprior(bayestopt_)

DESCRIPTION ^

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function y = rndprior(bayestopt_)
0002 
0003 pshape=bayestopt_.pshape;
0004 pmean=bayestopt_.pmean;
0005 p2=bayestopt_.p2;
0006 p3=bayestopt_.p3;
0007 p4=bayestopt_.p4;
0008  
0009 for i=1:length(pmean),
0010     
0011     switch pshape(i)
0012         
0013      case 1 %'beta'
0014       mu = (pmean(i)-p3(i))/(p4(i)-p3(i));
0015       stdd = p2(i)/(p4(i)-p3(i));
0016       A = (1-mu)*mu^2/stdd^2 - mu;
0017       B = A*(1/mu - 1);
0018       y(1,i) = beta_rnd(1, A, B);
0019       y(1,i) = y(1,i) * (p4(i)-p3(i)) + p3(i);
0020       
0021      case 2 %'gamma'
0022       mu = pmean(i)-p3(i);
0023       B = mu/p2(i)^2;              %gamm_rnd uses 1/B instead of B as param.
0024       A = mu/B;
0025       y(1,i) = gamm_rnd(1, A, B);
0026       y(1,i) = y(1,i) + p3(i);
0027       
0028      case 3 %'normal'
0029       MU = pmean(i);
0030       SIGMA = p2(i);
0031       y(1,i) = randn*SIGMA+ MU;
0032       
0033      case 4 %'invgamma'
0034       nu = p2(i);
0035       mu = pmean(i);
0036       a = nu/2;;
0037       b = ( gamma( (nu-1)/2 ) / mu / gamma( nu/2 ) )^2;
0038       A = b/2;
0039       B = 2/a;
0040       y(1,i) = gamm_rnd(1, A, B);        
0041       y(1,i) = 1/y(1,i)^(0.5);
0042       
0043      case 5 %'uniform'
0044       y(1,i) = rand*(p4(i)-p3(i)) + p3(i);
0045       
0046     end
0047 end
0048 
0049 % initial version by Marco Ratto
0050 % 11/17/03 MJ made Uniform case 5
0051 % 11/17/03 MJ changed pstdd -> p2, lb -> p3, ub -> p4
0052

Generated on Fri 16-Jun-2006 09:09:06 by m2html © 2003