www.gusucode.com > MIMO预编码技术源码程序 > MIMO预编码技术源码程序/code/THP_encoder.m
function [x, beta] = THP_encoder(u,H,period) Tap_num = size(u,2); [N_r N_t] = size(H); [F,S] = qr((H'));%% h = F*S s = S';%得到下三角矩阵 lower triagulate matix f = F'; t = diag(1./diag(s)); B = s*t; %% make B's diag element tmp_sum = 0; for kk = 1:N_t; tmp_sum = tmp_sum + 1/s(kk,kk)^2; end; p = sqrt(N_t/tmp_sum);%% scale power beta x = zeros(N_t,Tap_num); for kk = 1:Tap_num; a = u(:,kk); % Feedback Filter x(1,kk) = a(1); for m = 2:N_t; g = 0; for k = 1:(m-1); g = B(m,k)*x(k,kk) + g; end x(m,kk) = a(m)-g; % x(m,kk) = THPMod(x(m,kk),period); %% modulo x(m,kk) = mod_thp(x(m,kk),period); end % Forward Filter & Output vec_tmp = p*F*t*x(1:N_t,kk); x(1:N_t,kk) = vec_tmp; beta(kk) = 1/p; %% prepare for the receiver mult 1/p end;