68-B18DCVT365-Đinh Trọng Tú

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 28

BỘ THÔNG TIN VÀ TRUYỀN THÔNG

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG


=====***=====

BÀI TẬP MÔN HỌC


CƠ SỞ KĨ THUẬT THÔNG TIN VÔ TUYẾN
ĐỀ TÀI:

BÀI TẬP VỀ MATLAB

SINH VIÊN: ĐINH TRỌNG TÚ


MÃ SV : B18DCVT365
LỚP : D18VT05-B
GIẢNG VIÊN THẦY: NGUYỄN VIẾT ĐẢM
HỌC KÌ 2 NĂM HỌC: 2020-2021

HÀ NỘI – 7/2021
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

MỤC LỤC
BÀI 1. Sim_FWC_05_1_Medeling_SVD_Mimo_system .......................................................... 3
BÀI 2. Sim_FWC6 ........................................................................................................................ 8
2.1 Sim_FWC_06_01_MIMO_Capacity_vs_SNR.m .............................................................. 8
2.2 Sim_FWC_06_02_MIMO_Capacity_vs_SNR.m ............................................................ 13
2.3 Sim_FWC_06_03_OL_CL_MIMO_Capacity.m ............................................................. 15
BÀI 3. Trả lời Bài 6 + Bài 7: Mô phỏng kênh và hệ thống SVD MIMO và Mô phỏng dung
lượng kênh MIMO ......................................................................................................................... 19

Page | 2
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

BÀI 1. Sim_FWC_05_1_Medeling_SVD_Mimo_system

STT Câu lệnh Giải thích Gh


i
ch
ú
1 Clc ; Xóa cửa sổ lệnh
2 Clear ; Xóa các mục khỏi không
gian làm việc, giải phóng
bộ nhớ hệ thống

3 Close all ; Xóa tất cả hình đã chỉ


định
4

5 N_Tx= 8; Khai báo tham số/ biến


N_Tx
6 N_Rx = 4; Khai báo tham số/ biến
N_Rx
7 fD = 10; Khai báo tham số/ biến
fD
8 N_symbol= 100; Khai báo tham số / biến
N_symbol
9 T_sim= 0.1; Khai báo tham số/ biến
T_sim
10 H_Gausian = Tạo ma trận 0 H_gausian
zeros(N_Rx,N_Tx,N_symbol); với N_Rx hàng N_Tx cột

11 for k = 1:N_symbol Vòng lặp k chạy từ 1 đến


N_symbol
12 H_Gausian(:,:,k) =
(randn(N_Rx,N_Tx) +
i*randn(N_Rx,N_Tx))/sqrt(2);

13 H_Gau= zeros(N_Rx,N_Tx); Tạo ma trận 0 H_Gau với


N_Rx hàng N_Tx cột

Page | 3
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

14 H_Gau= H_Gausian(:,:,1); Tạo ma trận H_Gau từ ma


trận H_gausian
15 H_Rayleigh= Tạo ma trận 0
zeros(N_Rx,N_Tx,N_symbol); H_Rayleigh với N_rx
hàng N_Tx cột
16 for m = 1:N_Rx Vòng lặp m chạy từ 1
đến
N_Rx
17 for n = 1:N_Tx Vòng lặp n chạy từ 1 đến
N_Tx
18 H_Rayleigh(m,n,:) =
(FWC_Rayleigh_Channel(T_sim,N_
symbol,fD) ...
+
i*FWC_Rayleigh_Channel(T_sim,N
_symbol,fD))/sqrt(2);

19 H_Ray= H_Rayleigh(:,:,1); Tạo ma trận H_Ray từ ma


trận H_Rayleigh
20 disp(' Ma tran kenh H'); Hiển thị : Ma tran kenh H

21 disp(' Kich thuoc H'); Hiển thị : Kich thuoc H

22 disp(size(H_Ray)) Hiển thị mảng H_Ray

23.. disp(' Phan tich SVD cua H: [U, D, Hiển thị : Phan tich SVD
V] = svd(H)'); cua H: [U, D, V] =
svd(H)
24 [U_Gau, D_Gau, V_Gau] = Tạo ma trận U_Gau,
svd(H_Gau); D_Gau, V_Gau từ ma
trận H_Gau
25 [U_Ray, D_Ray, V_Ray] = Tạo ma trận U_Ray,
svd(H_Ray); D_Ray, V_Ray từ ma trận
H_Ray
26 disp('Ma tran tien ma hoa V '); Hiển thị: Ma tran tien ma
hoa
27 disp('Kich thuoc size(V)'); Hiển thị : Kich thuoc
size(V)
28 disp(size(V_Ray)); Hiển thị mảng V_Ray

Page | 4
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

29 disp('Ma tran hau ma hoa U '); Hiển thị : Ma tran hau ma


hoa U
30 disp('Kich thuoc size(U)'); Hiển thị : Kich thuoc
size(U)
31 disp(size(U_Ray)); Hiển thị mảng U_Ray

