% Matlab kịch bản này có thể được sử dụng để tạo ra con số 3 (a) và (b) trong các% lưu ý bài giảng:%% Emil Björnson, thảm Bengtsson, Björn Ottersten, "tối ưu đa người dùng% Truyền Beamforming: các vấn đề khó khăn với một cấu trúc giải pháp đơn giản, "% IEEE tín hiệu xử lý tạp chí, xuất hiện.%% Tải về bài viết: địa chỉ sẽ được thêm vào đây.%% Thực hiện các chương trình heuristic beamforming (tàu điện ngầm, ZFBF,% truyền MMSE/regularized. ZFBF/SLNR-MAX beamforming, và tương ứng% điện phân bổ vay mượn từ các gói Matlab sau đâycuốn sách %:%% Emil Björnson, Eduard Jorswieck, "phân bổ nguồn lực tối ưu trong% Phối hợp hệ thống đa di động,"cơ sở và các xu hướng truyền thông% và lý thuyết thông tin, vol. 9, no. 2-3, tr. 113-381, 2013.%% Thực hiện các thuật toán (BRB) chi nhánh giảm-và-bị ràng buộc, mà% tính beamforming tối ưu, cũng bắt nguồn từ cuốn sách đó. Các% implemenation của thuật toán này sử dụng và yêu cầu CVX: http://cvxr.com/%% Đây là phiên bản 1.0 (bài: 2014-03-26)%% Giấy phép: mã này được cấp phép theo giấy phép GPLv2. Nếu bạn ở bất kỳ cách nào% sử dụng mã này để nghiên cứu các kết quả trong các ấn phẩm, xin vui lòng trích dẫn của chúng tôi% bản gốc bài viết được liệt kê ở trên.%% Xin vui lòng lưu ý rằng các kênh được tạo ra ngẫu nhiên, do đó kết quả% sẽ không là chính xác giống như trong lưu ý bài giảng.đóng tất cả;rõ ràng tất cả;%% Tham số mô phỏngRNG('shuffle'); % Bắt đầu các máy phát điện số ngẫu nhiên với một hạt giống ngẫu nhiên%% Nếu rng('shuffle'); không được hỗ trợ bởi phiên bản Matlab của bạn, bạn có thể sử dụng%% sau lệnh thay vào đó:% randn('state',sum(100*clock));Nantennas = [4 12]; % Số truyền ăng-tenK = 4; % Số lượng người dùng% Nên tối ưu các beamforming được tính? (đúng /false)% (Lưu ý rằng nó là tính toán tối ưu beamforming là nguồn chính% tính toán phức tạp. Thời gian chạy với beamforming tối ưu% mất giờ hoặc ngày, trong khi nó chỉ mất một vài phút khi chỉ các% heuristic beamforming đề án được tính. Điều này cho thấy rõ ràng sự cần thiết% cho đơn giản heuristic beamforming!computeOptimalBeamforming = true;% Số realizations ở Monte Carlo mô phỏngnbrOfMonteCarloRealizations = 2; % 100;% Kênh kết hợp ma trận sẽ là (K x K * N). Ma trận này cung cấp cho các% chuẩn hoá phương sai của mỗi phần tử kênhchannelVariances = [1 1 1 1];% Người dùng kiếm thanh Sword cho (unweighted) tổng tỷ lệ tính toántrọng lượng = [1 1 1 1]'; Ones(K,1);% Phạm vi của SNR giá trịPdB = - 10:1:30; % dB quy môP = 10.^(PdB/10); % Quy mô tuyến tính%% Tham số hệ thống - đặc biệt cho tối ưu beamforming (bằng cách sử dụng thuật toán BRB)Beamforming % tối ưu có phạm vi SNR (sparser) của riêng của nó, vì nó là% Chính nguồn tính toán phức tạpPdB_BRB = - 10:5:30; Khoảng SNR % (trong dB) cho beamforming tối ưuP_BRB = 10.^(PdB_BRB/10); Khoảng SNR % cho tối ưu beamformingproblemMode = 1; % Nói với các thuật toán BRB để tối đa hóa tỷ lệ tổng (trọng).epsilonBRB = 0,01; % Độ chính xác của các tỷ lệ tổng tối ưu trong thuật toán BRBdeltaBRB = 0,1; % Độ chính xác của dòng tìm kiếm trong các thuật toán BRBmaxIterations = năm 2000; % Số tối đa của lặp đi lặp lại của các thuật toánmaxFuncEvaluations = 3000; % Tối đa số lồi vấn đề giải quyết trong các thuật toán%% Trước phân bổ của ma trận% Ma trận cho tiết kiệm tổng tỷ giá với khác nhau beamforming stategiessumRateMRT = zeros(length(P),nbrOfMonteCarloRealizations,length(Nantennas));sumRateZFBF = zeros(length(P),nbrOfMonteCarloRealizations,length(Nantennas));sumRateMMSE = zeros(length(P),nbrOfMonteCarloRealizations,length(Nantennas));Nếu computeOptimalBeamforming == true sumrateOPTIMAL = zeros(length(P_BRB),nbrOfMonteCarloRealizations,length(Nantennas));kết thúc% Đi qua khác nhau số truyền ăng-tencho n = 1:length(Nantennas) Giải nén % số hiện tại của ăng-ten N = Nantennas(n); % Các thế hệ trước của Rayleigh phai kênh realizations (đơn vị phương sai) Hall = (randn(K,N,nbrOfMonteCarloRealizations)+1i*randn(K,N,nbrOfMonteCarloRealizations))/sqrt(2); % Đi qua tất cả kênh realizations với m = 1:nbrOfMonteCarloRealizations % Sản lượng sự tiến bộ Disp ([' tiến bộ: N = 'num2str(N)', ' num2str(m) 'trong 'num2str(nbrOfMonteCarloRealizations)' realizations.']); % Tạo ra kênh ma trận cho thực hiện m:th H = repmat (sqrt (channelVariances)', [1 N]). * Hall(:,:,m); % Tính chuẩn hoá beamforming vector cho tàu điện ngầm wMRT = functionMRT(H); % Tính chuẩn hoá beamforming vector cho ZFBF wZFBF = functionZFBF(H); % Tiền phân bổ các ma trận cho tiết kiệm điểm khởi đầu tốt khả thi cho các % BRB thuật toán, dựa trên heuristic beamforming Nếu computeOptimalBeamforming == true bestfeasibleRates = zeros(K,length(P_BRB)); pind_BRB = 1; kết thúc % Đi qua tất cả truyền quyền hạn cho pind = 1:length(P) % Tính toán bình thường beamforming vector cho truyền MMSE % beamforming (mà là giống như regularized ZFBF và SLNR-MAX % beamforming). Lưu ý rằng nó thay đổi với sức mạnh truyền. wSLNRMAX = functionSLNRMAX(H,P(pind)*ones(K,1)); % Tính toán phân bổ quyền lực với các tàu điện ngầm (bằng cách sử dụng định lý 3.5 trong [7]) Rhos = diag(abs(H*wMRT).^2)'; powerAllocationMRT = functionHeuristicPowerAllocation(rhos,P(pind),weights); % Tính toán tổng tỷ lệ với tàu điện ngầm W = kron(sqrt(powerAllocationMRT),ones(N,1)). * wMRT; channelGains = abs(H*W). ^ 2; signalGains = diag(channelGains); interferenceGains = sum(channelGains,2) – signalGains; tỷ lệ = log2(1+signalGains./(interferenceGains+1)); sumRateMRT(pind,m,n) = trọng lượng * tỷ lệ; % Tính toán phân bổ quyền lực với ZFBF (bằng cách sử dụng định lý 3.5 trong [7]) Rhos = diag(abs(H*wZFBF).^2)'; powerAllocationwZFBF = functionHeuristicPowerAllocation(rhos,P(pind),weights); % Tính toán tổng tỷ lệ với ZFBF W = kron(sqrt(powerAllocationwZFBF),ones(N,1)). * wZFBF; channelGains = abs(H*W). ^ 2; signalGains = diag(channelGains); interferenceGains = sum(channelGains,2) – signalGains; tỷ lệ = log2(1+signalGains./(interferenceGains+1)); sumRateZFBF(pind,m,n) = trọng lượng * tỷ lệ; % Tính năng phân bổ với truyền MMSE beamforming (bằng cách sử dụng định lý 3.5 trong [7]) Rhos = diag(abs(H*wSLNRMAX).^2)'; powerAllocationwSLNRMAX_sumrate = functionHeuristicPowerAllocation(rhos,P(pind),weights); % Tính toán tổng tỷ lệ với truyền MMSE beamforming W = kron(sqrt(powerAllocationwSLNRMAX_sumrate),ones(N,1)). * wSLNRMAX; channelGains = abs(H*W). ^ 2; signalGains = diag(channelGains); interferenceGains = sum(channelGains,2) – signalGains; tỷ lệ = log2(1+signalGains./(interferenceGains+1)); sumRateMMSE(pind,m,n) = trọng lượng * tỷ lệ; % Tiết kiệm tỷ lệ truyền MMSE beamforming để sử dụng như là bắt đầu % điểm khi tính tối ưu beamforming Nếu computeOptimalBeamforming == true & & P(pind)==P_BRB(pind_BRB) bestfeasibleRates(:,pind_BRB) = tỷ lệ; pind_BRB = pind_BRB + 1; kết thúc kết thúc Nếu computeOptimalBeamforming == true cho pind = 1:length(P_BRB) % [pind length(P_BRB)] % các đầu ra đơn giản để theo dõi sự tiến bộ % Định nghĩa của một hạn chế tất cả sức mạnh L = 1; % Ma trận bậc của ma trận nặng Qsqrt = sqrt(1/P_BRB(pind))*eye(N); % Bình thường giới hạn tổng số truyền tải điện q = ones(L,1); % Các thuật toán BRB tìm kiếm trong một hộp với góc dưới ở các nguồn gốc %. Góc trên là điểm utopia, nơi mỗi người dùng % được mức mà nó sẽ nhận được nếu nó là người dùng duy nhất trong các Hệ thống %. Điểm này được tính dưới đây. nguồn gốc = zeros(K,1); % Tính toán điểm utopia sử dụng tàu điện ngầm, mà là tối ưu % khi có chỉ có một người dùng hoạt động Utopia = zeros(K,1); cho k = 1:K Utopia(k) = log2(1+abs(H(k,:)*wMRT(:,k))^2*P_BRB(pind)); kết thúc % Ma trận này là tương tự như đường chéo ma trận được định nghĩa trong các % phần "Nhiều hợp tác cơ sở trạm" và nói rằng tất cả % ăng-ten truyền cho tất cả người dùng. D = repmat (mắt (N), [1 1 K]); % Có được beamforming tối đa hóa tổng tỷ lệ sử dụng các Thuật toán BRB % từ [7]. bestFeasibleBRB = functionBRBalgorithm_cvx(H,D,Qsqrt,q,origin,utopia,weights,deltaBRB,epsilonBRB,maxIterations,maxFuncEvaluations,bestfeasibleRates(:,pind),problemMode); Tiết kiệm % hiệu suất của beamforming tối ưu sumrateOPTIMAL(pind,m,n) = trọng lượng * bestFeasibleBRB; kết thúc kết thúc kết thúc kết thúcKết quả mô phỏng âm mưu %cho n = 1:length(Nantennas)con số; Giữ hộpNếu computeOptimalBeamforming == true Plot(PdB_BRB,Mean(sumrateOPTIMAL(:,:,n),2),'k:','LineWidth',1);kết thúcPlot(PdB,Mean(sumRateMMSE(:,:,n),2),'r','LineWidth',1);Plot(PdB,Mean(sumRateZFBF(:,:,n),2),'b--','LineWidth',1);Plot(PdB,Mean(sumRateMRT(:,:,n),2),'k-.','LineWidth',1);Nếu computeOptimalBeamforming == true legen
đang được dịch, vui lòng đợi..