The complete project of OFDMA system.
It tries to maximize the network capacity.

Paper_ChannelStateInfo.m

% People can use the results and the codes freely if they refer to this job.
% To download the report of this job please check the following link:
% http://ens.ewi.tudelft.nl/~ramezani/Errata01.pdf
% These Matlab codes are provided by Hamid Ramezani.
% Ver01 - 08-Dec-2011
%% bulding channel coefficients for each user
% generation of complex noise for building channel coefficient for each
% tap and each user according to channel profile delay
chan.h = 1/sqrt(2) .* repmat(sqrt(chan.PDP),1,users.N) .* ...
( randn(chan.L,users.N) + sqrt(-1)*randn(chan.L,users.N));
% channel coefficients in frequency domain
chan.H = zeros(ofdm.N,users.N);
for k = 1 : users.N
chan.H(1:ofdm.N,k) = chan.F(:,1:chan.L) * chan.h(1:chan.L,k);
end
% building MMSE estimated channel coefficients
% here, the estimated channel coeffcients are modeled H^ = H + e
% the e is considered as a complex normal noise with the variance of
% chan.Est.SigmaMMSE according to the reference paper
chan.HhatMMSE = chan.H + ...
1/sqrt(2) .* sqrt(chan.Est.SigmaMMSE) .* ...
(randn(ofdm.N,users.N)+sqrt(-1)*randn(ofdm.N,users.N));
% normalization of variance for MMSE channel estimation according to
% reference [8]
chan.HhatMMSE = sqrt(1-chan.Est.SigmaMMSE)./sqrt(1+chan.Est.SigmaMMSE) .* ...
chan.HhatMMSE;
% chan.HhatMMSE = sqrt(1-chan.Est.SigmaMMSE) * chan.H;
% chan.H = chan.HhatMMSE + ...
% sqrt(chan.Est.SigmaMMSE/2)*(randn(ofdm.N,users.N)+sqrt(-1)*randn(ofdm.N,users.N));
% building LSE estimation channel coefficients
% for further analysis
chan.HhatLSE = [];
% extracting channel response at data positions
chan.Hdata = chan.H(ofdm.Is,:);
chan.HhatMMSEdata = chan.HhatMMSE(ofdm.Is,:);
chan.HhatLSEdata = [];