📄 hmt 模型参数训练代码.m
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -