我想在Matlab中计算下面的公式(EM的E-step for Multinomial Mixture Model),

g和θ是矩阵,θ和λ具有以下约束:


但是m的计数大于1593,当计算θ的乘积时,数字变得非常小,Matlab将其保存为零.任何人都可以简化g公式或使用其他技巧来解决这个问题?
更新:
data: data.txt (下载后,将文件扩展名更改为'mat')
码:
function EM(data)
%% initialize
K=2;
[N M]=size(data);
g=zeros(N,K);
landa=ones(K,1) .* 0.5;
theta = rand(M, K);
theta = bsxfun(@rdivide, theta, sum(theta,1))';
%% EM
for i=1:10
%% E Step
for n=1:N
normalize=0;
for k=1:K
g(n,k)=landa(k) * prod(theta(k,:) .^ data(n,:));
normalize=normalize + landa(k) * prod(theta(k,:) .^ data(n,:));
end
g(n,:)=g(n,:) ./ normalize;
end
%% M Step
for k=1:K
landa(k)=sum(g(:,k)) / N ;
for m=1:M
theta(k,m)=(sum(g(:,k) .* data(:,m)) + 1) / (sum(g(:,k) .* …Run Code Online (Sandbox Code Playgroud)