hmt 模型参数训练代码.m

来自「基于MATLAB环境下的HMT隐马尔克夫树模型参数训练代码母函数」· M 代码 · 共 60 行

M
60
字号
function [ES,PS,MU,SI]=hmttrain(w,M,epsilon)
P=size(w,1);
level=log2(p);
ES=zeros(M,M,P,P);
PS=zeros(M,P,P);
MU=zeros(M,P,P);
SI=zeros(M,P,P);
for k=1:level
    J=2^(k-1);J2=J*J;
    si=J+1;ei=2*J;
    sj=J+1;ej=2*J;
    mutemp=0.0;
    sitemp=sum(sum((w(si:ei,sj:ej)-mutemp).^2))/J2;
    sitemp=sitemp*(sitemp>1e-6)+1e-6*(sitemp<=1e-6);
    SI(:,si:ei,sj:ej)=repmat(sitemp*linspace(0.5,2.0,M)',[1 2^(k-1) 2^(k-1)]);
    ES(:,:,si:ei,sj:ej)=repmat(ones(M,M)/M,[1 1 2^(k-1) 2^(k-1)]);
    PS(:,si:ei,sj:ej)=repmat(ones(M,1)/M,[1 2^(k-1) 2^(k-1)]);
    si=1;ei=J;
    sj=J+1;ej=2*J;
    mutemp=0.0;
    sitemp=sum(sum((w(si:ei,sj:ej)-mutemp).^2))/J2;
    sitemp=sitemp*(sitemp>1e-6)+1e-6*(sitemp<=1e-6);
    SI(:,si:ei,sj:ej)=repmat(sitemp*linspace(0.5,2.0,M)',[1 2^(k-1) 2^(k-1)]);
    ES(:,:,si:ei,sj:ej)=repmat(ones(M,M)/M,[1 1 2^(k-1) 2^(k-1)]);
    PS(:,si:ei,sj:ej)=repmat(ones(M,1)/M,[1 2^(k-1) 2^(k-1)]);
    si=J+1;ei=2*J;
    sj=1;ej=J;
    mutemp=0.0;
    sitemp=sum(sum((w(si:ei,sj:ej)-mutemp).^2))/J2;
    sitemp=sitemp*(sitemp>1e-6)+1e-6*(sitemp<=1e-6);
    SI(:,si:ei,sj:ej)=repmat(sitemp*linspace(0.5,2.0,M)',[1 2^(k-1) 2^(k-1)]);
    ES(:,:,si:ei,sj:ej)=repmat(ones(M,M)/M,[1 1 2^(k-1) 2^(k-1)]);
    PS(:,si:ei,sj:ej)=repmat(ones(M,1)/M,[1 2^(k-1) 2^(k-1)]);
end
conerr=1.0;
while(conerr>epsilon)
    ESP=ES;PSP=PS;MUP=MU;SIP=SI;
    [ES,PS,MU,SI]=emhht(w,ESP,PSP,MUP,SIP,1);
    testcon;
end;
conerr=1.0;
while(conerr>epsilon)
    ESP=ES;PSP=PS;MUP=MU;SIP=SI;
    [ES,PS,MU,SI]=emlht(w,ESP,PSP,MUP,SIP,1);
    testcon;
end;
conerr=1.0;
while(conerr>epsilon)
   ESP=ES;PSP=PS;MUP=MU;SIP=SI;
    [ES,PS,MU,SI]=emhlt(w,ESP,PSP,MUP,SIP,1);
    testcon;
end; 


 
     
     
        
 
    

⌨️ 快捷键说明

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