注水算法的基本原理就是根据香农公式和限制条件,通过拉格朗日乘数法组成的一个方程,先令其偏导为零,求出Pi的表达式,但是Pi的表达式中包含一个未知数,再根据限制条件可以先求解出该未知数,再回代到之前的方程中,可以求解得每个信道根据信道质量分配得到的Pi。求解问题如下:
mimo信道容量: max:
C
=
∑
i
=
1
m
log
2
(
1
+
P
i
σ
2
λ
i
)
C = \sum\limits_{i = 1}^m {{{\log }_2}\left( {1 + \frac{{{P_i}}}{{{\sigma ^2}}}{\lambda _i}} \right)}
C=i=1∑mlog2(1+σ2Piλi)
功率满足:
∑
i
=
1
m
P
i
=
P
\sum\limits_{i = 1}^m {{P_i} = P}
i=1∑mPi=P
上面为等式约束问题,可用拉格朗日乘子法求解。
引入拉格朗日函数,有
Z
(
λ
,
P
i
)
=
∑
i
=
1
m
log
2
(
1
+
P
i
σ
2
λ
i
)
+
L
(
P
−
∑
i
=
1
m
P
i
)
Z(\lambda ,{P_i}) = \sum\limits_{i = 1}^m {{{\log }_2}\left( {1 + \frac{{{P_i}}}{{{\sigma ^2}}}{\lambda _i}} \right)} + L(P - \sum\limits_{i = 1}^m {{P_i}} )
Z(λ,Pi)=i=1∑mlog2(1+σ2Piλi)+L(P−i=1∑mPi)
对
P
i
{{P_i}}
Pi求偏导,有
解得:
P
i
=
1
L
∙
ln
2
−
σ
2
λ
i
=
μ
−
σ
2
λ
i
{P_i} = \frac{1}{{L \bullet \ln 2}} - \frac{{{\sigma ^2}}}{{{\lambda _i}}}=\mu-\frac{{{\sigma ^2}}}{{{\lambda _i}}}
Pi=L∙ln21−λiσ2=μ−λiσ2
其中
μ
\mu
μ为常数
因为功率不能为负数,将上述写为如下形式:
P
i
=
(
μ
−
σ
2
λ
i
)
+
{P_i} = {\left( {\mu - \frac{{{\sigma ^2}}}{{{\lambda _i}}}} \right)^ + }
Pi=(μ−λiσ2)+
所以最优的分配策略如上式
其中
(
a
)
+
=
max
(
a
,
0
)
{\left( a \right)^ + } = \max (a,0)
(a)+=max(a,0)
这里可用通过
∑
i
=
1
m
P
i
=
P
=
m
μ
−
∑
i
=
1
m
σ
2
λ
2
\sum\limits_{i = 1}^m {{P_i}} = P = m\mu - \sum\limits_{i = 1}^m {\frac{{{\sigma ^2}}}{{{\lambda ^2}}}}
i=1∑mPi=P=mμ−i=1∑mλ2σ2
得到:
μ
=
P
+
∑
i
=
1
m
σ
2
λ
2
m
\mu = \frac{{P + \sum\limits_{i = 1}^m {\frac{{{\sigma ^2}}}{{{\lambda ^2}}}} }}{m}
μ=mP+i=1∑mλ2σ2
也就是说,当已知csi(信道状态信息时),发送端会选择好的信道,给它分配大功率,过程如图示