📄 mac_to_bc.m
字号:
%MAC to BC Transformation%Authors: Nihar Jindal, Wonjong Rhee, Sriram Vishwanath, Syed Jafar, Andrea%Goldsmith%Date: 6/20/05function Downlink = MAC_to_BC(H, Uplink);%assumes users decoded in increasing order for uplink: 1,2,...,K, %opposite encoding order for downlink (K, K-1,..., 1)%Function Inputs%H: triply indexed UPLINK channel% H(:,:,k) refers to the UPLINK channel of the kth receiver% H(:,:,k) is an (M x N) matrix%Uplink: triply indexed matrices containing the UPLINK covariance matrices% Uplink(:,:,k) is the (N x N) covariance of user k%Function Outputs%Downlink: triply indexed matrices containing the DOWNLINK covariance matrices% Downlink(:,:,k) is the (M x M) covariance of user k%Other Variables%M: # of transmit antennas in downlink channel%N: # of receive antennas in downlink channel%K: # of receivers%Determine # of antennas, users[M,N,K] = size(H);for k = 1:K %Compute A_i (equation 34) temp_sum = eye(M,M); for l = (k+1):K temp_sum = temp_sum + H(:,:,l) * Uplink(:,:,l) * H(:,:,l)'; end; B(:,:,k) = temp_sum; %Compute B_i (equation 34) temp_sum = eye(N,N); for l = 1:(k-1) temp_sum = temp_sum + H(:,:,k)' * Downlink(:,:,l) * H(:,:,k); end; A(:,:,k) = temp_sum; %take SVD of effective channel Hk_eff = B(:,:,k)^(-0.5) * H(:,:,k) * A(:,:,k)^(-0.5); [r,t] = size(Hk_eff); if (t > r) [F,D,G] = svd(Hk_eff',0); Fk = G; Gk = F; else [Fk,D,Gk] = svd(Hk_eff,0); end; %Compute downlink covariance (equation 35) Downlink(:,:,k) = B(:,:,k)^(-0.5) * Fk * Gk' * A(:,:,k)^(0.5) * Uplink(:,:,k) * A(:,:,k)^(0.5) * Gk * Fk' * B(:,:,k)^(-0.5);end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -