📄 waterfill.m
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -