📄 tranq2r.m
字号:
%使用轮盘赌选择法得到二进制观察态C,计算出十进制解R
%tranQ2R
function [R]=tranQ2R(ai,n,var,i,numLayer,bestIndR)
poi=rand(1,n);
for ii=1:n
if poi(ii)<((abs(ai(ii)))^2)
C(ii)=0;
else
C(ii)=1;
end
end
%得到十进制解
if numLayer==1
switch var
case 1
Rmin=-2;Rmax=2;
case 2
Rmin=-1;Rmax=1;
case 3
Rmin=-2;Rmax=2;
case 4
Rmin=-1;Rmax=1;
end
else
switch var
case 1
if (bestIndR(1,i)-((2/numLayer)*abs(bestIndR(1,i))))<-2
Rmin=-2;
else
Rmin=bestIndR(1,i)-((2/numLayer)*abs(bestIndR(1,i)));
end
if (bestIndR(1,i)+((2/numLayer)*abs(bestIndR(1,i))))>2
Rmax=2;
else
Rmax=bestIndR(1,i)+((2/numLayer)*abs(bestIndR(1,i)));
end
case 2
if (bestIndR(2,i)-((2/numLayer)*abs(bestIndR(2,i))))<-1
Rmin=-1;
else
Rmin=bestIndR(2,i)-((2/numLayer)*abs(bestIndR(2,i)));
end
if (bestIndR(2,i)+((2/numLayer)*abs(bestIndR(2,i))))>1
Rmax=1;
else
Rmax=bestIndR(2,i)+((2/numLayer)*abs(bestIndR(2,i)));
end
case 3
if (bestIndR(3,i)-((2/numLayer)*abs(bestIndR(3,i))))<-2
Rmin=-2;
else
Rmin=bestIndR(3,i)-((2/numLayer)*abs(bestIndR(3,i)));
end
if (bestIndR(3,i)+((2/numLayer)*abs(bestIndR(3,i))))>2
Rmax=2;
else
Rmax=bestIndR(3,i)+((2/numLayer)*abs(bestIndR(3,i)));
end
case 4
if (bestIndR(4,i)-((2/numLayer)*abs(bestIndR(4,i))))<-1
Rmin=-1;
else
Rmin=bestIndR(4,i)-((2/numLayer)*abs(bestIndR(4,i)));
end
if (bestIndR(4,i)+((2/numLayer)*abs(bestIndR(4,i))))>1
Rmax=1;
else
Rmax=bestIndR(4,i)+((2/numLayer)*abs(bestIndR(4,i)));
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
d=0;
for ii=1:n
d=d+C(ii)*(2^(n-ii));
end
R=Rmin+(Rmax-Rmin)*d/((2^n)-1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -