⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iterative_waterfill.m

📁 无线通信系统中经典的功率控制注水算法Matlab实现。
💻 M
字号:
%Sum Power Iterative Waterfilling Algorithm%Authors: Nihar Jindal, Wonjong Rhee, Sriram Vishwanath, Syed Jafar, Andrea%Goldsmith%Date:  6/20/05function [capacity, Covariances] = iterative_waterfill(H, P, iterations);%Function Inputs%H:             triply indexed UPLINK channel%               H(:,:,k) refers to the UPLINK channel of the kth receiver%               H(:,:,k) is an (M x N) matrix%P:             power in linear units%iterations:    # of iterations performed%Function Outputs%capacity:      Sum rate capacity in bps/Hz%Covariances:         triply indexed matrices containing the capacity achieving%               UPLINK covariance matrices%               Covariances(:,:,k) is the (N x N) covariance of user k%Other Variables%M:  # of transmit antennas in downlink channel%N:  # of receive antennas in downlink channel%K:  # of receivers%Determine # of antennas, users[M,N,K] = size(H);%Initialize covariances to zeroCovariances = zeros(N,N,K); for wf_iterations = 1:iterations    sum_int = eye(M);    for k = 1:K        sum_int = sum_int + H(:,:,k) * Covariances(:,:,k) * H(:,:,k)';    end;    %Generate effective channels of each user (using covariances from the    %previous step)    for k = 1:K        H_eff(:,:,k) = (sum_int - H(:,:,k) * Covariances(:,:,k) * H(:,:,k)')^(-0.5) * H(:,:,k);    end;    %Perform waterfilling across effective channels    [temp, Ex] = waterfill_block(H_eff, P);    %Update covariances of all users    %Use original algorithm for first 5 iterations to speed up convergence    if (wf_iterations <= 5)        %Updated covariances set equal to new covariances        for k = 1:K             Covariances(:,:,k) = Ex(:,:,k);        end;    else        %Update covariances with mixture of old and new covariances        for k = 1:K            Covariances(:,:,k) = ((K-1)/K)*Covariances(:,:,k) + (1/K) * Ex(:,:,k);        end;    end;end; %Compute final sum ratesum_int = eye(M);for k = 1:K    sum_int = sum_int + H(:,:,k) * Covariances(:,:,k) * H(:,:,k)';end;capacity = real(log2(det(sum_int)));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -