Consider a frequency-selective fading channel with total bandwidth 12 MHz and co
ID: 1925465 • Letter: C
Question
Consider a frequency-selective fading channel with total bandwidth 12 MHz and coherence bandwidth Bc =4 MHz. Divide the total bandwidth into 3 subchannels of bandwidth Bc , and assume that each subchannel is
a Rayleigh flat-fading channel with independent fading on each subchannel. Assume the subchannels have
average gains E[|H1(t)|2] = 1, E[|H2(t)|2] = .5, and E[|H3(t)|2] = .125. Assume a total transmit power of
30 mW, and a receiver noise spectral density of .001µW per Hertz.
(a) Find the optimal two-dimensional water-filling power adaptation for this channel and the corresponding
Shannon capacity, assuming both transmitter and receiver know the instantaneous value of Hj(t), j =
1, 2, 3.
(b) Compare the capacity of part (a) with that obtained by allocating an equal average power of 10 mW to
each subchannel and then water-filling on each subchannel relative to this power allocation.
Explanation / Answer
(a) C=13.98Mbps
MATLAB
Gammabar = [1 .5 .125];
ss = .001;
P = 30e-3;
N0 = .001e-6;
Bc = 4e6;
Pnoise = N0*Bc;
hsquare = [ss:ss:10*max(Gammabar)];
gamma = hsquare*(P/Pnoise);
for i = 1:length(Gammabar)
pgamma(i,:) = (1/Gammabar(i))*exp(-hsquare/Gammabar(i));
end
gamma0v = [1:.01:2];
for j = 1:length(gamma0v)
gamma0 = gamma0v(j);
sumP(j) = 0;
for i = 1:length(Gammabar)
a = gamma.*(gamma>gamma0);
[b,c] = max(a>0);
gammac = a(find(a));
pgammac = pgamma(i,c:length(gamma));
Pj_by_P = (1/gamma0)-(1./gammac);
sumP(j) = sumP(j) + sum(Pj_by_P.*pgammac)*ss;
end
end
[b,c] = min(abs((sumP-1)));
gamma0ch = gamma0v(c);
C = 0;
for i = 1:length(Gammabar)
a = gamma.*(gamma>gamma0ch);
[b,c] = max(a>0);
gammac = a(find(a));
pgammac = pgamma(i,c:length(gamma));
C = C + Bc*ss*sum(log2(gammac/gamma0ch).*pgammac);
end
(b) C=13.27Mbps
MATLAB
Gammabarv = [1 .5 .125];
ss = .001;
Pt = 30e-3;
N0 = .001e-6;
Bc = 4e6;
Pnoise = N0*Bc;
P = Pt/3;
for k = 1:length(Gammabarv)
Gammabar = Gammabarv(k);
hsquare = [ss:ss:10*Gammabar];
gamma = hsquare*(P/Pnoise);
pgamma = (1/Gammabar)*exp(-hsquare/Gammabar);
gamma0v = [.01:.01:1];
for j = 1:length(gamma0v)
gamma0 = gamma0v(j);
a = gamma.*(gamma>gamma0);
[b,c] = max(a>0);
gammac = a(find(a));
pgammac = pgamma(c:length(gamma));
Pj_by_P = (1/gamma0)-(1./gammac);
sumP(j) = sum(Pj_by_P.*pgammac)*ss;
end
[b,c] = min(abs((sumP-1)));
gamma0ch = gamma0v(c);
a = gamma.*(gamma>gamma0ch);
[b,c] = max(a>0);
gammac = a(find(a));
pgammac = pgamma(c:length(gamma));
C(k) = Bc*ss*sum(log2(gammac/gamma0ch).*pgammac);
end Ctot = sum(C);
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.