32 disp('Ma tran duong cheo D '); Hiển thị : Ma tran duong


cheo D
33 disp(' Kich thuoc size(D)'); Hiển thị : Kich thuoc
size(D)
34 disp(size(D_Ray)); Hiển thị mảng D_Ray

.
Kết quả mô phỏng :

Page | 5
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Page | 6
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Page | 7
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

BÀI 2. Sim_FWC6
2.1 Sim_FWC_06_01_MIMO_Capacity_vs_SNR.m

STT Câu lệnh Giải thích Ghi


chú
1 Clc ; Xóa cửa sổ lệnh
2 Clear ; Xóa các mục khỏi
không gian làm
việc, giải phóng bộ
nhớ hệ thống

Page | 8
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

3 Close all ; Xóa tất cả hình đã


chỉ định
4 SNR_dB = [0:5:30] Khai báo tham
số/biến SNR_dB
chạy từ 0 đến 30
với bước nhảy là 5
5 SNR_linear = 10.^(SNR_dB/10.) Khai báo tham số/
biến SNR_linear =
SNR_dB
10 10
6 N_iter = 10000 Khai báo tham số/
biến N-iter
7 nT = 8 Khai báo tham số/
biến nT
8 nR = 4 Khai báo tham số /
biến nR
9 n = min(nT,nR) Khai báo tham số/ Note 1
biến N với N là giá
trị nhỏ nhất hoặc
nT hoặc nR
10 I = eye(n) Trả về ma trận Note 2
nhận dạng n cột n
hàng và có đường
chéo chính bằng 1.
11 C = zeros(l,length(SNR_dB)) Tạo ra ma trận chờ Note 3
(tất cả các giá trị
trong đó bằng 0)
12 for iter=1:N_iter Vòng lặp iter chạy
từ 1 đếm 1000
13 if nR>=nT, Xét điều kiện nR
HH = H'*H; với nT để thực
else hiện câu lệnh.
HH = H*H';

14 end Kết thúc lệnh for


nhỏ ở trên
15 for i=1:length(SNR_dB) Dùng vòng lặp i
chạy từ 1 đến
length(SNR_dB)

Page | 9
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

15 X= real(z) trả về phần thực Note 4


của các phần tử
của mảng phức Z.
16 D = det(X) d = det (X) trả về Note 5
định thức của ma
trận vuông X. Nếu
X chỉ chứa các
mục số nguyên thì
kết quả d cũng là
một số nguyên.
17 figure(1) Tạo ra cửa sổ chứa
hình 1.
16 L = legend(s1); Lệnh legend :
Thêm chú giải vào
các trục
17 set(h1,'color','c') Cài đặt các thuộc
tính cho h1

