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

📄 em_generate_sample.m

📁 EM分群,matlab程式碼,用來分群用的
💻 M
字号:
function sim_data = EM_Generate_sample(n_points, distr_type, mix_weights, mod_par, rnd_state)

% FUNCTION sample_data = EM_Generate_sample(n_points, n_mix, pdf_type, mix_weights, mod_par, rand_seed)
%
% INPUT
%
% n_points      : Number of data points to be generated
% distr_type      : Cell array of distribution types
% mix_weights   : Array of weights
% mod_par       : (Cell) Array of PDFs' parameters 
%
% OUTPUT
%
% sample_data   : Generated data set, (x_i, z_i) i=1,...,n_points
%                 x_i observed data
%                 z_i hidden data (module indexes)



rand('state',rnd_state);

n_mix = length(distr_type);


for ii=1:n_mix    
    y = EM_Handle_list(distr_type{ii});        
    rnd_handle(ii) = y(3);    
end


mix_weights = reshape(mix_weights,n_mix,1)/sum(mix_weights);

cum_prob_coeff = cumsum(mix_weights);

sim_data = zeros(n_points,2);

 
for ii = 1:n_points

    z = rand;    
    i_mix =  min(find(cum_prob_coeff >= z));    
    y = feval(rnd_handle(i_mix),mod_par{i_mix});    
    sim_data(ii,:) = [y i_mix];    
    
end



⌨️ 快捷键说明

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