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

    function  [y,L,Q,GG,P] = GMD_encoder(x,H,period,UserNum,UserAntennaNum,stream_num,beta) 
%%--------求解各参数--------------------
%{

%}
%% H=QRP'

%% Changed by Zhangcunyi at 2010/11/09 21:54

%[Q,R,P,G] = BD_GMD_3_general(H,UserNum,UserAntennaNum) ;
flag=1;
[Q,R,P] = BD_GMD_5_stream(H,UserNum,UserAntennaNum,stream_num,flag) ;
GG=diag(diag(R));
G=diag(1./diag(R));
L=R;
B=G*R;

%%--------求解反馈部分--------------------
    a =x(:,1);
    [row col]=size(H);
    row1=sum(stream_num);
    % 发射端中的反馈滤波器
    y(1,1) = a(1);
    for m = 2:row1;                                                   
        g = 0;
        for k = 1:(m-1);
            g = B(m,k)*y(k,1) + g;
        end
        y(m,1) = a(m)-g;
        y(m,1) = mod_thp(y(m,1),period);%对经过反馈滤波器的信号进行取模操作
    end

    %  前向滤波和输出
    %beta_water=diag(sqrt(WaterFilling_alg(P_all,diag(R),1,1)/Power));
    vec_tmp = beta*P*y(1:row1,1);                                            
    y(1:row,1) = vec_tmp;
    
end