Chapter 10
Chapter 10
1. (a)
AAH = QΛQH
e Q
det[IN + AH A] = det[IN + QΛ eH ]
e N + ΛN )Q
= det[Q(I eH ]
= det[IN + ΛN ]
Rank(A)
= Πi=1 (1 + λi )
2. H = U ΣV T
−0.4793 0.8685 −0.1298
U = −0.5896 −0.4272 −0.6855
−0.6508 −0.2513 0.7164
1.7034 0 0
Σ= 0 0.7152 0
0 0 0.1302
−0.3458 0.6849 0.4263
−0.5708 0.2191 0.0708
V =
−0.7116 −0.6109
0.0145
−0.2198 0.3311 −0.9017
3. H = U ΣV T
Let
1 0 1 0 · ¸
1 0
U = 0 1 V = 0 1 Σ=
0 2
0 0 0 0
1 0 0
∴H= 0 2 0
0 0 0
5.
RH
X µ ¶
λi ρ
C= log2 1 +
Mt
i=1
P P
Constraint Vi = ρ λi = constant
∂C ρ 1 ρ 1
∴ = − =0
∂λi Mt ln 2 (1 + i ) Mt ln 2 (1 + λi ρ )
λ ρ
Mt Mt
⇒ λi = λj
∴ when all RH singular values are equal, this capacity is maximized.
8. The capacity of the channel is found by the decomposition of the channel into RH parallel channels,
where RH is the rank of the channel matric H.
X
C= P max B log2 (1 + λi ρi )
ρi : i ρi ≤ρ
i
√
where λi are the RH non-zero singular values of the channel matrix H and ρ is the SNR constraint.
γi = λi ρ
RH = 3, γ1 = 80, γ2 = 40, γ3 = 40. We first assume that γ0 is less than the minimum γi which is 40.
3
γ0 = P3 1
1+ i=1 γi
which gives γ0 = 2.8236 < mini γi , hence the assumption was correct.
C
= 12.4732 bits/sec/Hz
B
For
1 1 1 −1
1 1 −1 1
H=
1 −1
1 1
1 −1 −1 −1
RH = 4, γ1 = 40, γ2 = 40, γ3 = 40, γ4 = 40. We first assume that γ0 is less than the minimum γi
which is 40.
4
γ0 = P4 1
1 + i=1 γi
which gives γ0 = 3.6780 < mini γi , hence the assumption was correct.
C
= 13.7720 bits/sec/Hz
B
h11 . . . h1Mt
. ... .
9. H =
. ... .
. ... .
hMr 1 . . . hMr Mt M
r ×Mt
Denote G = HH T
hi1
.
1 1
lim Gii = lim [hi1 . . . hiMt ]
.
Mt →∞ Mt Mt →∞ Mt
.
hiMt
Mt
1 X
= lim khij k2
Mt →∞ Mt
j=1
2
= Ej khij k
= σ2
= 1 ∀i
hj1
.
1 1
lim Gij = lim [hi1 . . . hiMt ]
.
Mt →∞,i6=j Mt Mt →∞ Mt
.
hjMt
Mt
1 X
= lim hik hjk
Mt →∞ Mt
k=1
= Ek hik hjk
= Ek (hik )Ek (hjk )
= 0 ∀i, j, i 6= j
1
∴ lim HH T = IM
M →∞ M
h ρ i
∴ lim B log2 det IM + HH T = B log2 det [IM + ρIM ]
M →∞ M
= B log2 [1 + ρ] det IM
= M B log2 [1 + ρ]
10. We find the capacity by randomly generating 103 channel instantiations and then averaging over it.
We assume that distribution is uniform over the instantiations.
MATLAB CODE
clear;
clc;
Mt = 1;
Mr = 1;
rho_dB = [0:25];
rho = 10.^(rho_dB/10);
for k = 1:length(rho)
for i = 1:100
H = wgn(Mr,Mt,0,’dBW’,’complex’);
[F, L, M] = svd(H);
for j = 1:min(Mt,Mr)
sigma(j) = L(j,j);
end
sigma_used = sigma(1:rank(H));
gamma = rho(k)*sigma_used;
%% Now we do water filling\
gammatemp = gamma;
gammatemp1 = gammatemp;
gamma0 = 1e3;
while gamma0 > gammatemp1(length(gammatemp1));
gammatemp1 = gammatemp;
gamma0 = length(gammatemp1)/(1+sum(1./gammatemp1));
gammatemp = gammatemp(1:length(gammatemp)-1);
end
C(i) = sum(log2(gammatemp1./gamma0));
end
Cergodic(k) = mean(C);
end
25
Mt = Mr = 3
Mt = 2 Mr =3
Mt = Mr = 2
Mt = 2 Mr =1
20 Mt = Mr = 1
15
Cergodic
10
0
0 5 10 15 20 25
ρ (dB)
Figure 1: Problem 10
11. We find the capacity by randomly generating 104 channel instantiations and then averaging over it.
We assume that distribution is uniform over the instantiations.
MATLAB CODE
clear;
clc;
Mt = 1;
Mr = 1;
rho_dB = [0:30];
rho = 10.^(rho_dB/10);
for k = 1:length(rho)
for i = 1:1000
H = wgn(Mr,Mt,0,’dBW’,’complex’);
[F, L, M] = svd(H);
for j = 1:min(Mt,Mr)
sigma(j) = L(j,j);
end
sigma_used = sigma(1:rank(H));
gamma = rho(k)*sigma_used;
C(i) = sum(log2(1+gamma/Mt));
end
Cout(k) = mean(C);
pout = sum(C<Cout(k))/length(C);
while pout > .01
Cout(k) = Cout(k)-.1;
pout = sum(C<Cout(k))/length(C);
end
if Cout(k)<0;
Cout(k) = 0;
end
end
25
Mt = Mr = 3
Mt = 2 Mr =3
Mt = Mr = 2
Mt = 2 Mr =1
20 Mt = Mr = 1
15
Coutage
10
0
0 5 10 15 20 25 30
ρ (dB)
Figure 2: Problem 11
12.
ÃM !
Xr
?
P (u n < X) = P ui ni < X
i=1
Mr
X
= ui P (ni < X)
i=1
= P (ni < X)
∴ the statistics of u? n are the same as the statistics of each of these elements
13.
Σx = ku? Hvxk
= ku? Hvk2 kxk2
H
= v H H H u? u? Hvkxk2
= v H H H Hvkxk2
= v H QH Qvkxk2
≤ λmax kxk2
with equality when u, v are the principal left and right singular vectors of the channel matrix H
kxk2
∴ SN Rmax = λmax = λmax ρ
N
14.
0.1 0.5 0.9
H = 0.3 0.2 0.6
0.1 0.3 0.7
When both the transmitter and the receiver know the channel, for beamforming, u and v correspond
to the principal singular vectors (or the singular vectors corresponding to the maximum singular value
of H). Notice that the singular values of H are the square root of the eigen values of HH H (Wishart
Matrix).
Using Matlab, we get that the maximum singular value of H is 1.4480 and the singular vectors corre-
sponding to this value are
−0.7101
uopt = −0.4641
−0.5294
and
−0.1818
vopt = −0.4190
−0.8896
T v
It is easy to check that uTopt uopt = 1 and vopt opt = 1 and that
y = (uT Hv)x + uT n
and for a given transmit SNR of ρ, the received SNR is given as
since, uopt has norm 1, noise power is not increased. For, ρ = 1, SNR is simply (1.4480)2 = 2.0968.
When the channel is not known to the transmitter, it allocates equal power to all the antennas and so
the precoding vector (or the optimal weights) at the transmitter is given as
1
1
v2 = √ 1
3 1
Define
h = Hv2
So, eq. 10.17 in the reader can be written as
y = (uT h)x + uT n
uT2 ∗ h = 1.2477
since, u2 has norm 1, noise power is not increased. For, ρ = 1, SNR is simply (1.2477)2 = 1.5567.
15. (a) ρ = 10 dB = 10
Pe = ρ−d
So to have Pe ≤ 10−3 , we should have d ≥ 3, or at least d = 3. Solving the equation that relates
diversity gain d to multiplexing gain r at high SNR’s we get
d = (Mr − r)(Mt − r)
⇒ 3 = (8 − r)(4 − r)
Solving for r we get
r = 3.35 or 8.64
We have that r ≤ min{Mr , Mt }, so r ≤ 4 and so r = 3.35. But we know that r has to be an integer.
So, we take the nearest integer which is smaller than the calculated value of r, which gives us r=3 .
If we are allowed to assume that equations 10.23 and 10.24 hold at finite SNR’s too and we are
given that we can use base 2 for logarithms, we can find the data rate as
16. √
According to SVD of h
λ = 1.242
∴ C/B = log2 (1 + λρ) = log2 (1 + 1.2422 .10) = 4.038bps/Hz
17. · ¸ · ¸· ¸· ¸
.3 .5 −.5946 .8041 .8713 0 −.8507 .5757
H= =
.7 .2 −.8041 .5946 0 .3328 −.5757 −.8507
P = 10mW
N0 = 10−9 W/Hz
B = 100 KHz
(a) When H is known both at the transmitter and at the receiver, the transmitter will use the optimal
precoding filter and the receiver will use the optimal shaping filter to decompose the MIMO chan-
nel into 2 parallel channels. We can then do water-filling over the two parallel channels available
to get capacity.
Finding the γi ’s
λ21 P
γ1 = = 75.92
N0 B
λ22 P
γ2 = = 11.08
N0 B
Finding γ0
Now, we have to find the cutoff value γ0 . First assume that γ0 is less than both γ1 and γ2 . Then
µ ¶ µ ¶
1 1 1 1
− + − =1
γ0 γ1 γ0 γ2
2 1 1
⇒ =1+ +
γ0 γ1 γ2
1
⇒ γ0 = = 1.81
1
1 + γ1 + γ12
which is less than both γ1 and γ2 values so our assumption was correct.
Finding capacity
(b) Total is
Essentially we have two parallel channels after the precoding filter and the shaping filter are used
at the transmitter and receiver respectively.
S(γ)
M (γ) = 1 + γK
S
Finding K
−1.5
K= = .283
ln(5Pb )
γK = γ0 /K.
Finding γ0 or γK
We now find the cut-off γ0 . First assume that γ0 < {γ1 , γ2 }. Notice that γ1 and γ2 have already
been calculated in part (a) as γ1 = 75.92 and γ2 = 11.08.
µ ¶ µ ¶
1 1 1 1
− + − =1
γ0 γ1 K γ0 γ2 K
2 1 1
⇒ =1+ +
γ0 γ1 K γ2 K
1
⇒ γ0 = ³ ´ = 1.4649
1 1 1
1 + K γ1 + γ2
which is less than both γ1 and γ2 values, so our assumption was correct.
γK = γ0 /K = 5.1742
Finding Rate R
(c) Since now we use beamforming to get diversity only, the transmitter and the receiver use the
principal left and right eigen vectors of the Wishart Matrix HHH .
Once this is done the SNR at the combiner output is simply λmax ρ, where λmax is the maximum
eigen value of the Wishart Matrix HHH and ρ is NP0 B
Finding γs
As given in the question, λmax is 0.7592 and ρ was calculated to be 100. So we get that γs = 75.92 .
Finding Pb
When using BPSK, γs = γb . Now we can use the expression for Pb for BPSK
³p ´ ½
¡√ ¢ 0 Using the approx. given in the Ques.
Pb = Q 2γb = Q 2 × 75.92 =
3.4 × 10−35 Using Matlab
Finding Rate R
Since we are using BPSK and are given that B = 1/Tb , we get the rate using BPSK to be
R=100 Kbps .
Comparing with part (b), we can see that the rate R decreases by 397.36 Kbps and the Pb im-
proves as Pb is now 3.4 × 10−35 ∼ 0 whereas earlier it was 10−3 .
(d) Therefore we see that we can tradeoff rate for robustness of the system. If we are willing to de-
crease the rate at which we transmit, we can get more diversity advantage i.e. one strong channel
which gives a much less value of Pb .
rho = 10.^(rho_dB/10);
for k = 1:length(rho)
for i = 1:1000
H = wgn(Mr,Mt,0,’dBW’,’complex’);
[F, L, M] = svd(H);
for j = 1:min(Mt,Mr)
sigma(j) = L(j,j);
end
sigma_used = sigma(1:rank(H));
gamma = rho(k)*sigma_used;
%% Now we do water filling\
gammatemp = gamma;
gammatemp1 = gammatemp;
gamma0 = 1e3;
while gamma0 > gammatemp1(length(gammatemp1));
gammatemp1 = gammatemp;
gamma0 = length(gammatemp1)/(1+sum(1./gammatemp1));
gammatemp = gammatemp(1:length(gammatemp)-1);
end
C(i) = sum(log2(gammatemp1./gamma0));
end
Cergodic(k) = mean(C);
end
(b) clear;
clc;
Mt = 4;
Mr = Mt;
rho_dB = [0:20];
rho = 10.^(rho_dB/10);
for k = 1:length(rho)
for i = 1:1000
H = wgn(Mr,Mt,0,’dBW’,’complex’);
[F, L, M] = svd(H);
for j = 1:min(Mt,Mr)
sigma(j) = L(j,j);
end
sigma_used = sigma(1:rank(H));
gamma = rho(k)*sigma_used;
C(i) = sum(log2(1+gamma/Mt));
end
Cout(k) = mean(C);
end
19. using Matlab we get Cout = 7.8320
MATLAB CODE
clear;
clc;
Mt = 4;
Mr = Mt;
rho_dB = 10;
rho = 10.^(rho_dB/10);
for k = 1:length(rho)
for i = 1:1000
25
Cergodic Mt = Mr = 1
C M =M =1
out t r
Cergodic Mt = Mr = 4
Cout Mt = Mr = 4
20
15
C
10
0
0 2 4 6 8 10 12 14 16 18 20
ρ (dB)
Figure 3: Problem 18
H = wgn(Mr,Mt,0,’dBW’,’complex’);
[F, L, M] = svd(H);
for j = 1:min(Mt,Mr)
sigma(j) = L(j,j);
end
sigma_used = sigma(1:rank(H));
gamma = rho(k)*sigma_used;
C(i) = sum(log2(1+gamma/Mt));
end
Cout(k) = mean(C);
pout = sum(C<Cout(k))/length(C);
while pout > .1
Cout(k) = Cout(k)-.01;
pout = sum(C<Cout(k))/length(C);
end
if Cout(k)<0;
Cout(k) = 0;
end
end
20. As µ increases, the span of cdf becomes narrower and so capacity starts converging to a single number.
MATLAB CODE
clear;
clc;
Mt = 8;
Mr = Mt;
rho_dB = 10;
rho = 10.^(rho_dB/10);
for i = 1:1000
H = wgn(Mr,Mt,0,’dBW’,’complex’);
[F, L, M] = svd(H);
for j = 1:min(Mt,Mr)
sigma(j) = L(j,j);
end
sigma_used = sigma(1:rank(H));
gamma = rho*sigma_used;
C(i) = sum(log2(1+gamma/Mt));
end
[f,x] = ecdf(C);
0.8
0.7
0.6
FX(x)
0.5
0.4
0.3
0.2
0.1
0
6 7 8 9 10 11 12 13 14 15 16 17 18
x
Figure 4: Problem 20