 problems remain here: (i) The calculation of Wn involves Wk and vice versa; (ii) Power Pn and Pk are unknown. Next, we propose an iterative way to solve for precoding generation under the assumption that each UE's power is known as a prior. We start with and calculate Hneq, WWH and Hk sequentially, then update WkWH according to the new Hkea* The process will continue until it reaches the maximum iteration number. To make further clarification, the algorithm for precoding design is summarized in Algorithm 3.1. Algorithm 3.1 Iterative Precoding Design 1: Initialization: Given power Pn and Pk, maximum iteration number MAXITER. 3: for i=1 to MAXITER do Calculate Hnea based on WkWH Solve for WWH from the SVD of Calculate Hkeq based on WnWH Update WkW from the SVD of HkHkeq 8: end for 9: Output Rn, Rk, WkWH and WnWH. A note here is that the covariance matrix WkWH and WnWH actually characterize the data rate, not Wn or Wk individually. And an easy way to find Wn and Wk is, W n =U,E,,w,= U,E = (3.24) which is rather straightforward. 3.4.2 Case Studies for Power Allocation In this section, two case studies are investigated. 3.4.2.1 Case | The error propagation factor B is a small value. In this special case, we can omit the impact of imperfect DRS process and Rn becomes, (3.25) 3.5 Numerical Results Since the sum rate (Rn + Rk) is a monotone increasing function of Pn, n' as shown in [171], we only need to find the minimum power for the weak user k to meet the data rate require- ment, and then allocate the rest of the power to UE n. In this case, we can get the optimal power by using bisection search algorithm [170, 171]. 3.4.2.2 Case II B is large. In this case, we may discard the ambient (thermal) noise and Rn is only affected by the residual interference from UE k. Rn = log, det (I (3.26) This can happen when the received SINR for UE k is relatively small, causing a higher error probability. The sum rate in this case is neither an increasing nor decreasing function of Pn, n' and hence is difficult to track. As we will 