discrete_sampler.m

来自「一个学习自然场景类别的贝叶斯模型、基于“词袋”模型的目标分类。来源于Feifei」· M 代码 · 共 42 行

M
42
字号
function samples_out=discrete_sampler(density,num_samples,replacement_option)%% Function that draws samples from a discrete density%% density - discrete probability density (should sum to 1)% num_samples - number of samples to draw% replacement_option: 1 for sampling with replacment, 0 for no replacmentsamples_out = zeros(1,num_samples);%% Get CDFcum_density = cumsum(density);%% Draw samples from uniform distributionuni_samples = rand(1,num_samples);a=1;while (a<=num_samples)   binary = uni_samples(a)>cum_density;      highest = find(binary);      if isempty(highest)      samples_out(1,a) = 1;   else      samples_out(1,a) = highest(end)+1;   end      if ((~replacement_option) & (a>1)) %% if we aren't doing replacement      if (sum(samples_out(1,a)==samples_out(1,1:a-1))>0)	 uni_samples(1,a)=rand; %% gen. new uniform sample	 a=a-1; %% redo this sample      end   end      a=a+1;   end

⌨️ 快捷键说明

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