waterfill.m
来自「可以运行的m4k20功率分配图」· M 代码 · 共 38 行
M
38 行
function [lambda] = waterfill(gamma, sigma)
%------------------------------------------------------------
% Function to calculate the waterfilling power levels.
%
% Author: Mai Vu
% Date: 11/30/2003
% Modified: 04/17/2004
%------------------------------------------------------------
%------------------------------------------------------------
% INPUTS
% gamma: SNR (linear, not dB)
% sigma: channel eigenvalues
%
% OUTPUTS
% lambda: waterfilling power levels
%
%------------------------------------------------------------
[sigma_valid, indices] = sort(-sigma);
sigma_valid = -sigma_valid;
while (1)
N = length(sigma_valid);
mu = (1 + sum(1./sigma_valid)/gamma)/N;
lambda_temp = mu - 1./sigma_valid/gamma;
if min(lambda_temp) < 0
sigma_valid = sigma_valid(1:N-1);
else
break;
end
end
lambda_temp = [lambda_temp; zeros(length(sigma)-length(lambda_temp), 1)];
lambda(indices) = lambda_temp;
lambda = lambda'; % make into a column vector
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?