(Water Filling)注水算法原理与实现

Posted 爱吃猫咪的花酱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(Water Filling)注水算法原理与实现相关的知识,希望对你有一定的参考价值。

目录

问题背景与建模

考虑一个多用户多输入单输出MU-MISO下行通信场景,基站端配置有 N N N根天线,其服务该小区下 K K K个单天线用户。假定信道为平坦瑞利衰落信道,记为 H ∈ C N × K \\mathbfH\\in\\mathcalC^N\\times K HCN×K,基站最大发射功率为 P P P。假设波束赋形采用Zero Forcing,若记
W = H ( H H H ) − 1 \\mathbfW=\\mathbfH(\\mathbfH^H\\mathbfH)^-1 W=H(HHH)1

注意 W \\mathbfW W并不是最终的波束赋形矩阵,因为还没有考虑功率约束以及进一步的功率分配。

则第 k k k个用户的波束方向为
w ~ k = w 1 ∣ ∣ w 1 ∣ ∣ 2 \\tilde\\mathbfw_k=\\frac\\mathbfw_1||\\mathbfw_1||_2 w~k=w12w1

W ~ = [ w ~ 1 , . . . , w ~ K ] \\tilde \\mathbfW=[\\tilde\\mathbfw_1,...,\\tilde\\mathbfw_K] W~=[w~1,...,w~K],功率分配矩阵为

P = diag ( P 1 , . . . , P K ) \\mathbfP=\\textdiag(P_1,...,P_K) P=diag(P1,...,PK)

则最终的波束赋形矩阵为
W ZF = W ~ ⋅ P \\mathbfW_\\textZF=\\tilde \\mathbfW\\cdot\\sqrt\\mathbfP WZF=W~P

若不考虑功率分配,显然 ∀ k ,   P k = P / K \\forall k,\\ P_k=P/K k, Pk=P/K

若记基站发送的符号向量为 s = [ s 1 , . . . , s K ] \\mathbfs=[s_1,...,s_K] s=[s1,...,sK],且满足 E [ s s H ] = I K \\mathbbE[\\mathbfs\\mathbfs^H]=\\mathbfI_K E[ssH]=IK,则用户 k k k接收到的信号为
y k = h k H w k s k + n k y_k=\\mathbfh_k^H\\mathbfw_ks_k+n_k yk=hkHwksk+nk

这是因为ZF完全消除了用户间干扰!此时SINR就是SNR。

而对于其他的波束赋形,如MMSE、MRT等,由于用户间干扰不能完全去除,用户 k k k的SINR里面还嵌入有其他用户的功率,本文water-filling求出的解只是对于ZF波束赋形是最优的,对于其他的beamforming, 只能说是次优和heuristic的。

其中 n k n_k nk为用户 k k k处的噪声, n k ∼ C N ( 0 ,   1 ) n_k\\sim \\mathcalCN(0,\\ 1) nkCN(0, 1)。第 k k k个用户的信噪比SNR为
γ k = ∣ ∣ h k H w k ∣ ∣ 2 2 = P k ∣ ∣ h k H w ~ k ∣ ∣ 2 2 \\gamma_k=||\\mathbfh_k^H\\mathbfw_k||_2^2=P_k||\\mathbfh_k^H\\tilde\\mathbfw_k||_2^2 γk=hkHwk22=PkhkHw~k22

k k k个用户的信息速率为
R k = log ⁡ ( 1 + γ k ) R_k=\\log(1+\\gamma_k) Rk=log(1+γk)

实际上这是肯定不可能达到的,只具有理论分析上的意义。

现在希望合理的分配功率来使得加权和速率最大,即
max ⁡ P 1 , . . . , P K ∑ k = 1 K α k R k s.t. ∑ k = 1 K P k = P P k ≥ 0 \\max_P_1,...,P_K\\quad \\sum_k=1^K\\alpha_kR_k\\\\ \\\\ \\texts.t.\\quad \\sum_k=1^KP_k=P\\\\ P_k\\geq 0 P1,...,PKmaxk=1KαkRks.t.k=1KPk=PPk0

上面直接让各用户功率之和等于最大发射功率,即让本来的不等式约束变为严格等于。这是因为最优解必然是满足这一点的。

问题求解

∑ k = 1 K α k R k = ∑ k = 1 K α k log ⁡ ( 1 + P k ∣ ∣ h k H w ~ k ∣ ∣ 2 2 ) = ∑ k = 1 K α k log ⁡ ( 1 ∣ ∣ h k H w ~ k ∣ ∣ 2 2 + P k ) + ∑ k = 1

以上是关于(Water Filling)注水算法原理与实现的主要内容,如果未能解决你的问题,请参考以下文章

注水功率分配注水功率分配算法的MATLAB仿真

小小知识点——基于注水算法的功率分配方法

CGAL实现Hole Filling(补洞)功能

CGAL实现Hole Filling(补洞)功能

[Codeforces 1228E]Another Filling the Grid (排列组合+容斥原理)

我做“基于FFT算法与实现”和“FIR滤波器的设计与实现”的实验。。