18 set(h1,'Name','Simulation for Cài đặt các thuộc


MIMO_Ergodic_Capacity_vs_SNR'); tính cho h1

19 plot(SNR_dB,C,'r-s','LineWidth',[3.5]) Tạo ra một biểu đồ


dòng dữ liệu 2-D
của dữ liệu C so
với các giá trị
tương ứng
SNR_dB
20 title Thêm tiêu đề cho
các trục hiện tại
21 strvcat Nối các chuỗi theo Note 6
chiều dọc
22 strcat Nối các chuỗi theo Note 7
chiều ngang
Note:
Note 1: >> n = min(4,8)
n=4
>> min(4,2)
ans = 2

Page | 10
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

➔ Lấy giá trị nhỏ nhất 1 trong 2


Note 2: vd

Note 3:

Note 4: vd

>> real(i*3+2)

ans = 2

Note 5:

>> d=det(5)

d =5

Page | 11
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

>> d=det(24334)

d = 24334

Note 6:

Note 7:

Kết quả:

- Nhận xét:
+ Với Tx = Rx = 4 sử dụng hệ thống MIMO SVD ngẫu nhiên giá trị dung
lượng kênh C tăng mạnh khi tỉ lệ SNR tăng .

Page | 12
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

2.2 Sim_FWC_06_02_MIMO_Capacity_vs_SNR.m

STT Lệnh Ý nghĩa Ghi chú


1 Clc ; Xóa cửa sổ lệnh
2 Clear ; Xóa các mục khỏi không
gian làm việc, giải phóng
bộ nhớ hệ thống

3 Close all ; Xóa tất cả hình đã chỉ


định
4 SNR_dB = [0:5:30] Khai báo tham số/biến
SNR_dB chạy từ 0 đến
30 với bước nhảy là 5
5 SNR_linear = Khai báo tham số/ biến
SNR_dB
10.^(SNR_dB/10.)
SNR_linear = 10 10

6 N_iter = 10000 Khai báo tham số/ biến


N-iter
7 for Icase=1:5

8 if Icase==1, Xét các trường hợp:


nT=4; nR=4;
elseif Icase==2, +TH1: Icase =1 thì nT=4
nT=2; nR=2; và nR=4
elseif Icase==3,
nT=1; nR=2; +TH2: Icase =2 thì nT=2
elseif Icase==4, và nR=2
nT=2; nR=1;
else
+TH3: Icase =3 thì nT=1
nT=1; nR=1; và nR=2
+TH4: Icase =4 thì nT=2
và nR=1
+ Còn lại thì nT = 1 và
nR = 1
9 end Kết thức lệnh for trên
10 n = min(nT,nR) Gán giá trị n là giá trị nhỏ
nhất hoặc nT hoặc nR
11 I = eye(n) Trả về ma trận nhận dạng
n cột n hàng và có đường
chéo chính bằng 1
12 C(Icase,:) = Tạo ra ma trận chờ có 1
zeros(1,length(SNR_dB))
hàng và length(SNR-dB)
cột

Page | 13
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

13 for iter=1:N_iter Vòng lắp bới iter chạy từ


1 đến N_iter
14 randn(nR,nT) Trả về ma trận nR x nT
với các giá trị bất kỳ
15 if nR>=nT, Xét trường hợp nếu nR>=
HH = H'*H;
else nT thì HH = H’*H
HH = H*H'; Ngược lại HH= H*H’

16 end Kết thúc lệnh for trên.


Các lệnh sau tương tự như bài tước

Từ công thức ta chuyển thành code:

Page | 14
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Kết quả:

- Nhận xét:
+ Với Tx và Rx khác nhau khi Tx > Rx (Tx = 2, Rx = 1) có dung lượng kênh
nhỏ và tăng gần như tuyến tính với SNR
+ Với Tx và Rx khác nhau nhưng Tx < Rx (Tx = 1, Rx = 2) có dung lượng
lớn hơn khi Tx > Rx.
+ Với số lượng Tx và Rx bằng nhau trường hợp này khá lý tưởng khi truyền
có dung lượng kênh lớn khi SNR tăng cao, càng nhiều anten phát và anten thu
thì C càng tăng mạnh.
2.3 Sim_FWC_06_03_OL_CL_MIMO_Capacity.m

STT Lệnh Ý nghĩa Ghi chú


1 Clc ; Xóa cửa sổ lệnh
2 Clear ; Xóa các mục khỏi
không gian làm việc,
giải phóng bộ nhớ hệ
thống

Page | 15
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

3 Close all ; Xóa tất cả hình đã chỉ


định
4 SNR_dB = [0:2:22] Khai báo tham số/biến
SNR_dB chạy từ 0 đến
30 với bước nhảy là 5
5 SNR_linear = Khai báo tham số/ biến
SNR_dB
10.^(SNR_dB/10.)
SNR_linear = 10 10

6 N_iter = 10000 Khai báo tham số/ biến


N-iter
7 nT = 4 Khai báo tham số/ biến
nT
8 nR = 4 Khai báo tham số / biến
nR
9 n = min(nT,nR) Khai báo tham số/ biến
N với N là giá trị nhỏ
nhất hoặc nT hoặc nR
10 I = eye(n) Trả về ma trận nhận
dạng n cột n hàng và có
đường chéo chính bằng
1.
11 rho = 0.2 Khai báo biến Rho = 0.2
12 sq2 = sqrt(0.5) Khai báo biến sq2=
√0.5
13 C_44_OL = Khởi tạo ma trận chờ để
zeros(1,length(SNR_dB)); đưa giá trị sau này vào
C_44_CL =
zeros(1,length(SNR_dB));

14 for iter=1:N_iter Vòng lặp thứ nhất và


Hw = sq2*(randn(4,4) thiết lập các công thức
+ j*randn(4,4));
H =
Rrx^(1/2)*Hw*Rtx^(1/2);
tmp = H'*H/nT;
Lamda = svd(H'*H);

Page | 16
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Đây là hàm chức năng:

Page | 17
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Kết quả như hình dưới:

- Nhận xét:
+ Xét kênh vô tuyến MIMO sử dụng Tx = Rx = 4:
+ Với kênh sử dụng CSI ở phía transmitter có dung lượng kênh vòng đóng
lớn hơn so với kênh
không sử dụng CSI ở giá trị SNR thấp.
+ Khi giá trị SNR tăng giá trị dung lượng kênh của cả 2 phương thức đều tăng
mạnh và tới một giá trị nào đó sẽ có dung lượng kênh tiệm cận nhau.
+ Khi sử dụng CSI cùng giải pháp Waterfilling solution ta sẽ sử dụng được
băng tần hiệu quả, cấp phát công suất tối ưu cho kênh.

Page | 18
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

BÀI 3. Trả lời Bài 6 + Bài 7: Mô phỏng kênh và hệ thống


SVD MIMO và Mô phỏng dung lượng kênh MIMO

Page | 19
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Page | 20
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Page | 21
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Page | 22
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Page | 23
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Page | 24
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Page | 25
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Page | 26
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Page | 27
Giảng viên hướng dẫn thầy: Nguyễn Viết Đảm

Page | 28

You might also like