GIẢI THÍCH code MATLAB thầy N.V.Đảm
HỌ VÀ TÊN: VŨ TIẾN ANH MÃ SV: B18DCVT027 LỚP: D18DQVT03 GIẢI THÍCH MATLAB Sim_FWC05: Chạy mơ giải thích lệnh Dịng lệnh clc Giải thích Xóa cửa sổ lệnh close all đóng clear Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống Số anten phát Số anten thu Tần số Doppler N_Tx =8 N_Rx = 4; fD = 10; N_symbol = 100; T_sim = 0.1 H_Gausian = zeros(N_Rx,N_Tx,N_symbol); Khơng có ký hiệu 2048 Thời gian mô Thiết lập giá trị cho biếH_gausian tạo một,mảng N_symbol ma trận kích thước Rx x Tx Ý nghĩa Xóa hết tất lệnh command window Đóng figure (hình vẽ đồ thị minh họa cho chương trình H_Gausian(:,:,k) = (randn(N_Rx,N_Tx) + i*randn(N_Rx,N_Tx))/sqrt(2); Thiết lập ma trận H for k = 1:N_symbol Vòng lặp k chạy từ đến N_symbol Tạo ma trận H_Gau với N_Rx hàng N_Tx cột Tạo ma trận H_Gau từ ma trận H_gausian Tạo ma trận H_Rayleigh với N_rx hàng N_Tx cột Vòng lặp n chạy từ đến N_Rx Vòng lặp n chạy từ đến N_Tx Tính tốn H phainh reyleigh cho trường hợp m n tương ứng với N_Rx N_Tx H_Gau= zeros(N_Rx,N_Tx); H_Gau= H_Gausian(:,:,1); H_Rayleigh= zeros(N_Rx,N_Tx,N_symbol); for m = 1:N_Rx for n = 1:N_Tx H_Rayleigh(m,n,:) = (FWC_Rayleigh_Channel(T_sim,N_s ymbol,fD) + *FWC_Rayleigh_Channel(T_sim,N_s ymbol,fD))/sqrt(2); H_Ray= H_Rayleigh(:,:,1); disp(' Ma tran kenh H'); disp(' Kich thuoc H'); disp(size(H_Ray)) disp(' Phan tich SVD cua H: [U, D, V] = svd(H)'); [U_Gau, D_Gau, V_Gau] = svd(H_Gau); Tạo ma trận H_Ray từ ma trận H_Rayleigh Hiển thị : Ma tran kenh H Hiển thị : Kich thuoc H Hiển thị mảng H_Ray Hiển thị : Phan tich SVD cua H: [U, D, V] = svd(H) Tạo ma trận U_Gau, D_Gau, V_Gau từ ma trận H_Gau [U_Ray, D_Ray, V_Ray] = svd(H_Ray); disp('Ma tran tien ma hoa V '); disp('Kich thuoc size(V)'); disp(size(V_Ray)); disp('Ma tran hau ma hoa U '); disp('Kich thuoc size(U)'); disp(size(U_Ray)); disp('Ma tran duong cheo D '); disp(' Kich thuoc size(D)'); disp(size(D_Ray)); Kết mô Tạo ma trận U_Ray, D_Ray, V_Ray từ ma trận H_Ray Hiển thị: Ma tran tien ma hoa Hiển thị : Kich thuoc size(V) Hiển thị mảng V_Ray Hiển thị : Ma tran hau ma hoa U Hiển thị : Kich thuoc size(U) Hiển thị mảng U_Ray Hiển thị : Ma tran duong cheo D Hiển thị : Kich thuoc size(D) Hiển thị mảng D_Ray Sim_FWC_06_01_MIMO_Capacity_vs_SNR Câu lệnh Clc ; Clear ; Giải thích Xóa cửa sổ lệnh Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống Close all ; SNR_dB = [0:5:30] Xóa tất hình định Khai báo tham số/biến SNR_dB chạy từ đến 30 với bước nhảy SNR_linear = 10.^(SNR_dB/10.) nT = Khai báo tham số/ biến SNR_linear Khai báo tham số/ biến Niter Khai báo tham số/ biến nT nR = Khai báo tham số / biến nR n = min(nT,nR) Khai báo tham số/ biến N với N giá trị nhỏ nT nR Trả ma trận nhận dạng n xn Tạo ma trận chờ (tất giá trị 0) Vịng lặp iter chạy từ đếm 1000 Tạo ma trận H kênh phadinh N_iter = 10000 I = eye(n) C = zeros(l,length(SNR_dB)) for iter=1:N_iter H= sqrt(0.5)*(randn(nR,nT) +j*randn(nR,nT)); if nR>=nT, HH = H'*H; else HH = H*H'; Xét điều kiện nR với nT để thực câu lệnh Ghi end for i=1:length(SNR_dB) C(i) = C(i) +log2(real(det(I+SNR_linear (i)/nT*HH))); X= real(z) D = det(X) figure(1) Kết thúc lệnh for nhỏ Dùng vòng lặp i chạy từ đến length(SNR_dB) Tính giá trị dung lượng kênh C trả phần thực phần tử mảng phức Z d = det (X) trả định thức ma trận vuông X Nếu X chứa mục số nguyên kết d số nguyên Tạo cửa sổ chứa hình L = legend(s1); Lệnh legend : Thêm giải vào trục set(h1,'color','c') Cài đặt h1 set(h1,'Name','Simulation for MIMO_Ergodic_Capacity_vs_SNR'); Cài đặt thuộc tính cho h1 plot(SNR_dB,C,'r-s','LineWidth',[3.5]) vẽ gía trị C theo SNR_dB lên bảng hiển thị kết Thêm tiêu đề cho trục T=title(strvcat(strcat('Ergodic MIMO channel capacity', ' when CSI is not available at the transmitter'))); set(T,'fontname','.Vntime','fontsize',18,'col đặt font màu or','b'); set(gca,'fontname','.Vntime','fontsize',9); Thêm thích cho hiển thị s1='MIMO: {\it N_T_x}=4,{\it N_R_x}=4'; Hiển thị lưới chia phía đồ thị Nối chuỗi theo chiều dọc Nối chuỗi theo chiều ngang bật thích đồ thị grid on; strvcat strcat legend(s1); Kết mô TH1 : = 8; = 4; Ergodic MIMO channel capacity when CSI is not available at the transmitter 40 MIMO: NTx=4, NRx=4 35 Ergodic Capacity vs SNR [bps/Hz] nT nR 30 25 20 15 10 0 10 15 SNR [dB] 20 25 30 TH2 : nT nR = 4; = 4; Ergodic MIMO channel capacity when CSI is not available at the transmitter 35 MIMO: NTx=4, NRx=4 Ergodic Capacity vs SNR [bps/Hz] 30 25 20 15 10 0 10 15 SNR [dB] TH3: nT nR = 2; = 4; 20 25 30 Ergodic MIMO channel capacity when CSI is not available at the transmitter 22 MIMO: NTx=2, NRx=4 Ergodic Capacity vs SNR [bps/Hz] 20 18 16 14 12 10 10 15 20 25 SNR [dB] → Dung lượng tăng nhanh SNR tăng Sim_FWC_06_02_MIMO_Capacity_vs_SNR.m Lệnh Clc ; Clear ; Ý nghĩa Xóa cửa sổ lệnh Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống Close all ; Xóa tất hình định Khai báo tham số/biến SNR_dB chạy từ đến 30 với bước nhảy Khai báo tham số/ biến SNR_linear = SNR_dB = [0:5:30] SNR_linear = 10.^(SNR_dB/10.) SNR_dB 10 N_iter = 10000 10 Khai báo tham số/ biến N-iter Ghi 30 for Icase=1:5 if Icase==1, nT=4; nR=4; elseif Icase==2, nT=2; nR=2; elseif Icase==3, nT=1; nR=2; elseif Icase==4, nT=2; nR=1; else nT=1; nR=1; end n = min(nT,nR) I = eye(n) C(Icase,:) = zeros(1,length(SNR_dB)) for iter=1:N_iter H= sqrt(0.5)*(randn(nR,nT) +j*randn(nR,nT)); randn(nR,nT) if nR>=nT, HH = H'*H; else HH = H*H'; Lặp qua giá trị Icase từ tới Xét trường hợp: +TH1: Icase =1 nT=4 nR=4 +TH2: Icase =2 nT=2 nR=2 +TH3: Icase =3 nT=1 nR=2 +TH4: Icase =4 nT=2 nR=1 + Cịn lại nT = nR = Kết thức lệnh for Gán giá trị n giá trị nhỏ nT nR Trả ma trận nhận dạng n cột n hàng có đường chéo Tạo ma trận chờ có hàng length(SNR-dB) cột Vịng lắp bới iter chạy từ đến N_iter Tạo ma trận H kênh phadinh Trả ma trận nR x nT với giá trị Xét trường hợp nR>= nT HH = H’*H Ngược lại HH= H*H’ plot(SNR_dB,C(1,:),'b-o','LineWidth',3.5); hold on; plot(SNR_dB,C(2,:),'r','LineWidth',2.0); hold on; plot(SNR_dB,C(5,:),'g^','LineWidth',1.5); hold on; Biễu diễn kết C theo SNR_dB X = xlabel('SNR [dB]'); Đặt tên, font, màu cho trục x,y set(X,'fontname','.Vntime','fontsize',18,'col or','b'); Y = ylabel('Ergodic Capacity vs SNR [bps/Hz]'); set(Y,'fontname','.Vntime','fontsize',18,'col or','b'); T=title(strvcat(strcat('Ergodic MIMO channel capacity', ' when CSI is not available at the transmitter'))); Đặt cho figure set(T,'fontname','.Vntime','fontsize',18,'col or','b'); grid on; strvcat strcat end Kết mô Nối chuỗi theo chiều dọc Nối chuỗi theo chiều ngang Kết thúc lệnh for Ergodic MIMO channel capacity when CSI is not available at the transmitter 35 MIMO: NTx=4, NRx=4 MIMO: NTx=2, NRx=2 Ergodic Capacity vs SNR [bps/Hz] 30 MIMO: NTx=1, NRx=2 MIMO: NTx=2, NRx=1 MIMO: N =1, N =1 Tx 25 Rx 20 15 10 0 10 15 20 25 30 SNR [dB] =>Hiệu số anten phat = anten thu Sim_FWC_06_03_OL_CL_MIMO_Capacity.m Lệnh Ý nghĩa Clc ; Clear ; Xóa cửa sổ lệnh Xóa mục khỏi khơng gian làm việc, giải phóng nhớ hệ thống Close all ; SNR_dB = [0:2:22] Xóa tất hình định Khai báo tham số/biến SNR_dB chạy từ đến 30 với bước nhảy Khai báo tham số/ biến SNR_linear = 10.^(SNR_dB/10.) Ghi SNR_dB nT = SNR_linear = 10 10 Khai báo tham số/ biến Niter Khai báo tham số/ biến nT nR = Khai báo tham số / biến nR N_iter = 10000 n = min(nT,nR) Khai báo tham số/ biến N với N giá trị nhỏ nT nR I = eye(n) Khởi tạo biến I với giá trị ma trận n x n rho = 0.2 Khai báo biến Rho = 0.2 Rtx = [1 rho rho^2 rho^3; rho rho rho^2; rho^2 Tạo ma trận chéo hóa Rtx rho rho; rho^3 rho^2 rho 1]; 4x4 C_44_OL = zeros(1,length(SNR_dB)); C_44_CL Khởi tạo biến C_44_OL = zeros(1,length(SNR_dB)); C_44_CL có giá trị ma trận kích thước 1x length(SNR_dB) sq2 = sqrt(0.5) Khai báo biến sq2= √0.5 for iter=1:N_iter Lặp N_iter lần với giá trị iter thay đổi từ tới N_iter Hw = sq2*(randn(4,4) + j*randn(4,4)); Tạo biến Hw H = Rrx^(1/2)*Hw*Rtx^(1/2); Khởi tạo giá trị H tmp = H'*H/nT; Tạo biến tmp giá trị H(chueyern vi)*H/nT Lamda = svd(H'*H); Khởi tạo biến Lamda giá trị svd(H’*H) for i=1:length(SNR_dB) Lặp qua giá trị SNR vừa tạo C_44_OL(i) = C_44_OL(i) + C_44_OL(i) = C_44_OL(i) + log2(det(I+SNR_linear(i)*tm p)); log2(det(I+SNR_linear(i)*tm p)); P_opt = FWC_Water_Filling(Lamda, Tính giá trị P_opt dựa vào SNR_linear(i),nT); hàm FWC_Water_filling C_44_CL(i) = C_44_CL(i) Tính giá trị C_44_CL thứ i +log2(det(I+SNR_linear(i)/n dựa vào giá trị SNR thứ i T*diag(P_opt)*diag(Lamda)) ); gán vào mảng C_44_CL C_44_OL = real(C_44_OL)/N_iter; C_44_CL = Lấy giá trị phần thực real(C_44_CL)/N_iter mảng giá trị C_44_OL C_44_CL h1 = figure(1); Tạo figure hiển thị kết set(h1,'Name','MIMO_Ergodic_Capacity_vs_SNR Đặt màu , tên figure for closed-loop and open-loop systems Programmed by Nguyen Viet Dam PTIT') plot(SNR_dB, C_44_OL,'b-o','LineWidth',[3.5]); Mô kết X = xlabel('SNR [dB]'); set(X,'fontname','.Vntime','fontsize',18,'color','b'); Y = ylabel('Ergodic Capacity vs SNR [bps/Hz]'); set(Y,'fontname','.Vntime','fontsize',18,'color','b'); grid on; set(gca,'fontname','.Vntime','fontsize',12); s1='Channel Unknown'; s2='Channel Known'; legend(s1,s2); Đặt thích Hiện lưới Đặt thích Hiện thích lên figure Kết mô Ergodic capacities for the closed-loop and open-loop systems 25 Ergodic Capacity vs SNR [bps/Hz] Channel Unknown Channel Known 20 15 10 0 10 15 SNR [dB] 20 25 CÁC CÂU HỎI TRONG FILE TNTH Bài 6: Mô kênh hệ thống SVD MIMO Kết mô kênh SVD MIMO môi trường truyền sóng pha đinh Rayleigh Ma trận H kênh phadinh Rayleigh: Ma trận V_Ray (N_Rx x N_Rx): Ma trận U_Ray (N_Tx x N_Tx) Ma trận đường chéo D_Ray:(N_Rx x Ntx):: Câu 2: Thực mô Matlab theo trình tự xử lý bước cho mơ hình kênh hệ thống SVD MIMO tối ưu (Đọc mã chương trình mơ phỏng: NVD_D12VT_SVD_MIMO Channel) Bước 1: + Một hệ thống kênh MIMO có Nt anten phát Nr anten thu => Tạo nên ma trận phức ngẫu nhiên H (NrxNt) Bước 2: + Với giá trị tham số đầu vào T_sim, N_symbol, fD, sai số ngẫu nhiên x, qua kênh Rayleigh tính giá trị đầu y Kết giải thích mơ em làm Bài 7: Mô dung lượng kênh MIMO Câu + : Hệ thống MIMO vòng hở (OL): (NVD_MIMO_CL_OL_Capacity) MIMO vịng kín (CL): (NVD_MIMO_CL_OL_Capacity) √ Xác định phân tích tham số đầu vào chương trình mơ phỏng: Giống phần giải thích em làm √ Xác định đoạn mã chương trình thực khối chức mơ hình Xác định ma trận H, ma trận Rxx lamda Xác định dung lượng kênh vòng hở (OL) √ Phân tích kết mơ phỏng: ... 30 25 20 15 10 0 10 15 SNR [dB] TH3: nT nR = 2; = 4; 20 25 30 Ergodic MIMO channel capacity when CSI is not available at the transmitter 22 MIMO: NTx =2, NRx=4 Ergodic Capacity vs SNR [bps/Hz] 20 ... 35 MIMO: NTx=4, NRx=4 MIMO: NTx =2, NRx =2 Ergodic Capacity vs SNR [bps/Hz] 30 MIMO: NTx=1, NRx =2 MIMO: NTx =2, NRx=1 MIMO: N =1, N =1 Tx 25 Rx 20 15 10 0 10 15 20 25 30 SNR [dB] =>Hiệu số anten... set(gca,'fontname','.Vntime','fontsize', 12) ; s1='Channel Unknown'; s2='Channel Known'; legend(s1,s2); Đặt thích Hiện lưới Đặt thích Hiện thích lên figure Kết mơ Ergodic capacities for the closed-loop and open-loop systems 25 Ergodic