www.gusucode.com > 均衡算法误码率对比源码程序 > 均衡算法误码率对比源码程序/Code/SphereBoundsUpdate.m

    function[UB_sym,x_probable,d_bar]=SphereBoundsUpdate(UB_sym,x_probable,d_bar,y_bar_orig,R)
global m MUL ADD
o=m;    LB=zeros(1,m); y_bar(o)=y_bar_orig(o);  x=UB_sym(o);
[UB_sym(o),LB(o)] = SphereBounds(R(o,o),d_bar(o),y_bar(o),o);% New level Bounds
if x_probable(o)<LB(o)
    x_probable(o)=LB(o);
end
for o = m-1:-1:1
% Finding the new radius for each level
    d_bar(o) = sqrt(abs((d_bar(o+1) ^2 - (y_bar(o+1)- R(o+1,o+1)*x_probable(o+1))^2)));
    y_bar(o) =  y_bar_orig(o) - R(o,o+1:m)*x_probable(o+1:m);
    MUL = MUL + 4 + (m-o); ADD = ADD + 2 + (m-o);
    [UB_sym(o),LB(o)] = SphereBounds(R(o,o),d_bar(o),y_bar(o),o);
    % New level Bounds
    if x_probable(o)<LB(o)
        x_probable(o)=LB(o);
    end
end