?? dirichletrnd.m
字號:
function x = dirichletrnd(alpha)%DIRICHLETRND Random vector from a dirichlet distribution.% x = dirichletrnd(alpha) returns a vector randomly selected% from the Dirichlet distribution with parameter vector alpha.%% The algorithm used is the following:% For each alpha(i), generate a value s(i) with distribution% Gamma(alpha(i),1). Now x(i) = s(i) / sum_j s(j).% % The above algorithm was recounted to me by Radford Neal, but% a reference would be appreciated...% Do the gamma parameters always have to be 1?%% Author: David Ross% $Id$%-------------------------------------------------% Check the input%-------------------------------------------------error(nargchk(1,1,nargin));if min(size(alpha)) ~= 1 | length(alpha) < 2 error('alpha must be a vector of length at least 2');end%-------------------------------------------------% Main%-------------------------------------------------gamma_vals = gamrnd(alpha, ones(size(alpha)), size(alpha));denom = sum(gamma_vals);x = gamma_vals / denom;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -