In this section, we discuss the design of the precoding matrix. As is mentioned above, the double codebook structure is adopted in our precoding matrix design, where the precoding matrix **W** is the product of two matrices **W** = **W**_{1}**W**_{2}, and they are selected from a long-term codebook and a short-term codebook, respectively. Inner precoding matrix **W**_{1} roughly orients the direction of the channel main lobe and is decided by long-term CSI, i.e., channel’s transmit correlation matrix. In the case of flat fading channel whose statistical information is regarded to be unchanged for a long period, **W**_{1} remains constant during this period. Outer precoding matrix **W**_{2} is used for precise positioning and is decided by instantaneous CSI. Since such information changes over time, **W**_{2} should be synchronously updated with the instantaneous channel. Due to the block diagonal feature of the transmit correlation matrix of the 3D dual-polarized channel, the length of each codeword is only half of the total number of transmit antennas, i.e., *N*_{
tx
}, which contributes to dimensionality reduction. Comprehensive utilization of both long-term and short-term CSI also results in feedback period extension. To discuss the design of inner precoding matrix **W**_{1}, we first introduce the selection of basic beam set and then explain the design of inner precoding and outer precoding matrix in detail.

### 3.1 Basic beam set

Theoretical research has shown that the deployment of UPA topology used in BS antenna array can greatly exploit the vertical domain and adjust the beam direction in 3D space feasibly[20]. The orientation of a beam is determined by downtilt *γ*_{
t
} and azimuth *θ*_{
t
}, as shown in Figure3. We can split the whole 3D space using *γ*_{
t
} and *θ*_{
t
} and select *N*_{
v
} downtilt values from [-*π*/2,*π*/2] and *N*_{
h
} azimuth values from [0,2*π*]. If we combine these values together, the complete set of basic beams will be defined, which covers *N*_{
v
} × *N*_{
h
} directions totally. These basic beams can be regarded as a set of basic vectors in 3D space, and any spatial vector can be represented using this set. Let **c**_{
i
} represent the *i* th beam. The basic beam set can be displayed in the form of UPA topology shown in Figure3, where the downtilts of the beams in a row are the same, so do the azimuths of the beams in a column, as shown in Figure5.

In practical situations, users are located in a small range in the vertical domain. Downtilt values of the basic beams are not uniformly distributed in [-*π*/2,*π*/2] but centralized in a small range. In this case, as presented in Figure5, the right semi-circle is non-uniformly segmented. However, the UPA topology for the basic beam set is still available. Existing 3D beamforming techniques satisfying this UPA topology includes the Kronecker product-based codebook (KPC) precoding scheme[23]. KPC is derived from the traditional DFT codebook by making the Kronecker product of horizontal DFT codewords and vertical DFT codewords as follows:

\begin{array}{l}{\mathbf{c}}_{{N}_{h}m+n}={\mathbf{c}}_{m}^{(v)}\otimes {\mathbf{c}}_{n}^{(h)},\\ \phantom{\rule{3em}{0ex}}{\mathbf{c}}_{m}^{(v)}=\frac{1}{\sqrt{{N}_{\mathit{\text{tx}}}^{(v)}}}{\left[1,{e}^{\frac{j2\pi m}{\beta {N}_{v}}},\dots ,{e}^{\frac{j2\pi ({N}_{\mathit{\text{tx}}}^{(v)}-1)m}{\beta {N}_{v}}}\right]}^{T},\\ \phantom{\rule{2.8em}{0ex}}{\mathbf{c}}_{n}^{(h)}=\frac{1}{\sqrt{{N}_{\mathit{\text{tx}}}^{(h)}}}{\left[1,{e}^{\frac{j2\pi n}{{N}_{h}}},\dots ,{e}^{\frac{j2\pi ({N}_{\mathit{\text{tx}}}^{(h)}-1)n}{{N}_{h}}}\right]}^{T},\\ \phantom{\rule{4em}{0ex}}m=1,\dots ,{N}_{v},n=1,\dots ,{N}_{h},\end{array}

(5)

where *β* is a parameter related to the abovementioned regional centralization of user distribution in the vertical domain. Obviously, KPC codewords are designed according to the transmit antenna array response (1); therefore, they can match the 3D spatial channel model well. Figure6 gives an example of the projection of KPC beams onto the horizontal plane when{N}_{\mathit{\text{tx}}}^{(h)}={N}_{\mathit{\text{tx}}}^{(v)}=8,{N}_{h}=32,{N}_{v}=16,\beta =4. Beams **c**_{1} and **c**_{9}, **c**_{225} and **c**_{233} lie in the same row of the UPA array, respectively; meanwhile, **c**_{1} and **c**_{225}, **c**_{9} and **c**_{233} are in the same column. Energy distribution of these beams illustrates that the downtilts of **c**_{1} and **c**_{9} are the same, as well as the azimuths of **c**_{1} and **c**_{225}, demonstrating that the KPC beams satisfy the previous angle requirement for the basic beam set.

According to the 3GPP 3D channel model[9],{\mathbf{c}}_{m}^{(v)} in (5) is no longer able to cover the high-rise situation. Knowing that the value set of parameter *m* corresponds to a *N*_{
v
}-size subset taken out from a *β* *N*_{
v
}-size downtilt value set, it can be changed according to the practical situation. For example, for the case in Figure7, the value set of *m* can be selected as {-3,-2,⋯,6}, covering all the potential situation including both the high rise and the ground.

### 3.2 Precoding matrix design

Inner precoding roughly orients the channel and captures the channel’s main lobe by choosing a few basic beams that are adjacent to each other. Under the deployment of dual-polarized antenna array, transmit correlation matrix **R** of the channel holds the following block diagonal feature:

\mathbf{R}=\left[\begin{array}{cc}\mathbf{A}& \mathbf{0}\\ \mathbf{0}& \mathbf{B}\end{array}\right],

(6)

where **A** and **B** are the transmit correlation submatrices of two polarization directions and are approximately equal. According to this long-term character, the *k* th inner precoding matrix in the long-term codebook is defined as

{\mathbf{W}}_{1}(k)=\left[\begin{array}{cc}{\mathbf{X}}_{k}& \mathbf{0}\\ \mathbf{0}& {\mathbf{X}}_{k}\end{array}\right],

(7)

where **X**_{
k
} is a *N*_{
tx
} × *N*_{
b
} matrix representing the *k* th subset of the basic beam set which contains *N*_{
b
} basic beams, *N*_{
b
} = *N*_{
bv
}*N*_{
bh
}, *N*_{
bv
} and *N*_{
bh
} are the row and column number of each basic beam subset. Figure8 gives an example of **X**_{
k
} and illustrates its position in the complete basic beam set as the dotted line surrounds.{\mathbf{X}}_{k}=\left[\begin{array}{cccc}{\mathbf{c}}_{i}& {\mathbf{c}}_{i+1}& \cdots & {\mathbf{c}}_{i+{N}_{b}-1}\end{array}\right], *i* = 1,⋯,*N*_{
h
}*N*_{
v
}, and the relationship between *i* and *k* is decided by the definition of basic beam subset.

If the complete set is uniformly segmented and non-overlapping exists among subsets, the numerical relation between the complete set and the beam subsets satisfies

{N}_{v}=m{N}_{\mathit{\text{bv}}},{N}_{h}=n{N}_{\mathit{\text{bh}}},

(8)

where *m*,*n* are integers. Referring to the Release 10 scheme[8], to avoid border vagueness, we can consider the method of overlapping among subsets, and the overlapping ratio between adjacent subsets is 1/2. In such case, the selected subsets have higher possibility to cover the channel main lobe, but the amount of subsets doubles afterwards. Here we use three overlapping definitions, that is, overlapping in only the horizontal domain, in only the vertical domain, and in both domains. Take *N*_{
v
} = 4,*N*_{
h
} = 32,*N*_{
bv
} = 2,*N*_{
bh
} = 4 case as an example, and four different segment methods are shown in Figure9.

Outer precoding is used for beam matching. The beams best matching the current instantaneous channel will be picked out from the previous selected subset. Considering rank 1 transmission, only one beam will be selected, and therefore, the *l* th outer precoding matrix in the short-term codebook is expressed as follows:

{\mathbf{W}}_{2}(l)=\left[\begin{array}{c}{\mathbf{e}}_{i}^{({N}_{b})}\\ \alpha {\mathbf{e}}_{i}^{({N}_{b})}\end{array}\right],

(9)

where

{\mathbf{e}}_{i}^{({N}_{b})}=\left[\underset{i-1}{\underset{\u23df}{0,\dots ,0}},1,\underset{{N}_{b}-i}{\underset{\u23df}{0,\dots ,0}}\right],

*i* = 1,⋯,*N*_{
b
} and *α* is a phase parameter from the QPSK signal set {1,*j*,-1,-*j*}. There are altogether 4*N*_{
b
} alternatives for **W**_{2}.