gusucode.com > 非线性BD-GMD均分功率用户排序误码率源码程序 > 非线性BD-GMD均分功率用户排序误码率源码程序/code/optimal_order.m

    function   [h,UserAntennaNum,stream_num]=optimal_order(h1,h2,h3,h4,UserNum,UserAntennaNum_old,stream_num_old)
H=cell(UserNum);
H{1}=h1;H{2}=h2;H{3}=h3;H{4}=h4;
order=perms(1:UserNum);
num=size(order,1);
min=9999;
h_min=[];
for n=1:num % 遍历每一种排列顺序
    h_tmp=[];
    for r=1:UserNum % 按每一顺序组成一个矩阵
        h_tmp=[h_tmp;H{order(n,r)}];
        UserAntennaNum_tmp(r)=UserAntennaNum_old(order(n,r));
        stream_num_tmp(r)=stream_num_old(order(n,r));
    end
        [Q,R,P] = BD_GMD_5_stream(h_tmp,UserNum,UserAntennaNum_tmp,stream_num_tmp,1) ;
         r=diag(R);
         distance=r(1)-r(end);
         if distance<min
             min=distance;
             h_min=h_tmp;
             UserAntennaNum=UserAntennaNum_tmp;
             stream_num=stream_num_tmp;
         end
end

h=h_min;