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

📄 init_mop.m

📁 matlab环境下
💻 M
字号:
function mix1 = init_MoP(x,m,source_type,priors)% mix1 = init_MoP(x,m,source_type,priors)%% Initialises a 1-dimensional positive mixture model% for learning using the Variational Bayes framework.%% Called from 'initiaise_mix1d'.%%% -----------% Input% -----------%% Necessary parameters%% x             The data vector  % m             Number of mixture components% source_type   'e', 't' - Mixture of exponentials,%                or truncated Gaussians%%% Optional parameters%% priors        User defined priors%%%% -----------% Output% -----------%% MIX1 is a data structure with the following fields:%% type             'e' or 't'% m                The number of components%%                  In the field 'priors', parameters for%                  prior distributions:% lambda_0         Dirichlet parameters for mixing coeffs% b_0,c_0          Gamma parameters for precisions% m_0,tau_0        Normal parameters for means (dummy)% eta_0            If HMM, Dirichlet parameters for trans.%                  matrix%%                  In the field 'posts', parameters for%                  posterior distributions:% lambda           Dirichlet parameters  for mixing coeffs% b,c              Gamma parameters for precisions% mm,v             Normal parameters for means (dummy)% eta              If HMM, Dirichlet parameters for trans.%                  matrix%%                  In the field posts:% lambda           Dirichlet parameters  for mixing coeffs% b,c              Gamma parameters for precisions% mm,v             Normal parameters for means% eta              If HMM, Dirichlet parameters for trans.%                  matrix%%                  Expected posterior values:% pi               Mixing coefficients % centres          Means% precs            Precisions% gammas           Component posterior probabilities%%% -------------------------------------------------------%% Original code by Rizwan Choudrey% Thesis: Variational Methods for Bayesian Independent%         Component Analysis (www.robots.ox.ac.uk/~parg)global CHECK_PROGRESS;x=x(:)';N=length(x);if nargin<4  set_priors = 0;else  set_priors = priors.setSource;end% PRIORSlambda_0=5;m_0 = 0;b_0 = 1000;c_0 = 1e-3;tau_0 = inf;mm = 0;tau = inf;z=[x(1:2:N),-x(2:2:N)];mean_prec = 1/var(z');%set user requested priors if necessaryif set_priors  b_0 = priors.b_0;  c_0 = priors.c_0;  tau_0=priors.tau_0;  lambda_0=priors.lambda_0;endlambda = repmat(lambda_0,1,m);precs = rand(1,m);gammas = rand(m,N);gammas = gammas./repmat(sum(gammas,1),m,1);c = repmat(N./(2*m),1,m);b = precs./c;if CHECK_PROGRESS  switch source_type   case 't'    plotRMoG(1./(b.*c),lambda./sum(lambda),max(x)*10)    drawnow   case 'e'    plotMoE(1./(b.*c),lambda./sum(lambda),max(x)*10)    drawnow  endend% Put variables into data structuremix1.type = source_type;mix1.m=m;mix1.priors.lambda_0=lambda_0;mix1.priors.m_0=m_0;mix1.priors.tau_0=tau_0;mix1.priors.b_0=b_0;mix1.priors.c_0=c_0;mix1.posts.lambda=lambda;mix1.posts.mm=mm;mix1.posts.tau=tau;mix1.posts.b=b;mix1.posts.c=c;mix1.pi=lambda./sum(lambda);mix1.centres=mm;mix1.precs=(b.*c);   mix1.gammas = gammas;

⌨️ 快捷键说明

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