You are on page 1of 4

for iter=1:N_iter Công thức xác định H, nếu số

H = sqrt(0.5)*(randn(nR,nT)+j*randn(nR,nT)); lượng kênh thu lớn hơn hoặc bằng


if nR>=nT, số lượng kênh phát thì HH=H’*H;
HH = H'*H; Và ngược lại thì HH=H*H’
else Vòng lặp for I chạy từ 1 đến chiều
HH = H*H'; dài của SNR
end Công thức của C(i).
for i=1:length(SNR_dB) %random channel
generation
C(i) =
C(i)+log2(real(det(I+SNR_linear(i)/nT*HH)));
end
end

X = xlabel('SNR [dB]'); Đặt chú thích cho cột x thể hiện


set(X,'fontname','.Vntime','fontsize',18,'color','b'); SNR, font chữ Vntime , cỡ chữ 18,
Y = ylabel('Ergodic Capacity vs SNR [bps/Hz]'); màu b-blue.
set(Y,'fontname','.Vntime','fontsize',18,'color','b'); Đặt chú thích cho cột y thể hiện
T=title(strvcat(strcat('Ergodic MIMO channel Erogodic_Capacity vs SNR , font
capacity',... chữ Vntime , cỡ chữ 18, màu b-
' when CSI is not available at the transmitter'))); blue.
Đặt chú thích cho tiêu đề
Erogodic_Capacity vs SNR when
CSI is not available at the
transmitter
set(T,'fontname','.Vntime','fontsize',18,'color','b'); Đặt chú thuộc tính cho T với font
grid on; chữ Vntime, cỡ chữ 18 màu blue
set(gca,'fontname','.Vntime','fontsize',9); Grid on : thêm đường lưới vào đồ
s1='MIMO: {\it N_T_x}=4,{\it N_R_x}=4'; thị hiện tại
legend(s1); Đặt tên s1 với nT=4 ; nR=4, cỡ
chữ 9 font chữ Vntime

6.2
for Icase=1:5 Vòng lặp for có các case từ 1-5,
if Icase==1, case 1 : số máy phát là 4, số máy
nT=4; nR=4; % 4x4 thu là 4
elseif Icase==2, case 2 : số máy phát là 2, số máy
nT=2; nR=2; % 2x2 thu là 2
elseif Icase==3, case 3 : số máy phát là 1, số máy
nT=1; nR=2; % 1x2 thu là 2
elseif Icase==4, case 4 : số máy phát là 2, số máy
nT=2; nR=1; % 2x1 thu là 1
else case 5 : số máy phát là 1, số máy
nT=1; nR=1; % 1x1 thu là 1
end n = giá trị nhỏ nhất của ma trận nT,
nR
n = min(nT,nR); I là ma trận đơn vị n hàng, n cột
I = eye(n); C là ma trận 0 với 1 hàng và số cột
C(Icase,:) = zeros(1,length(SNR_dB)); là chiều dài SNR
Vòng lặp I chạy từ 1 đến N_iter
for iter=1:N_iter H=√0.5 × ℎà𝑚 𝑟𝑎𝑛𝑑𝑛(𝑛𝑅, 𝑛𝑇) +
H = sqrt(0.5)*(randn(nR,nT)+j*randn(nR,nT)); 𝑗 × ℎà𝑚 𝑟𝑎𝑛𝑑𝑛(𝑛𝑅, 𝑛𝑇)
if nR>=nT, Hàm randn(nR,nT) là hàm tạo ra
HH = H'*H; các số ngẫu nhiên, ma trận có các
else số bình thường, nếu số máy thu lớn
HH = H*H'; hơn số máy phát thì HH=H’*H và
end ngược lại HH=H*H’
for i=1:length(SNR_dB) %random channel H tạo đáp ứng xung kim
generation Công thức tính dung lượng
C(Icase,i) =
C(Icase,i)+log2(real(det(I+SNR_linear(i)/nT*HH)));
end
end
end

X = xlabel('SNR [dB]'); Đặt chú thích cho cột x thể hiện


