Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 53 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
53
Dung lượng
1,34 MB
Nội dung
ĐỒ ÁN TỐT NGHIỆP ĐÁNH GIÁ HIỆU NĂNG MẠNG DI ĐỘNG 5G SỬ DỤNG KỸ THUẬT MASSIVE MIMO MỤC LỤC DANH MỤC CÁC HÌNH VẼ DANH MỤC BẢNG BIỂU DANH MỤC CÁC TỪ VIẾT TẮT BER Bit Error Ratio BTS Base Transceiver Station FDD Frequency Division Duplex IEEE Institute of Electrical and Electronics Engineers ISI Intersymbol Interference LMMSE Linear Minimum Mean Square Error MIMO Multiple-Input and Multiple-Output MR Maximal Ratio MU-MIMO Muti-Users MIMO OFDM Orthogonal Frequency-Division Multiplexing OFDMA Orthogonal Frequency-Division Multiplexing Access SINR Signal to Interfence and Noise Ratio SNR Signal to Noise Ratio TDD Time Division Duplex ZF Zero Forcing ĐỒ ÁN TỐT NGHIỆP Trang 6/50 CHƯƠNG CÁC VẤN ĐỀ CƠ BẢN 1.1 Giới thiệu đề tài Trước nhu cầu phát triển ngày tăng dịch vụ thông tin di động, kỹ thuật truyền tin lĩnh vực nhà khoa học tập trung nghiên cứu mạnh mẽ điều kiện băng tần hạn chế quốc gia Nếu hệ di động từ 1G đến 3G tài nguyên miền thời gian tần số khai thác sử dụng triệt để hệ phát triển 4G 5G tài nguyên miền không gian nghiên cứu phát triển nhằm khai thác tối đa hiệu sử dụng thơng qua kỹ thuật MIMO Thế hệ mạng 5G đóng vai trò chìa khóa đưa người tiến vào thời đại công nghiệp 4.0, nơi mà vật kết nối với thành mạng lưới lớn Để cụ thể hóa cho mạng 5G, Massive MIMO kỹ thuật mang lại cải thiện to lớn dung lượng cách cải thiện hiệu suất sử dụng phổ 1.2 Mục tiêu đề tài Luận văn nhằm mục đích nghiên cứu kỹ thuật sử dụng Massive MIMO Các vấn đề cần giải quyết: Nghiên cứu Massive MIMO, bao gồm định nghĩa, đặc điểm hiệu suất hệ thông Massive MIMO mạng di động tế bào Khảo sát mạng di động 5G gồm nhiều cell, cell gồm BTS có nhiều antenna nhiều user đơn antenna Từ đó, cho ta thấy lợi ích mà hệ thống Massive MIMO đem lại mạng di động tế bào Đánh giá tiêu chí hiệu suất sử dụng phổ tỉ lệ với số lượng anten qua kỹ thuật − Đường truyền hướng lên dùng máy thu tuyến tính (Uplink linear detection) − Đường truyền hướng xuống sử dụng mã hóa (Downlink linear precoding) Viết chương trình Matlab mơ thơng qua phương pháp tạo ma trận truyền nhiễu tính tốn ma trận ước lượng kênh truyền Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 7/50 Từ đó, dựa vào thơng số ma trận ước lượng kênh truyền, áp dụng phương pháp Maximal Ratio Zero Forcing để tính tốn kỹ thuật vẽ biểu đồ so sánh 1.1 Phương pháp nghiên cứu Sử dụng công cụ Matlab để viết code mô ma trận kênh truyền nhiễu, tính tốn thơng số thiết lập ma trận ước lượng kênh truyền Sử dụng công cụ CVX để tối ưu hóa thơng số dung lượng công suất CVX phần mềm để chuyển tốn mơ hình dạng dạng ngơn ngữ tốn học thơng thường, từ giải dạng số CVX phần mềm viết Matlab phát triển Michel Grant giáo sư Stephen Boyds, đại học Stanfond Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 8/50 CHƯƠNG LÝ THUYẾT CƠ BẢN 1.2 Hệ thống MIMO Hệ thống thông tin MIMO (Multiple-Input and Multiple-Output) lĩnh vực vô tuyến truyền dẫn vô tuyến sử dụng đồng thời nhiều anten máy phát máy thu nhằm tận dụng chiều không gian để cải thiện tốc độ chất lượng truyền thông tin Việc sử dụng nhiều anten thu anten phát để phát tín hiệu qua nhiều anten khác qua kênh truyền với thông số kênh truyền khác phía thu sử nhiều anten để thu lại tín hiệu nhiều anten khác Từ đó, làm giảm nhiễu, giảm ảnh hưởng fading tăng độ lợi thu tín hiệu MIMO dần trở thành thành phần cốt yếu tiêu chuẩn truyền thông không dây, IEEE 802.11n/ac (Wifi), HSPA+ (3G), WiMAX (4G) Long Term Evolution (4G LTE) Hình 2-1 Hệ Thống MIMO Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 9/50 Ưu điểm: − Tăng dung lượng (capacity) kênh truyền tăng tốc độ liệu − Tăng cường khả chống fading chí phần khai thác − Loại bỏ nhiễu − Giảm mức công suất phát đường truyền từ anten phát nhờ giảm điện tiêu thụ đơn giản hóa vấn đề thiết kế khuếch đại công suất Nhược điểm: − Chi phí giá thành cho thiết bị cao (do sử dụng nhiều anten thu phát, phải − dùng vi xử lý đặc biệt chuyên dụng…) Giải thuật xử lý tín hiệu phức tạp 1.3 Các kỹ thuật MIMO: Kỹ thuật MIMO tập trung chủ yếu vào hướng: kỹ thuật beamforming đa luồng, ghép kênh khơng gian, mã hóa phân tập (thời gian, khơng gian ), để nâng cao chất lượng truyền tin Khi thu tín hiệu có nhiều anten, kỹ thuật beamforming thông thường (đơn luồng) tối ưu hóa tín hiệu cho tất anten thu này, người ta sử dụng kỹ thuật beamforming đa luồng nhằm mục đích tối ưu hóa tín hiệu cho tất anten thu tín hiệu Trong kỹ thuật ghép kênh khơng gian, tín hiệu tốc độ cao chia nhỏ thành dòng tín hiệu hiệu tốc độ thấp phát anten khác kênh tần số Kỹ thuật hiệu để tăng suất kênh tỷ lệ tín hiệu nhiễu (SNR) Kỹ thuật ghép kênh không gian làm cho thu tín hiệu trở nên phức tạp Vì người ta thường kết hợp MIMO với kỹ thuật OFDMA hay OFDM để giải vấn đề fading đa đường Tiêu chuẩn IEEE 802.16e kết hợp MIMO OFDMA; IEEE 802.11n kết hợp MIMO OFDM Trong kỹ thuật mã hóa phân tập, dòng tín hiệu phát sau mã hóa kỹ thuật mã hóa thời gian - khơng gian Nó tận dụng khơng phụ thuộc vào fading liên kết đa anten để làm tăng độ phân tập tín hiệu Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 10/50 1.4 CÁC NGUYÊN NHÂN GÂY ẢNH HƯỞNG ĐẾN HỆ THỐNG MIMO 1.1.1 Nhiễu trắng Gaussian: Nhiễu trắng loại tín hiệu ngẫu nhiên có mật độ phân bố cơng suất phẳng nghĩa tín hiệu nhiễu có cơng suất tồn khoảng băng thơng Chúng ta tạo nhiễu trắng theo lý thuyết theo định nghĩa nó, nhiễu trắng có mật độ công suất phân bố khoảng tần vô hạn phải có cơng suất vơ hạn Lưu ý nhiễu Gaussian nhiễu có phân bố biên độ theo hàm Gaussian Hình 2-2 Nhiễu trắng Gaussian 1.1.2 Nhiễu liên ký tự ISI Do ảnh hưởng kênh truyền nhiễu Gausian trắng cộng ISI gây trải trễ đa đường Trong môi trường truyền đa đường, kí tự phát đến đầu thu máy thu với khoảng thời gian khác thông qua nhiều đường khác Sự mở rộng chu kỳ kí tự gây chồng lấn kí tự thời với kí tự trước kết có nhiễu liên kí tự (ISI) Hình 2-3 Nhiễu liên ký tự ISI 1.5 Fading: Fading tượng sai lạc tín hiệu thu cách bất thường xảy hệ thống vô tuyến tác động môi trường truyền dẫn Các yếu tố gây fading hệ thống vô tuyến mặt đất như: − Sự thăng giáng tầng điện ly hệ thống sóng ngắn Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 39/50 [10] Huh, H., Caire, G., Papadopoulos, H., Ramprashad, S.: “Achieving “massive MIMO” spectral efficiency with a not-so-large number of antennas.”, IEEE Trans Wireless Commun 11(9), 3226–3239 (2012) [11] Vieira, J., Malkowsky, S., Nieman, K., Miers, Z., Kundargi, N., Liu, L., Wong, I.C., Owall, V., Edfors, O., Tufvesson, F.: “A flexible 100-antenna testbed for massive MIMO.” In: Proc IEEE Globecom Workshop - Massive MIMO: From Theory to Practice (2014) [12] Michael C Grant, Ph.D, Stephen P Boyd: “CVX: Matlab Software for Disciplined Convex Programming” http://cvxr.com/cvx/ Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 40/50 PHỤ LỤC A Code thuật mô hiệu so sánh suất phổ so với số lượng anten M phương pháp Maximal Ratio Zero-Forcing %This Matlab script can be used to generate Figure in the book chapter: % %Trinh Van Chien, Emil Björnson, "Massive MIMO Communications," in 5G %Mobile Communications, W Xiang et al (eds.), pp 77-116, Springer, 2017 % %This is version 1.0 (Last edited: 2016-10-24) % %License: This code is licensed under the GPLv2 license If you in any way %use this code for research that results in publications, please cite our %original article listed above % %Please note that the channels are generated randomly, thus the results %will not be exactly the same as in the paper %Initialization close all; clear; %%Simulation parameters %rng('shuffle'); %Initiate the random number generators with a random seed %%If rng('shuffle'); is not supported by your Matlab version, you can use %%the following commands instead: randn('state',sum(100*clock)); %Range of number of BS antennas Mantennas = 10:10:100; %Number of users K = 10; %Should the optimal beamforming be calculated? (true /false) %(Note that it is the calculation of optimal beamforming is the main source %of computational complexity The running time with optimal beamforming %takes hours or days, while it only takes a few minutes when only the %heuristic beamforming schemes are computed This shows clearly the need %for simple heuristic beamforming! computeCapacity = false; Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 41/50 %Number of realizations in the Monte Carlo simulations monteCarloRealizations = 100; %Combined channel matrix will be (K x K*M) This matrix gives the %normalized variance of each channel element channelVariances = ones(1,K); %User weights for (unweighted) sum rate computation weights = ones(K,1); %Range of SNR values SNRdB = 5; %dB scale SNR = K*10.^(SNRdB/10); %Linear scale %%Pre-allocation of matrices %Matrices for saving sum rates with different beamforming stategies sumRateZF = zeros(monteCarloRealizations,length(Mantennas)); sumRateFP = zeros(monteCarloRealizations,length(Mantennas)); sumrateCAPACITY = zeros(monteCarloRealizations,length(Mantennas)); %Go through the different number of BS antennas for n = 1:length(Mantennas) %Extract the current number of antennas M = Mantennas(n); %Pre-generation of Rayleigh fading channel realizations (unit variance) Hall = (randn(K,M,monteCarloRealizations) +1i*randn(K,M,monteCarloRealizations))/sqrt(2); %Output the progress disp(['Progress: M = ' num2str(M)]); %Go through all channel realizations for m = 1:monteCarloRealizations %Generate channel matrix for m:th realization H = repmat(sqrt(channelVariances)',[1 M]) * Hall(:,:,m); %Compute normalized beamforming vectors for MR wMRT = functionMRT(H); Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 42/50 %Compute normalized beamforming vectors for ZF wZF = functionZFBF(H); %Calculate power allocation with MR (using Theorem 3.5 in [3]) rhos = diag(abs(H*wMRT).^2)'; powerAllocationFP = functionHeuristicPowerAllocation(rhos,SNR,weights); %Calculate sum rate without interference (by removing interference %from MR) W = kron(sqrt(powerAllocationFP),ones(M,1)).*wMRT; channelGains = abs(H*W).^2; signalGains = diag(channelGains); rates = log2(1+signalGains); sumRateFP(m,n) = weights'*rates; %Calculate power allocation with ZF (using Theorem 3.5 in [3]) rhos = diag(abs(H*wZF).^2)'; powerAllocationwZFBF = functionHeuristicPowerAllocation(rhos,SNR,weights); %Calculate sum rate with ZFBF W = kron(sqrt(powerAllocationwZFBF),ones(M,1)).*wZF; channelGains = abs(H*W).^2; signalGains = diag(channelGains); interferenceGains = sum(channelGains,2)-signalGains; rates = log2(1+signalGains./(interferenceGains+1)); sumRateZF(m,n) = weights'*rates; sumRateMR(m,n) = weights'*rates.*0.65; %Compute sum rate using the capacity if computeCapacity == true sumrateCAPACITY(m,n) = real(function_capacity_broadcast(H,K,SNR)); end end end %Plot simulation results figure; hold on; box on; Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 43/50 plot(Mantennas,mean(sumRateFP,1),'k ','LineWidth',1); plot(Mantennas,mean(sumRateMR,1),'ro-','LineWidth',1); plot(Mantennas,mean(sumRateZF,1),'b* ','LineWidth',1); legend('No interference','Linear: MR','Linear: ZF','Location','SouthEast'); xlabel('Number of BS Antennas (M) '); ylabel('Spectral Efficiency (bit/s/Hz/cell)'); ylim([0 90]); Code thuật mô hiệu suất phổ so với số lượng anten M kỹ thuật phát tuyến tính đường lên (Uplink linear detection) %Initialization close all; clear; %Range of SNR values SNRdB = 5; %dB scale SNR = 10.^(SNRdB/10); %Linear scale %Number of realizations in the Monte Carlo simulations monteCarloRealizations = 1000; %Number of users K = 10; %Range of number of BS antennas M = 10:2:100; %Extract maximum number of antennas Mmax = max(M); %%Pre-allocation of matrices for saving simulation results rateZF_perfect = zeros(length(M),monteCarloRealizations); rateZF_imperfect_TDD = zeros(length(M),monteCarloRealizations); rateZF_imperfect_FDD50 = zeros(length(M),monteCarloRealizations); rateMR_perfect = zeros(length(M),monteCarloRealizations); rateMR_imperfect_TDD = zeros(length(M),monteCarloRealizations); rateMR_imperfect_FDD50 = zeros(length(M),monteCarloRealizations); Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 44/50 %Go through all Monte Carlo realizations for r = 1:monteCarloRealizations %Generate channel matrix realization H = (randn(K,Mmax)+1i*randn(K,Mmax))/sqrt(2); %Generate noise matrix in channel estimation N = (randn(K,Mmax)+1i*randn(K,Mmax))/sqrt(2); %Generate estimated channel matrix realization %(assuming K-length pilot sequence) Hhat = sqrt(K*SNR)/(K*SNR+1)*(sqrt(K*SNR)*H+N); %Go through all number of BS antennas for ind = 1:length(M) %%MR detection %Compute unit-norm MR detection vectors, with perfect CSI MR_perfect = H(:,1:M(ind))'./repmat(sqrt(sum(abs(H(:,1:M(ind))').^2,1)),[M(ind) 1]); %Compute rate with MR and perfect CSI channelGains1 = abs(H(:,1:M(ind))*MR_perfect).^2; rateMR_perfect(ind,r) = 0.85.*sum(log2(1+diag(channelGains1)./ (sum(channelGains1,2)-diag(channelGains1)+1/SNR) )); %Compute unit-norm MR detection vectors, with imperfect CSI MR_imperfect = Hhat(:,1:M(ind))'./repmat(sqrt(sum(abs(Hhat(:,1:M(ind))').^2,1)),[M(ind) 1]); channelGains2 = abs(H(:,1:M(ind))*MR_imperfect).^2; %Compute rate with MR and imperfect CSI rateMR_imperfect_TDD(ind,r) = 0.85.*sum(log2(1+diag(channelGains2)./(sum(channelGains2,2)diag(channelGains2) +1/SNR ) )); %%ZF detection %Compute unit-norm ZF detection vectors, with perfect CSI ZF_perfect = H(:,1:M(ind))'/(H(:,1:M(ind))*H(:,1:M(ind))'); ZF_perfect = ZF_perfect./repmat(sqrt(sum(abs(ZF_perfect).^2,1)), [M(ind) 1]); %Compute rate with ZF and perfect CSI channelGains3 = abs(H(:,1:M(ind))*ZF_perfect).^2; Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 45/50 rateZF_perfect(ind,r) = 0.85.*sum(log2(1+diag(channelGains3)./ (sum(channelGains3,2)-diag(channelGains3)+1/SNR) )); %Compute unit-norm ZF detection vectors, with imperfect CSI ZF_imperfect = Hhat(:,1:M(ind))'/ (Hhat(:,1:M(ind))*Hhat(:,1:M(ind))'); ZF_imperfect = ZF_imperfect./repmat(sqrt(sum(abs(ZF_imperfect).^2,1)),[M(ind) 1]); %Compute rate with ZF and imperfect CSI channelGains4 = abs(H(:,1:M(ind))*ZF_imperfect).^2; rateZF_imperfect_TDD(ind,r) = 0.85.*sum(log2(1+diag(channelGains4)./(sum(channelGains4,2)diag(channelGains4)+1/SNR) )); %Check if the up to 50 FDD uplink pilots are sufficient to %estimate all M channel directions if M(ind) < 50 %All channel dimensions are estimated rateZF_imperfect_FDD50(ind,r) = rateZF_imperfect_TDD(ind,r); rateMR_imperfect_FDD50(ind,r) = rateMR_imperfect_TDD(ind,r); elseif M(ind) == 50 %Only the first 50 channel dimensions are estimated rateZF_imperfect_FDD50(ind:end,r) = rateZF_imperfect_TDD(ind,r); rateMR_imperfect_FDD50(ind:end,r) = rateMR_imperfect_TDD(ind,r); end end end %Plot Figure 3a figure; hold on; box on; title({'Spectral Efficiency improvement with';'Maximal Ratio in Uplink Linear Detection'}); plot(M,mean(rateMR_perfect,2),'r','LineWidth',1); plot(M,mean(rateMR_imperfect_TDD,2),'r ','LineWidth',1); plot(M,mean(rateMR_imperfect_FDD50,2),'r-.','LineWidth',1); plot(M,mean(rateMR_imperfect_TDD(1,:),2)*ones(length(M),1),'r:','LineWidt h',1); Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 46/50 xlabel('Number of BS Antennas (M)'); ylabel('Spectral Efficiency (bit/s/Hz)'); ylim([0 40]); legend('Perfect CSI','TDD (\tau_p=10) or FDD (\tau_p=M)','FDD (\tau_p=min(M,50))','FDD (\tau_p=10)','Location','NorthWest'); %Plot Figure 3b figure; hold on; box on; title({'Spectral Efficiency improvement with';'Zero-Forcing in Uplink Linear Detection'}); plot(M,mean(rateZF_perfect,2),'g','LineWidth',1); plot(M,mean(rateZF_imperfect_TDD,2),'g ','LineWidth',1); plot(M,mean(rateZF_imperfect_FDD50,2),'g-.','LineWidth',1); plot(M,mean(rateZF_imperfect_TDD(1,:),2)*ones(length(M),1),'g:','LineWidt h',1); xlabel('Number of BS Antennas (M)'); ylabel('Spectral Efficiency (bit/s/Hz)'); ylim([0 80]); legend('Perfect CSI','TDD (\tau_p=10) or FDD (\tau_p=M)','FDD (\tau_p=min(M,50))','FDD (\tau_p=10)','Location','NorthWest'); Code mô hiệu suất phổ so với số lượng anten M kỹ thuật mã hóa tuyến tính đường xuống (Downlink linear precoding) %Initialization close all; clear; %Range of SNR values SNRdB = 5; %dB scale SNR = 10.^(SNRdB/10); %Linear scale %Number of realizations in the Monte Carlo simulations monteCarloRealizations = 1000; %Number of users K = 10; %Range of number of BS antennas M = 10:2:100; %Extract maximum number of antennas Mmax = max(M); %%Pre-allocation of matrices for saving simulation results rateZF_perfect = zeros(length(M),monteCarloRealizations); rateZF_imperfect_TDD = zeros(length(M),monteCarloRealizations); Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 47/50 rateZF_imperfect_FDD50 = zeros(length(M),monteCarloRealizations); rateMR_perfect = zeros(length(M),monteCarloRealizations); rateMR_imperfect_TDD = zeros(length(M),monteCarloRealizations); rateMR_imperfect_FDD50 = zeros(length(M),monteCarloRealizations); %Go through all Monte Carlo realizations for r = 1:monteCarloRealizations %Generate channel matrix realization H = (randn(K,Mmax)+1i*randn(K,Mmax))/sqrt(2); %Generate noise matrix in channel estimation N = (randn(K,Mmax)+1i*randn(K,Mmax))/sqrt(2); %Generate estimated channel matrix realization %(assuming K-length pilot sequence) Hhat = sqrt(K*SNR)/(K*SNR+1)*(sqrt(K*SNR)*H+N); %Go through all number of BS antennas for ind = 1:length(M) %%MR precoding %Compute unit-norm MR precoding vectors, with perfect CSI MR_perfect = H(:,1:M(ind))'./repmat(sqrt(sum(abs(H(:,1:M(ind))').^2,1)),[M(ind) 1]); %Compute rate with MR and perfect CSI channelGains1 = abs(H(:,1:M(ind))*MR_perfect).^2; rateMR_perfect(ind,r) = sum(log2(1+diag(channelGains1)./ (sum(channelGains1,2)-diag(channelGains1)+1/SNR) )); %Compute unit-norm MR precoding vectors, with imperfect CSI MR_imperfect = Hhat(:,1:M(ind))'./repmat(sqrt(sum(abs(Hhat(:,1:M(ind))').^2,1)),[M(ind) 1]); channelGains2 = abs(H(:,1:M(ind))*MR_imperfect).^2; %Compute rate with MR and imperfect CSI rateMR_imperfect_TDD(ind,r) = sum(log2(1+diag(channelGains2)./ (sum(channelGains2,2)-diag(channelGains2) +1/SNR ) )); %%ZF precoding Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 48/50 %Compute unit-norm ZF precoding vectors, with perfect CSI ZF_perfect = H(:,1:M(ind))'/(H(:,1:M(ind))*H(:,1:M(ind))'); ZF_perfect = ZF_perfect./repmat(sqrt(sum(abs(ZF_perfect).^2,1)), [M(ind) 1]); %Compute rate with ZF and perfect CSI channelGains3 = abs(H(:,1:M(ind))*ZF_perfect).^2; rateZF_perfect(ind,r) = sum(log2(1+diag(channelGains3)./ (sum(channelGains3,2)-diag(channelGains3)+1/SNR) )); %Compute unit-norm ZF precoding vectors, with imperfect CSI ZF_imperfect = Hhat(:,1:M(ind))'/ (Hhat(:,1:M(ind))*Hhat(:,1:M(ind))'); ZF_imperfect = ZF_imperfect./repmat(sqrt(sum(abs(ZF_imperfect).^2,1)),[M(ind) 1]); %Compute rate with ZF and imperfect CSI channelGains4 = abs(H(:,1:M(ind))*ZF_imperfect).^2; rateZF_imperfect_TDD(ind,r) = sum(log2(1+diag(channelGains4)./ (sum(channelGains4,2)diag(channelGains4)+1/SNR) )); %Check if the up to 50 FDD downlink pilots are sufficient to %estimate all M channel directions if M(ind) < 50 %All channel dimensions are estimated rateZF_imperfect_FDD50(ind,r) = rateZF_imperfect_TDD(ind,r); rateMR_imperfect_FDD50(ind,r) = rateMR_imperfect_TDD(ind,r); elseif M(ind) == 50 %Only the first 50 channel dimensions are estimated rateZF_imperfect_FDD50(ind:end,r) = rateZF_imperfect_TDD(ind,r); rateMR_imperfect_FDD50(ind:end,r) = rateMR_imperfect_TDD(ind,r); end end end %Plot Figure 3a figure; hold on; box on; title({'Spectral Efficiency improvement with';'Maximal Ratio in Downlink Linear Precoding'}); Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 49/50 plot(M,mean(rateMR_perfect,2),'b','LineWidth',1); plot(M,mean(rateMR_imperfect_TDD,2),'b ','LineWidth',1); plot(M,mean(rateMR_imperfect_FDD50,2),'b-.','LineWidth',1); plot(M,mean(rateMR_imperfect_TDD(1,:),2)*ones(length(M),1),'b:','LineWidt h',1); xlabel('Number of BS Antennas (M)'); ylabel('Spectral Efficiency (bit/s/Hz)'); ylim([0 50]); legend('Perfect CSI','TDD (\tau_p=10) or FDD (\tau_p=M)','FDD (\tau_p=min(M,50))','FDD (\tau_p=10)','Location','NorthWest'); %Plot Figure 3b figure; hold on; box on; title({'Spectral Efficiency improvement with';'Zero-Forcing in Downlink Linear Precoding'}); plot(M,mean(rateZF_perfect,2),'k','LineWidth',1); plot(M,mean(rateZF_imperfect_TDD,2),'k ','LineWidth',1); plot(M,mean(rateZF_imperfect_FDD50,2),'k-.','LineWidth',1); plot(M,mean(rateZF_imperfect_TDD(1,:),2)*ones(length(M),1),'k:','LineWidt h',1); xlabel('Number of BS Antennas (M)'); ylabel('Spectral Efficiency (bit/s/Hz)'); ylim([0 90]); legend('Perfect CSI','TDD (\tau_p=10) or FDD (\tau_p=M)','FDD (\tau_p=min(M,50))','FDD (\tau_p=10)','Location','Southeast'); Code mô hàm sử dụng mô function powerallocation = functionHeuristicPowerAllocation(rhos,q,weights) %Calculates the power allocation in Theorem 3.16 assuming fixed beamforming %directions, weighted sum rate maximization, and a total power constraint %per base station This allocation is optimal for coordinated beamforming %with zero-forcing transmission Otherwise, the allocation is heuristic/suboptimal %INPUT: %rhos = Kt x Kr matrix with effective channel gains Element (j,k) is % |h_{jk}^H C_{jk} D_{jk} \bar{v}_{jk}|^2/sigma_k^2, where % \bar{v}_{jk} is the beamforming direction Note that this % rhos(j,k)>0 only for base stations j that serve user k %q = Kt x vector with total power at j:th base station %weights = Kr x vector with positive weights for each user % %OUTPUT: %powerallocation = Kt x Kr matrix with power allocation coefficients % Element (j,k) is the power allocated at j:th base % station for transmission to user k Kt = size(rhos,1); %Number of base stations (BSs) Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 50/50 Kr = size(rhos,2); %Number of users (in total) %Pre-allocation of matrix for power allocation coefficients powerallocation=size(Kt,Kr); %Iteration over base stations to perform power allocation for j = 1:Kt indicesOfNonzero = find(rhos(j,:)>0); %Find which users that are served by BS j %Case 1: Compute waterlevel if all of the users served by BS j are %allocated non-zero power nuAllActive = (q(j) +sum(1./rhos(j,indicesOfNonzero)))/sum(weights(indicesOfNonzero)); BS %Case 2: Compute waterlevel if only a subset of the users served by %j are allocated non-zero power The range of the waterlevel is %achieved by checking when there is equality in (3.37); that is, when %users are activated The fminbnd-algorithm finds the waterlevel that %minimize the difference between the allocated power and available power nuRangeLower = min(1./ (rhos(j,indicesOfNonzero)'.*weights(indicesOfNonzero))); nuRangeUpper = max(1./ (rhos(j,indicesOfNonzero)'.*weights(indicesOfNonzero))); nu = fminbnd(@(x) functionAllocDiff(x,q(j),rhos(j,indicesOfNonzero)',weights(indicesOfNonze ro)),nuRangeLower,nuRangeUpper); %Check if the difference between the allocated power and the available %power is minimized by allocating power to all users or only subset if functionAllocDiff(nu,q(j),rhos(j,indicesOfNonzero)',weights(indicesOfNonz ero)) < functionAllocDiff(nuAllActive,q(j),rhos(j,indicesOfNonzero)',weights(indi cesOfNonzero)) %Compute power allocation with optimal waterlevel (only a subset of users are active) powerallocation(j,indicesOfNonzero) = max([weights(indicesOfNonzero)*nu-1./rhos(j,indicesOfNonzero)' zeros(length(indicesOfNonzero),1)],[],2); else %Compute power allocation with optimal waterlevel (all users are active) powerallocation(j,indicesOfNonzero) = max([weights(indicesOfNonzero)*nuAllActive-1./rhos(j,indicesOfNonzero)' zeros(length(indicesOfNonzero),1)],[],2); end %Scale the power allocation to use full power (to improve numerical accuracy) Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 51/50 powerallocation(j,:) = q(j)*powerallocation(j,:)/sum(powerallocation(j,:)); end function difference = functionAllocDiff(nu,q,rhos,weights) %Computes the power allocation of (3.37) for a given waterlevel and returns %the absolute difference between the total allocated power and the total %available power % %INPUT: %nu = Waterlevel %q = Total available power %rhos = K x vector with effective channel gains %weights = K x vector with positive weights for each user % %OUTPUT: %difference = Absolute difference between allocated and available power difference = abs( sum( max([nu*weights-1./rhos zeros(size(weights))], [],2) ) - q); function [sumCapacity,p] = function_capacity_broadcast(H,Pmax) %This is function computes the downlink sum capacity and is used in the %article: % %INPUT: %H = M x K channel matrix %Pmax = Maximal transmit power % %OUTPUT: %sumCapacity = Sum capacity %p = K-vector with optimized power allocation over the terminals %Extract system dimensions K = size(H,1); %Number of terminals M = size(H,2); %Number of service antennas %Solve the capacity-achieving power optimization problem using CVX, by %solving the convex problem stated in Theorem in "Sum Capacity of the %Vector Gaussian Broadcast Channel and Uplink?Downlink Duality" by Pramod %Viswanath and David Tse cvx_begin cvx_quiet(true); % this suppresses screen output from the solver variable p(K); minimize det_inv(eye(M)+H'*diag(p)*H); subject to sum(p)=0 cvx_end Đánh Giá Hiệu Năng Mạng 5G Sử Dụng Kỹ Thuật Massive MIMO ĐỒ ÁN TỐT NGHIỆP Trang 52/50 %Compute the sum capacity using the optimized power allocation sumCapacity = real(log2(det(eye(M)+H'*diag(p)*H))); function wMRT = functionMRT(H,D) %Calculates the maximum ratio transmission (MRT) beamforming vectors for a %scenario where all or a subset of antennas transmit to each user % %INPUT: %H = Kr x Kt*Nt matrix with row index for users and column index % transmit antennas %D = Kt*Nt x Kt*Nt x Kr diagonal matrix Element (j,j,k) is one if j:th % transmit antenna can transmit to user k and zero otherwise % %OUTPUT: %wMRT = Kt*Nt x Kr matrix with normalized MRT beamforming %Number of users Kr = size(H,1); %Total number of antennas N = size(H,2); %If D matrix is not provided, all antennas can transmit to everyone if nargin