Pre-ci test passed git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4000 818b1a75-f10b-46b9-bf7c-635c3b92a50f
34 lines
810 B
Matlab
34 lines
810 B
Matlab
function [CAP] = MISO_CVQ(HS,Hq,n_p,mu)
|
|
% [CAP] = MISO_CVQ(HS,Hq,n_p,mu)
|
|
%
|
|
% This function calculates the capacity of a multiuser system
|
|
% assuming channel vector quatization [1].
|
|
%
|
|
% [1] Philips, "System-level simulation results for channel vector
|
|
% quantisation feedback for MU-MIMO" 3gpp TSG RAN WG1 R1-063028, Nov. 2006
|
|
|
|
[N_User, N_Tx] = size(HS);
|
|
|
|
if (HS == zeros(N_User,N_Tx))
|
|
CAP = 0;
|
|
else
|
|
|
|
HH = Hq*Hq'+mu*eye(N_User);
|
|
|
|
HH_inv = inv(HH);
|
|
|
|
W = Hq'*HH_inv;
|
|
|
|
% normalize W such that trace(W'*W)=1
|
|
% this way we do not need the factor 1/NTx in the capacity formula
|
|
W = W/sqrt(trace(W'*W));
|
|
HW = abs(HS*W).^2;
|
|
|
|
CAP = 0;
|
|
for v = 1:length(HW)
|
|
CAP = CAP + log2(1 + (HW(v,v)/(sum(HW(v,:)) - HW(v,v) + n_p)));
|
|
end %of for loop
|
|
|
|
end %of if loop HS
|
|
|