gusucode.com > m4k20功率分配图 mimo功率优化,OFDM典型仿真程序,贪婪算法仿真程序 > code/mimo功率优化/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