set(X,'fontname','.Vntime','fontsize',18,'color','b'); SNR, font chữ Vntime , cỡ chữ 18,
Y = ylabel('Ergodic Capacity vs SNR [bps/Hz]'); màu b-blue.
set(Y,'fontname','.Vntime','fontsize',18,'color','b'); Đặt chú thích cho cột y thể hiện
Erogodic_Capacity vs SNR , font
T=title(strvcat(strcat('Ergodic MIMO channel chữ Vntime , cỡ chữ 18, màu b-
capacity',... blue.
' when CSI is not available at the transmitter'))); Đặt chú thích cho tiêu đề
set(T,'fontname','.Vntime','fontsize',18,'color','b'); Erogodic_Capacity vs SNR when
grid on; CSI is not available at the
transmitter
T có font chữ Vntime, cỡ chữ 18,
màu blue
set(gca,'fontname','.Vntime','fontsize',14); Đặt tên đường : s1,s2,s3,s4,s5
s1='MIMO: {\it N_T_x}=4,{\it N_R_x}=4'; Thêm chú giải vào đồ thị
s2='MIMO: {\it N_T_x}=2,{\it N_R_x}=2';
s3='MIMO: {\it N_T_x}=1,{\it N_R_x}=2';
s4='MIMO: {\it N_T_x}=2,{\it N_R_x}=1';
s5='MIMO: {\it N_T_x}=1,{\it N_R_x}=1';
legend(s1,s2,s3,s4,s5);
6.3
n = min(nT,nR); n =phần tử vector nhỏ nhất của ma
I = eye(n); trận nT, nR
I là ma trận đơn vị n hàng, n cột

rho = 0.2; Rho = 0.2


sq2 = sqrt(0.5); Sp2 = √0.5
Rtx = [1 rho rho^2 rho^3; rho 1 rho rho^2; rho^2 rho Ma trận Rtx bên phát
1 rho; rho^3 rho^2 rho 1]; Rho = 0.2
Ma trận Rrx bên thu
rho = 0.2;
Rrx = [1 rho rho^2 rho^3; rho 1 rho rho^2; rho^2 rho
1 rho; rho^3 rho^2 rho 1];

C_44_OL = zeros(1,length(SNR_dB)); C_44_OL = ma trận 0 với 1 hàng


C_44_CL = zeros(1,length(SNR_dB)); và số cột là chiều dài SNR_dB

for iter=1:N_iter Vòng lặp for chạy từ 1 đến N_iter


Công thức của Hw, H, lamda
Hw = sq2*(randn(4,4) + j*randn(4,4)); Vòng lặp for I chạy từ 1 đến chiều
H = Rrx^(1/2)*Hw*Rtx^(1/2); dài của SNR
tmp = H'*H/nT; Công thức của C(i).
Lamda = svd(H'*H); Vòng lặp for chạy từ 1 đến chiều
dài SNR_dB tính dung lượng
for i=1:length(SNR_dB) C_44_OL
% random channel generation Hw là đáp ứng xung kim
C_44_OL(i) = C_44_OL(i) + C là tính dung lượng
log2(det(I+SNR_linear(i)*tmp)); % Eq
9.41
P_opt =
FWC_Water_Filling(Lamda,SNR_linear(i),nT);
C_44_CL(i) =
C_44_CL(i)+log2(det(I+SNR_linear(i)/nT*diag(P_opt)
*diag(Lamda))); % Eq 9.44
end
end

C_44_OL = real(C_44_OL)/N_iter; C_44_OL cho kết quả là phần thực


C_44_CL = real(C_44_CL)/N_iter; của số phức rồi chia cho N_iter
set(gca,'fontname','.Vntime','fontsize',12); thêm chú thích với đồ thị có font
s1='Channel Unknown'; chữ Vntime, cỡ chữ 12, chú giải
s2='Channel Known'; s1=channel unknown
legend(s1,s2); s2=channel known

Dung lượng kênh tăng giải thích nôm na là do khi số anten phát và thu tăng thì ma trận kênh
truyền H có thể chia thành N kênh truyền song song độc lập, nghĩa là tăng N lần dung lượng
kênh (N ở đây là min(Nt,Nr)).
, CP có chiều dài càng lớn thì suy giảm SNR càng nhiều

You might also like