📄 multi_dete.m
字号:
function L_out=multi_dete(rec,L_a,sigma)
[K,n]=size(rec);
nstate=2^(K-1);
%R=eye(K);
R=(0.3*ones(K)+0.7*eye(K));
A=eye(K);
for l=1:n
for j=1:K
temp_1=0.0;
temp_0=0.0;
for i=1:nstate
bj=bin_state(i-1,K-1);
bj=2*bj-1;
temp=1.0;
for m=1:j-1
temp=temp*(1+bj(m)*tanh(rec(m,l)/sigma/sigma))*(1+bj(m)*tanh(L_a(m,l)/2));
end
for m=j+1:K
temp=temp*(1+bj(m-1)*tanh(rec(m,l)/sigma/sigma))*(1+bj(m-1)*tanh(L_a(m,l)/2));
end
if ((j<K)&&(j>1))
b_minus=[bj(1:j-1) -1 bj(j:K-1)];
b_positive=[bj(1:j-1) 1 bj(j:K-1)];
elseif (j==K)
b_minus=[bj(1:K-1) -1 ];
b_positive=[bj(1:K-1) 1];
elseif (j==1)
b_minus=[-1 bj(1:K-1) ];
b_positive=[1 bj(1:K-1) ];
end
temp_1= temp_1+exp(-b_positive*A*R*A*b_positive'/(2*sigma*sigma))*temp;
temp_0= temp_0+exp(-b_minus*A*R*A*b_minus'/(2*sigma*sigma))*temp;
end
if temp_0==0.0
temp_0=1e-100;
end
L_out(j,l)=2.0*rec(j,l)/(sigma*sigma)+log(temp_1/temp_0);
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -