% SLICESAMPLE スライスサンプリング法
%
%   RND = SLICESAMPLE(INITIAL,NSAMPLES,'pdf',PDF) は、スライスサンプリング法
%   を使って密度関数 PDF をもつターゲットの分布から NSAMPLES の無作為標本を
%   描画します。INITIAL は、無作為標本列の初期値を含む行ベクトル、または
%   スカラです。INITIAL は、ターゲットの分布の領域内になければなりません。
%   NSAMPLES は、生成される標本数です。PDF は、@ を使って作成される関数
%   ハンドルです。PDF は、入力として 1 つの引数のみを受け入れ、この引数は、
%   INITIAL と同じタイプとサイズをもちます。ターゲットの密度関数と比例
%   する関数を定義します。対数密度関数を使用する場合、'pdf' を  'logpdf' 
%   に置き換えることが可能です。対数密度関数は、かならずしも正規化される
%   わけではありません。
%  
%   RND = SLICESAMPLE(...,'width',W) は、典型的な幅 W をもつターゲットの
%   分布に対してスライスサンプリング法を行ないます。W は、スカラ、または
%   ベクトルです。スカラの場合、すべての次元は、同じ典型的な幅をもつと
%   仮定されます。ベクトルの場合、ベクトルの各要素は、その次元内で、周辺の
%   ターゲットの分布の典型的な幅になります。W のデフォルト値は 10 です。
% 
%   RND = SLICESAMPLE(...,'burnin',K) は、開始点と生成された列内で省略
%   された K 番目の点 (その後で点は保持されますが) の間の値をもつ無作為
%   標本を生成します。K は非負の整数です。K のデフォルト値は 0 です。
%
%   RND = SLICESAMPLE(...,'thin',M) は、生成された列内で省略された M 値の
%   外の M-1 をもつ無作為標本を生成します。M は正の整数です。M のデフォルト
%   値は 1 です。
%
%   [RND, NEVAL] = SLICESAMPLE(...) は、スライスサンプリング法で発生した
%   関数評価の平均回数として NEVAL も返します。
%   
%   例: 
%    ユーザ定義の pdf をもつ分布から無作為標本を生成します。
%      f = @(x) exp( -x.^2/2).* ...       % これはマルチモーダルの
%               (1+(sin(3*x)).^2).* ...   % 分布に対する pdf を比例
%               (1+(cos(5*x).^2));        % する関数です。
%      x = slicesample(1,2000,'pdf',f,'thin',5,'burnin',1000);  
%      hist(x,50)
%      set(get(gca,'child'),'facecolor',[0.6 .6 .6]);
%      hold on 
%      xd = get(gca,'XLim');              % ビンの x-データを取得
%      binwidth = (xd(2)-xd(1));          % 各ビンの幅を検出。
%      y = 5.6398*binwidth* ...           % ヒストグラムを重ねてプロット
%          f(linspace(xd(1),xd(2),1000)); % するのに必要な正規化
%      plot(linspace(xd(1),xd(2),1000),y,'r')
%   
%   参考: MHSAMPLE, RAND, HIST, PLOT.

 
% Copyright 2005-2007 The MathWorks, Inc.
