Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
TECHNIQUES TO DETERMINE LONG-TERM CODEBOOK FOR NON-SEPARABLE ANTENNA ARRAYS
Document Type and Number:
WIPO Patent Application WO/2017/023305
Kind Code:
A1
Abstract:
A technique for determining a set of codebook matrices includes receiving, by a user device, a set of parameters for array response generation including: position information indicating relative positions of a plurality of antenna elements of an antenna array of an access point; and a set of azimuth angle/elevation angle pairs over which the set of long-term codebook matrices should be defined; determining, by the user device, a set of array response vectors based on the set of parameters for array response generation, the array response vectors including an array response vector for each of the azimuth angle/elevation angle pairs; and determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein there is at least some overlap of array response vectors between adjacent long-term codebook matrices of the set of long-term codebook matrices.

Inventors:
MONDAL BISHWARUP (US)
VISOTSKY EUGENE (US)
WANG XIAOYI (US)
Application Number:
PCT/US2015/043734
Publication Date:
February 09, 2017
Filing Date:
August 05, 2015
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
NOKIA SOLUTIONS & NETWORKS OY (FI)
MONDAL BISHWARUP (US)
International Classes:
H04B7/06; H04B7/04
Domestic Patent References:
WO2015060880A12015-04-30
Foreign References:
US20130028341A12013-01-31
US20140328422A12014-11-06
US20130010880A12013-01-10
Other References:
TAN SHUANG ET AL: "Design and Evaluation of LTE-Advanced Double Codebook", VEHICULAR TECHNOLOGY CONFERENCE (VTC SPRING), 2011 IEEE 73RD, IEEE, 15 May 2011 (2011-05-15), pages 1 - 5, XP031896884, ISBN: 978-1-4244-8332-7, DOI: 10.1109/VETECS.2011.5956484
Attorney, Agent or Firm:
BRAKE, R. Edward et al. (US)
Download PDF:
Claims:
WHAT IS CLAIMED IS:

1. A method of determining a set of long-term codebook matrices, the method comprising:

receiving, by a user device, a set of parameters for array response generation including:

position information indicating relative positions of a plurality of antenna elements of an antenna array of an access point; and

a set of azimuth angle/elevation angle pairs over which the set of long- term codebook matrices should be defined;

determining, by the user device, a set of array response vectors based on the set of parameters for array response generation, the array response vectors including an array response vector for each of the azimuth angle/elevation angle pairs;

determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein there is at least some overlap of array response vectors between adjacent long-term codebook matrices of the set of long-term codebook matrices.

2. The method of claim 1 wherein the position information comprises position information indicating relative positions of a plurality of antenna elements of an non-separable antenna array of an access point.

3. The method of claim 1 and further comprising:

receiving, by the user device from the access point, a signal in which the access point has performed precoding on the signal before transmission based at least on a selected long-term codebook matrix.

4. The method of claim 1 and further comprising:

measuring, by the user device, a channel between the access point and the user device;

selecting, by the user device based on the measured channel, a selected long-term codebook matrix of the set of long-term codebook matrices; sending, by the user device to the access point, an indication of the selected long- term codebook matrix; and

receiving a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix.

5. The method of claim land further comprising:

measuring, by the user device, a channel between the access point and the user device; and

selecting, by the user device based on the measured channel, a selected long-term codebook matrix of the set of long-term codebook matrices, wherein the selecting includes:

selecting a rank indication;

selecting a precoding matrix indicator that identifies the selected long- term codebook matrix within the set of long-term codebook matrices;

selecting a precoding matrix indicator that identifies a selected short-term codebook matrix within the set of short-term codebook matrices; and

wherein the selected long-term codebook matrix post multiplied by the selected short-term codebook matrix defines a precoding on the signal before transmission.

6. The method of claim 4 wherein the sending, by the user device to the access point, an indication of the selected long-term codebook matrix comprises:

sending, by the user device to the access point, a rank indication

sending, by the user device to the access point a precoding matrix indicator that identifies the selected long-term codebook matrix within the set of long-term codebook matrices; and

sending, by the user device to the access point, a precoding matrix indicator that identifies a selected short-term codebook matrix within a set of short-term codebook matrices; and

wherein the selected long-term codebook matrix post multiplied by the selected short-term codebook matrix defines a precoding on the signal before transmission.

7. The method of claim 1 wherein the receiving, by a user device, a set of parameters for array response generation comprises:

receiving, by the user device from the access point, a set of parameters for array response generation.

8. The method of claim 1 wherein the receiving, by a user device, a set of parameters for array response generation comprises:

the user device configured with the set of parameters for array response generation.

9. The method of claim 1 wherein the determining a set of long-term codebook matrices comprises:

determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein at least some of the array response vectors are the same or in common for at least some adjacent long-term codebook matrices within the set of long-term codebook matrices.

10. The method of claim 4 and further comprising:

selecting, by the user device based on the measured channel, a selected short-term codebook matrix of the set of short-term codebook matrices;

sending, by the user device to the access point, an indication of the selected short- term codebook matrix;

receiving a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix and the selected short-term codebook matrix; and

performing, by the user device, demodulation on the received signal.

11. An apparatus may comprise at least one processor and at least one memory including computer instructions, when executed by the at least one processor, cause the apparatus to: receive, by a user device, a set of parameters for array response generation including:

position information indicating relative positions of a plurality of antenna elements of an antenna array of an access point; and

a set of azimuth angle/elevation angle pairs over which the set of long- term codebook matrices should be defined;

determine, by the user device, a set of array response vectors based on the set of parameters for array response generation, the array response vectors including an array response vector for each of the azimuth angle/elevation angle pairs; and

determine, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein there is at least some overlap of array response vectors between adjacent long-term codebook matrices of the set of long-term codebook matrices.

12. The apparatus of claim 11 wherein the position information comprises position information indicating relative positions of a plurality of antenna elements of a non-separable antenna array of an access point.

13. The apparatus of claim 11 wherein the apparatus is further configured to: receive, by the user device from the access point, a signal in which the access point has performed precoding on the signal before transmission based at least on a selected long-term codebook matrix.

14. The apparatus of claim 11 wherein the apparatus is further configured to: measure, by the user device, a channel between the access point and the user device;

select, by the user device based on the measured channel, a selected long-term codebook matrix of the set of long-term codebook matrices;

send, by the user device to the access point, an indication of the selected long- term codebook matrix; and receive a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix.

15. The apparatus of claim 11 wherein the apparatus is further configured to: measure, by the user device, a channel between the access point and the user device; and

select, by the user device based on the measured channel, a selected long-term codebook matrix of the set of long-term codebook matrices, wherein the being configured to select includes being configured to:

select a rank indication;

select a precoding matrix indicator that identifies the selected long-term codebook matrix within the set of long-term codebook matrices;

select a precoding matrix indicator that identifies a selected short-term codebook matrix within the set of short-term codebook matrices; and

wherein the selected long-term codebook matrix post multiplied by the selected short-term codebook matrix defines a precoding on the signal before

transmission.

16. The apparatus of claim 11 wherein the being configured to receive, by a user device, a set of parameters for array response generation comprises:

the user device being configured with the set of parameters for array response generation.

17. The apparatus of claim 11 wherein the being configured to determine a set of long-term codebook matrices comprises being configured to:

determine, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein at least some of the array response vectors are the same or in common for at least some adjacent long-term codebook matrices within the set of long-term codebook matrices.

18. The apparatus of claim 11 and being further configured to: select, by the user device based on the measured channel, a selected short-term codebook matrix of the set of short-term codebook matrices;

send, by the user device to the access point, an indication of the selected short- term codebook matrix;

receive a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix and the selected short-term codebook matrix; and

perform, by the user device, demodulation on the received signal.

19. A computer program product comprising a computer-readable storage medium and storing executable code that, when executed by at least one data processing apparatus, is configured to cause the at least one data processing apparatus to perform a method including:

receiving, by a user device, a set of parameters for array response generation including:

position information indicating relative positions of a plurality of antenna elements of an antenna array of an access point; and

a set of azimuth angle/elevation angle pairs over which the set of long- term codebook matrices should be defined;

determining, by the user device, a set of array response vectors based on the set of parameters for array response generation, the array response vectors including an array response vector for each of the azimuth angle/elevation angle pairs; and

determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein there is at least some overlap of array response vectors between adjacent long-term codebook matrices of the set of long-term codebook matrices.

Description:
TECHNIQUES TO DETERMINE LONG-TERM CODEBOOK FOR NON- SEPARABLE ANTENNA ARRAYS

TECHNICAL FIELD

[0001] This description relates to communications.

BACKGROUND

[0002] A communication system may be a facility that enables communication between two or more nodes or devices, such as fixed or mobile communication devices. Signals can be carried on wired or wireless carriers.

[0003] An example of a cellular communication system is an architecture that is being standardized by the 3 rd Generation Partnership Project (3 GPP). A recent development in this field is often referred to as the long-term evolution (LTE) of the Universal Mobile Telecommunications System (UMTS) radio-access technology. E- UTRA (evolved UMTS Terrestrial Radio Access) is the air interface of 3GPP's Long Term Evolution (LTE) upgrade path for mobile networks. In LTE, base stations or access points (APs), which are referred to as enhanced Node AP (eNBs), provide wireless access within a coverage area or cell. In LTE, mobile devices, or mobile stations are referred to as user equipments (UE). LTE has included a number of improvements or developments.

[0004] A global bandwidth shortage facing wireless carriers has motivated the consideration of the underutilized millimeter wave (mm Wave) frequency spectrum for future broadband cellular communication networks, for example. mmWave (or extremely high frequency) may, for example, include the frequency range between 30 and 300 gigahertz (GHz). Radio waves in this band may, for example, have

wavelengths from ten to one millimeters, giving it the name millimeter band or millimeter wave. The amount of wireless data will likely significantly increase in the coming years. Various techniques have been used in attempt to address this challenge including obtaining more spectrum, having smaller cell sizes, and using improved technologies enabling more bits/s/Hz. One element that may be used to obtain more spectrum is to move to higher frequencies, above 6 GHz. For fifth generation wireless systems (5G), an access architecture for deployment of cellular radio equipment employing mm Wave radio spectrum has been proposed.

[0005] Precoding is a technique which exploits transmit diversity by weighting an information stream at the transmitter based on knowledge of the channel between a base station and a mobile station. For example, in some cases, multiple data streams are transmitted from multiple transmit antennas with independent weightings such that data throughput and/or received signal quality at the receiver may be improved.

SUMMARY

[0006] According to an example implementation, a method is provided for determining a set of long-term codebook matrices for an antenna array (e.g., a separable antenna array, or a non-separable antenna array) of an access point. The method may include receiving, by a user device, a set of parameters for array response generation including: position information indicating relative positions of a plurality of antenna elements of an antenna array of an access point; and a set of azimuth angle/elevation angle pairs over which the set of long-term codebook matrices should be defined;

determining, by the user device, a set of array response vectors based on the set of parameters for array response generation, the array response vectors including an array response vector for each of the azimuth angle/elevation angle pairs; and, determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein there is at least some overlap of array response vectors between adjacent long-term codebook matrices of the set of long-term codebook matrices.

[0007] An apparatus may include at least one processor and at least one memory including computer instructions, when executed by the at least one processor, cause the apparatus to: receive, by a user device, a set of parameters for array response generation including: position information indicating relative positions of a plurality of antenna elements of an antenna array of an access point; and a set of azimuth angle/elevation angle pairs over which the set of long-term codebook matrices should be defined;

determine, by the user device, a set of array response vectors based on the set of parameters for array response generation, the array response vectors including an array response vector for each of the azimuth angle/elevation angle pairs; and determine, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein there is at least some overlap of array response vectors between adjacent long-term codebook matrices of the set of long-term codebook matrices.

[0008] According to another example implementation, a computer program product includes a computer-readable storage medium and storing executable code that, when executed by at least one data processing apparatus, is configured to cause the at least one data processing apparatus to perform a method including: receiving, by a user device, a set of parameters for array response generation including: position information indicating relative positions of a plurality of antenna elements of an antenna array of an access point; and a set of azimuth angle/elevation angle pairs over which the set of long- term codebook matrices should be defined; determining, by the user device, a set of array response vectors based on the set of parameters for array response generation, the array response vectors including an array response vector for each of the azimuth

angle/elevation angle pairs; and determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein there is at least some overlap of array response vectors between adjacent long-term codebook matrices of the set of long-term codebook matrices.

[0009] According to an example implementation, an apparatus may be provided for determining a set of long-term codebook matrices for an antenna array (e.g., a separable antenna array, or a non-separable antenna array) of an access point. The apparatus may include means for receiving, by a user device, a set of parameters for array response generation including: position information indicating relative positions of a plurality of antenna elements of an antenna array of an access point; and a set of azimuth angle/elevation angle pairs over which the set of long-term codebook matrices should be defined; means for determining, by the user device, a set of array response vectors based on the set of parameters for array response generation, the array response vectors including an array response vector for each of the azimuth angle/elevation angle pairs; and, means for determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein there is at least some overlap of array response vectors between adjacent long-term codebook matrices of the set of long-term codebook matrices.

[0010] The details of one or more examples of implementations are set forth in the accompanying drawings and the description below. Other features will be apparent from the description and drawings, and from the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

[0011] FIG. 1 is a block diagram of a wireless network according to an example implementation.

[0012] FIG. 2 is a diagram of a wireless transceiver according to an example implementation.

[0013] FIG. 3 is a diagram illustrating a separable antenna array 300 according to an illustrative example implementation.

[0014] FIG. 4 is a diagram illustrating a non-separable antenna array 400 according to an illustrative example implementation.

[0015] FIG. 5 is a flow chart illustrating operation of a user device according to an example implementation.

[0016] FIG. 6 is a diagram illustrating an example definition of x, y, z axes, origin, azimuth and elevation angles, and a wave vector according to an illustrative example implementation.

[0017] FIG.7 is a block diagram of a wireless station (e.g., base station/access point or mobile station/user device) according to an example implementation.

DETAILED DESCRIPTION

[0018] FIG. 1 is a block diagram of a wireless network 130 according to an example implementation. In the wireless network 130 of FIG. 1, user devices 131, 132, 133 and 135, which may also be referred to as user devices (UDs), may be connected (and in communication) with an access point (AP), which may also be referred to as a base station (BS) or an enhanced Node B (eNB). At least part of the functionalities of an access point (AP), base station (BS) or (e)Node B (eNB) may be also be carried out by any node, server or host which may be operably coupled to a transceiver, such as a remote radio head. AP 134 provides wireless coverage within a cell 136, including to user devices 131, 132, 133 and 135. Although only four user devices are shown as being connected or attached to AP 134, any number of user devices may be provided. AP 134 is also connected to a core network 150 via a SI interface 151. This is merely one simple example of a wireless network, and others may be used.

[0019] A user device (user terminal, user equipment (UE)) may refer to a portable computing device that includes wireless mobile communication devices operating with or without a subscriber identification module (SIM), including, but not limited to, the following types of devices: a mobile station, a mobile phone, a cell phone, a smartphone, a personal digital assistant (PDA), a handset, a device using a wireless modem (alarm or measurement device, etc.), a laptop and/or touch screen computer, a tablet, a phablet, a game console, a notebook, and a multimedia device, as examples. It should be appreciated that a user device may also be a nearly exclusive uplink only device, of which an example is a camera or video camera loading images or video clips to a network.

[0020] In LTE (as an example), core network 150 may be referred to as Evolved Packet Core (EPC), which may include a mobility management entity (MME) which may handle or assist with mobility/handover of user devices between BSs, one or more gateways that may forward data and control signals between the BSs and packet data networks or the Internet, and other control functions or blocks.

[0021 ] The various example implementations may be applied to a wide variety of wireless technologies or wireless networks, such as LTE, LTE -A, 5G, and/or mm Wave band networks, or any other wireless network. LTE, 5G and mm Wave band networks are provided only as illustrative examples, and the various example implementations may be applied to any wireless technology/wireless network.

[0022] FIG. 2 is a diagram of a wireless transceiver according to an example implementation. Wireless transceiver 200 may be used, for example, at a base station (BS), e.g., Access Point (AP) or eNB, or other wireless device. Wireless transceiver 200 may include a transmit path 210 and a receive path 212.

[0023] In transmit path 210, a digital-to-analog converter (D-A) 220 may receive a digital signal from one or more applications and convert the digital signal to an analog signal. Upmixing block 222 may up-convert the analog signal to an RF (e.g., radio frequency) signal. Power amplifier (PA) 224 then amplifies the up-converted signal. The amplified signal is then passed through a transmit/receive (T/R) switch (or Diplexer 226 for frequency division duplexing, to change frequencies for transmitting). The signal output from T/R switch 226 is then output to one or more antennas in an array of antennas 228, such as to antenna 228A, 228B and/or 228C. Prior to being transmitted by one or more of the antennas in the array of antennas 228, a set of beam weights Vi, V 2 , ...or VQ is mixed with the signal to apply a gain and phase to the signal for transmission. For example, a gain and phase, Vi, V 2 , ...or VQ, may be applied to the signal output from the T/R switch 226 to scale the signal transmitted by each antenna (e.g., the signal is multiplied by Vi before being transmitted by antenna 1 228A, the signal is multiplied by V 2 before being transmitted by antenna 2 228B, and so on), where the phase may be used to steer or point a beam transmitted by the overall antenna array, e.g., for directional beam steering. Thus, the beam weights Vi, V 2 , ...or VQ (e.g., each beam weight including a gain and/or phase) may be a set of transmit beamforming beam weights when applied at or during transmission of a signal to transmit the signal on a specific beam, and may be a set of receive beamforming beam weights when applied to receive a signal on a specific beam.

[0024] In receive path 212 of wireless transceiver 200, a signal is received via an array of antennas 228, and is input to T/R switch 226, and then to low noise amplifier (LNA) 230 to amplify the received signal. The amplified signal output by LNA 230 is then input to a RF-to-baseband conversion block 232 where the amplified RF signal is down-converted to baseband. An analog-to-digital (A-D) converter 234 then converts the analog baseband signal output by conversion block 232 to a digital signal for processing by one or more upper layers/application layers.

[0025] Precoding may be a technique that exploits array gain by weighting an information stream at the transmitter based on knowledge of the channel(s) between a base station and a mobile station. For example, in some cases, multiple data streams are transmitted from multiple transmit antennas with independent weightings such that data throughput and/or received signal quality at the receiver may be improved.

[0026] According to an example implementation, codebook-based precoding may be performed by AP 134 based on a channel(s) measured by the user device 132. In an example implementation, both the user device 132 and the AP 134 may determine a long- term codebook (Wl) and a short-term codebook (W2) to be used for precoding. For example, each codebook may include a set of matrices, and one matrix (of the set of matrices) from each of the Wl, W2 codebooks may be selected and combined in the form of Wl(kl)*W2(k2) to be used for precoding by the AP 134 based on the channel(s).

[0027] In an illustrative example, AP 134 may transmit/send cell-specific reference signals that are received by the user device 132. User device 132 may measure one or more qualities of the channel between the AP 134 and user device 132 based on the received cell-specific reference signals. Based on the measured channel quality (and/or based on the received cell-specific reference signals), user device 132 may select a suitable transmission rank and a precoder matrix (e.g., a precoder matrix for each of codebooks Wl and W2 given by indices kl and k2). User device 132 may then report this information to the BS 134 by sending the BS 134 a rank indication (RI) and precoder matrix indications (PMI). For example, a PMI kl may be provided for codebook Wl and a PMI (precoding matrix indicator) k2 may be provided for codebook W2 . The AP 134 or transmitter may perform precoding (based on the selected precoder matrix for each of Wl codebook and W2 codebook e.g., precoding may be based on Wl(kl)*W2(k2)) for a signal stream or block(s) of data, and then transmit the precoded data/signal to the user device 132.

[0028] For example, at the BS 134, an output (transmitted/precoded) signal Y may be determined or generated based on the input signal X and the selected codebook matrices Wl(kl) and W2(k2), as follows, for example: Y=Wl(kl)*W2(k2)*X , where Wl(kl) is the kl-th matrix from the set of Wl matrices (of the Wl codebook), and W2(k2) is the k2-th matrix of the set of W2 matrices (of the W2 codebook). After the transmission of precoded signal Y from the AP 134, the received signal at the user device 132 can be expressed as w=HY+N, where Y is the precoded signal transmitted by the BS 134, H is the channel, N is the interference + noise, and w is the received signal (received by user device 132).

[0029] In an illustrative example implementation, user device 132 may receive the signal w, and perform post processing on the received signal, e.g., to undo or reverse the precoding operations in conjunction with the effect of the channel. For example, user device 132 may process the received signal, as follows (for example): Z = Rw where R is a function of Wl(kl)*W2(k2) and the channel, and Z may be a recovered or

approximated version of the original signal X, for example.

[0030] According to an example implementation, various techniques are described for determining a codebook (e.g., which may include a set of long-term codebook matrices) for a non-separable array.

[0031] FIG. 3 is a diagram illustrating a separable antenna array 300 according to an illustrative example implementation. Each dot in separable antenna array 300 in FIG. 3 identifies a location of an antenna element and/or a location of a transceiver

(transmitter/receiver) unit, for example. Thus, the example separable antenna array 300 shown in FIG. 3 includes 6 rows and 4 columns, providing 24 total antenna elements (as an example), with the azimuth beam or antenna element locations shown along the X- axis, and elevation beam and antenna element locations shown along the Y-axis. Thus, in FIG. 3, the azimuth direction/dimension is shown along the X or horizontal axis, while elevation direction/dimension is shown for the Y or vertical axis.

[0032] Upon receiving an incident electromagnetic (or transmitted wireless) wave or signal, each antenna element of separable antenna array 300 may generate a response to the wave, which may be represented as a complex number, which may include a gain/amplitude and a phase, for example. Each antenna element in the separable antenna array 300 may generate an independent or a different response (e.g., a different amplitude and phase) based on an incident wave or signal. A set of the responses generated by all (or the set) of the antenna elements of an antenna array (e.g., all 24 antenna elements of the separable antenna array 300 in the example of FIG. 3) may be referred to as an array response vector.

[0033] For a separable antenna array, the array response vector of the antenna array in response to a single source/wave (e.g., under far-field and/or narrowband assumption) can be expressed as a kronecker product of 1) a first array response vector in the elevation dimension and 2) a second array response vector in the azimuth dimension. In other words, for a separable antenna array, the array response vector is separable (or can be separated) into array response vector components in the elevation dimension and azimuth dimension. However, a problem with separable antenna arrays is that a separable antenna array significantly limits or constrains a codebook to only certain choices, or limits antenna element locations to only specific locations. There may be some advantages in providing codebooks for non-separable antenna arrays.

[0034] FIG. 4 is a diagram illustrating a non-separable antenna array 400 according to an illustrative example implementation. Each dot in non-separable antenna array 400 in FIG. 4 identifies a location of an antenna element and/or a location of a transceiver (transmitter/receiver) unit, for example, which may be provided at an access point (AP)/base station (BS) or other transmitter station, for example. Thus, the example non-separable antenna array 400 shown in FIG. 4 includes 24 total antenna elements, with the azimuth beam or antenna element locations shown along the X-axis, and elevation beam and antenna element locations shown along the Y-axis. Thus, in FIG. 4, the azimuth direction/dimension is shown along the X or horizontal axis, while elevation direction/dimension is shown for the Y or vertical axis.

[0035] Upon receiving an incident electromagnetic (or transmitted wireless) wave or signal, each antenna element of non-separable antenna array 400 may generate a response to the wave, which may be represented as a complex number, which may include a gain/amplitude and a phase, for example. Each antenna element in the separable antenna array 400 may generate an independent or a different response (e.g., a different amplitude and phase) based on an incident wave or signal. A set of the responses generated by all of the antenna elements of an antenna array (e.g., all 24 antenna elements of the non-separable antenna array 400 in the example of FIG. 4) may be referred to as an array response vector.

[0036] For a non-separable antenna array, the array response vector of the antenna array in response to a single source/wave (e.g., under far-field and narrowband assumption) cannot be expressed as a kronecker product of 1) a first array response vector in the elevation dimension and 2) a second array response vector in the azimuth dimension. In other words, for a non-separable antenna array, the array response vector is not separable (or cannot be separated) into array response vector components in the elevation dimension and azimuth dimension. For a non-separable antenna array, the responses of all the antenna elements cannot be expressed as a kronecker product of a response vector corresponding to a subset of antenna elements in the azimuth dimension and a response vector corresponding to a subset of antenna elements in the elevation dimension. [0037] FIG. 5 is a flow chart illustrating operation of a user device according to an example implementation. FIG. 5 describes an example method of determining a set of long-term codebook matrices for an antenna array (e.g., a separable antenna array, or a non-separable antenna array) of an access point. Operation 510 includes receiving, by a user device, a set of parameters for array response generation including: position information indicating relative positions of a plurality of antenna elements of an antenna array of an access point; and a set of azimuth angle/elevation angle pairs over which the set of long-term codebook matrices should be defined. Operation 520 includes determining, by the user device, a set of array response vectors based on the set of parameters for array response generation, the array response vectors including an array response vector for each of the azimuth angle/elevation angle pairs. And, operation 530 includes determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein there is at least some overlap of array response vectors between adjacent long-term codebook matrices of the set of long-term codebook matrices.

[0038] According to an example implementation of the method of FIG. 5, the position information may include position information indicating relative positions of a plurality of antenna elements of a non-separable antenna array of an access point.

[0039] According to an example implementation of the method of FIG. 5, the method may further include receiving, by the user device from the access point, a signal in which the access point has performed precoding on the signal before transmission based at least on a selected long-term codebook matrix.

[0040] According to an example implementation, of the method of FIG. 5, the method may further include measuring, by the user device, a channel between the access point and the user device; selecting, by the user device based on the measured channel, a selected long-term codebook matrix of the set of long-term codebook matrices; sending, by the user device to the access point, an indication of the selected long-term codebook matrix; receiving a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix. The method may also include performing, by the user device, postcoding on the received signals based at least on the selected long-term codebook matrix. According to an example implementation, the sending, by the user device to the access point, an indication of the selected long-term codebook matrix may include:

sending, by the user device to the access point, a rank indication that is associated with the set of long-term codebook matrices and a precoding matrix indicator that identifies the selected long-term codebook matrix within the set of long-term codebook matrices.

[0041] According to an example implementation of the method of FIG. 5, the receiving, by a user device, a set of parameters for array response generation may include: receiving, by the user device from the access point, a set of parameters for array response generation.

[0042] According to an example implementation of the method of FIG. 5, the receiving, by a user device, a set of parameters for array response generation may include: the user device being configured with the set of parameters for array response generation.

[0043] According to an example implementation of the method of FIG. 5, the determining a set of long-term codebook matrices may include: determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein at least some of the array response vectors are the same or in common for at least some adjacent long-term codebook matrices within the set of long-term codebook matrices.

[0044] According to an example implementation of the method of FIG. 5, the method may further include determining, by the user device, a set of short-term codebook matrices.

[0045] According to an example implementation of the method of FIG. 5, the method may further include: determining, by the user device, a set of short-term codebook matrices; selecting, by the user device based on the measured channel, a selected short-term codebook matrix of the set of short-term codebook matrices; sending, by the user device to the access point, an indication of the selected short-term codebook matrix; receiving a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix and the selected short-term codebook matrix; and performing, by the user device, post-processing including demodulation on the received signals based at least on the selected long-term codebook matrix.

[0046] According to an example implementation of the method of FIG. 5, the method may further include: measuring, by the user device, a channel between the access point and the user device; and selecting, by the user device based on the measured channel, a selected long-term codebook matrix of the set of long-term codebook matrices, wherein the selecting includes: selecting a rank indication; selecting a precoding matrix indicator that identifies the selected long-term codebook matrix within the set of long- term codebook matrices; selecting a precoding matrix indicator that identifies a selected short-term codebook matrix within the set of short-term codebook matrices; and wherein the selected long-term codebook matrix post multiplied by the selected short-term codebook matrix defines a precoding on the signal before transmission.

[0047] According to an example implementation of the method of FIG. 5, the sending, by the user device to the access point, an indication of the selected long-term codebook matrix may include: sending, by the user device to the access point, a rank indication; sending, by the user device to the access point a precoding matrix indicator that identifies the selected long-term codebook matrix within the set of long-term codebook matrices; and sending, by the user device to the access point, a precoding matrix indicator that identifies a selected short-term codebook matrix within a set of short-term codebook matrices; and wherein the selected long-term codebook matrix post multiplied by the selected short-term codebook matrix defines a precoding on the signal before transmission.

[0048] According to an example implementation of the method of FIG. 5, the receiving, by a user device, a set of parameters for array response generation may include: receiving, by the user device from the access point, a set of parameters for array response generation.

[0049] According to an example implementation of the method of FIG. 5, the receiving, by a user device, a set of parameters for array response generation may include the user device configured with the set of parameters for array response generation.

[0050] According to an example implementation of the method of FIG. 5, wherein the determining a set of long-term codebook matrices may include: determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein at least some of the array response vectors are the same or in common for at least some adjacent long-term codebook matrices within the set of long- term codebook matrices. [0051] According to an example implementation of the method of FIG. 5, the method further including: determining, by the user device, a set of short-term codebook matrices.

[0052] According to an example implementation of the method of FIG. 5, the method further including: determining, by the user device, a set of short-term codebook matrices; selecting, by the user device based on the measured channel, a selected short- term codebook matrix of the set of short-term codebook matrices; sending, by the user device to the access point, an indication of the selected short-term codebook matrix; receiving a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix and the selected short-term codebook matrix; and performing, by the user device, post-processing and demodulation on the received signal.

[0053] According to an example implementation of the method of FIG. 5, the method may further include: selecting, by the user device based on the measured channel, a selected short-term codebook matrix of the set of short-term codebook matrices; sending, by the user device to the access point, an indication of the selected short-term codebook matrix; receiving a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix and the selected short-term codebook matrix; and performing, by the user device, demodulation on the received signal.

[0054] An apparatus may include at least one processor and at least one memory including computer instructions, when executed by the at least one processor, cause the apparatus to: receive, by a user device, a set of parameters for array response generation including: position information indicating relative positions of a plurality of antenna elements of an antenna array of an access point; and a set of azimuth angle/elevation angle pairs over which the set of long-term codebook matrices should be defined;

determine, by the user device, a set of array response vectors based on the set of parameters for array response generation, the array response vectors including an array response vector for each of the azimuth angle/elevation angle pairs; and determine, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein there is at least some overlap of array response vectors between adjacent long-term codebook matrices of the set of long-term codebook matrices. [0055] According to an example im lementation of the apparatus, the position information may include position information indicating relative positions of a plurality of antenna elements of a non-separable antenna array of an access point.

[0056] According to an example implementation of the apparatus, the apparatus may be further configured to: receive, by the user device from the access point, a signal in which the access point has performed precoding on the signal before transmission based at least on a selected long-term codebook matrix.

[0057] According to an example implementation of the apparatus, the apparatus may be further configured to: measure, by the user device, a channel between the access point and the user device; select, by the user device based on the measured channel, a selected long-term codebook matrix of the set of long-term codebook matrices; send, by the user device to the access point, an indication of the selected long-term codebook matrix; and receive a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix.

[0058] According to an example implementation of the apparatus, the apparatus may be further configured to: measure, by the user device, a channel between the access point and the user device; and select, by the user device based on the measured channel, a selected long-term codebook matrix of the set of long-term codebook matrices, wherein the being configured to select includes being configured to: select a rank indication; select a precoding matrix indicator that identifies the selected long-term codebook matrix within the set of long-term codebook matrices; select a precoding matrix indicator that identifies a selected short-term codebook matrix within the set of short-term codebook matrices; and wherein the selected long-term codebook matrix post multiplied by the selected short-term codebook matrix defines a precoding on the signal before

transmission.

[0059] According to an example implementation of the apparatus, the being configured to receive, by a user device, a set of parameters for array response generation may include: the user device being configured with the set of parameters for array response generation.

[0060] According to an example implementation of the apparatus, the being configured to determine a set of long-term codebook matrices may include being configured to: determine, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein at least some of the array response vectors are the same or in common for at least some adjacent long-term codebook matrices within the set of long-term codebook matrices.

[0061] According to an example implementation of the apparatus, the apparatus may be further configured to: select, by the user device based on the measured channel, a selected short-term codebook matrix of the set of short-term codebook matrices; send, by the user device to the access point, an indication of the selected short-term codebook matrix; receive a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix and the selected short-term codebook matrix; and perform, by the user device, demodulation on the received signal.

[0062] According to another example implementation, a computer program product includes a computer-readable storage medium and storing executable code that, when executed by at least one data processing apparatus, is configured to cause the at least one data processing apparatus to perform a method including: receiving, by a user device, a set of parameters for array response generation including: position information indicating relative positions of a plurality of antenna elements of an antenna array of an access point; and a set of azimuth angle/elevation angle pairs over which the set of long- term codebook matrices should be defined; determining, by the user device, a set of array response vectors based on the set of parameters for array response generation, the array response vectors including an array response vector for each of the azimuth

angle/elevation angle pairs; and determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein there is at least some overlap of array response vectors between adjacent long-term codebook matrices of the set of long-term codebook matrices.

[0063] According to an example implementation, an apparatus may be provided for determining a set of long-term codebook matrices for an antenna array (e.g., a separable antenna array, or a non-separable antenna array) of an access point. The apparatus may include means (e.g., 702A/702B and/or 704, FIG. 7) for receiving, by a user device, a set of parameters for array response generation including: position information indicating relative positions of a plurality of antenna elements of an antenna array of an access point; and a set of azimuth angle/elevation angle pairs over which the set of long-term codebook matrices should be defined; means (e.g., 702A/702B and/or 704, FIG. 7) for determining, by the user device, a set of array response vectors based on the set of parameters for array response generation, the array response vectors including an array response vector for each of the azimuth angle/elevation angle pairs; and, means (e.g., 702A/702B and/or 704, FIG. 7) for determining, by the user device, a set of long- term codebook matrices based on the set of array response vectors, wherein there is at least some overlap of array response vectors between adjacent long-term codebook matrices of the set of long-term codebook matrices.

[0064] According to an example implementation of the apparatus, the position information may include position information indicating relative positions of a plurality of antenna elements of a non-separable antenna array of an access point.

[0065] According to an example implementation of the apparatus, the apparatus may further include means (e.g., 702A/702B and/or 704, FIG. 7) for receiving, by the user device from the access point, a signal in which the access point has performed precoding on the signal before transmission based at least on a selected long-term codebook matrix.

[0066] According to an example implementation of the apparatus, the apparatus may further include means (e.g., 702A/702B and/or 704, FIG. 7) for measuring, by the user device, a channel between the access point and the user device; means (e.g.,

702A/702B and/or 704, FIG. 7) for selecting, by the user device based on the measured channel, a selected long-term codebook matrix of the set of long-term codebook matrices; means (e.g., 702A/702B and/or 704, FIG. 7) for sending, by the user device to the access point, an indication of the selected long-term codebook matrix; means (e.g., 702A/702B and/or 704, FIG. 7) for receiving a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix. The apparatus may also include means (e.g., 702A/702B and/or 704, FIG. 7) for performing, by the user device, postcoding on the received signals based at least on the selected long-term codebook matrix. According to an example implementation, the means for sending, by the user device to the access point, an indication of the selected long-term codebook matrix may include: means (e.g., 702A/702B and/or 704, FIG. 7) for sending, by the user device to the access point, a rank indication that is associated with the set of long-term codebook matrices and a precoding matrix indicator that identifies the selected long-term codebook matrix within the set of long-term codebook matrices.

[0067] According to an example implementation of the apparatus, the means for receiving, by a user device, a set of parameters for array response generation may include: means (e.g., 702A/702B and/or 704, FIG. 7) for receiving, by the user device from the access point, a set of parameters for array response generation.

[0068] According to an example implementation of the apparatus, the means for receiving, by a user device, a set of parameters for array response generation may include: the user device being configured with the set of parameters for array response generation.

[0069] According to an example implementation of the apparatus, the means for determining a set of long-term codebook matrices may include: means (e.g., 702A/702B and/or 704, FIG. 7) for determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein at least some of the array response vectors are the same or in common for at least some adjacent long-term codebook matrices within the set of long-term codebook matrices.

[0070] According to an example implementation of the apparatus, the apparatus may further include means (e.g., 702A/702B and/or 704, FIG. 7) for determining, by the user device, a set of short-term codebook matrices.

[0071] According to an example implementation of the apparatus, the apparatus may further include: means (e.g., 702A/702B and/or 704, FIG. 7) for determining, by the user device, a set of short-term codebook matrices; selecting, by the user device based on the measured channel, a selected short-term codebook matrix of the set of short-term codebook matrices; means (e.g., 702A/702B and/or 704, FIG. 7) for sending, by the user device to the access point, an indication of the selected short-term codebook matrix; receiving a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix and the selected short-term codebook matrix; and means (e.g.,

702A/702B and/or 704, FIG. 7) for performing, by the user device, post-processing including demodulation on the received signals based at least on the selected long-term codebook matrix. [0072] According to an example implementation of the apparatus, the apparatus may further include: means (e.g., 702A/702B and/or 704, FIG. 7) for measuring, by the user device, a channel between the access point and the user device; and means (e.g., 702A/702B and/or 704, FIG. 7) for selecting, by the user device based on the measured channel, a selected long-term codebook matrix of the set of long-term codebook matrices, wherein the means for selecting includes: means (e.g., 702A/702B and/or 704, FIG. 7) for selecting a rank indication; means (e.g., 702A/702B and/or 704, FIG. 7) for selecting a precoding matrix indicator that identifies the selected long-term codebook matrix within the set of long-term codebook matrices; means (e.g., 702A/702B and/or 704, FIG. 7) for selecting a precoding matrix indicator that identifies a selected short-term codebook matrix within the set of short-term codebook matrices; and wherein the selected long-term codebook matrix multiplied by the selected short-term codebook matrix defines a precoding on the signal before transmission.

[0073] According to an example implementation of the apparatus, the means for sending, by the user device to the access point, an indication of the selected long-term codebook matrix may include: means (e.g., 702A/702B and/or 704, FIG. 7) for sending, by the user device to the access point, a rank indication; means (e.g., 702A/702B and/or 704, FIG. 7) for sending, by the user device to the access point a precoding matrix indicator that identifies the selected long-term codebook matrix within the set of long- term codebook matrices; and means (e.g., 702A/702B and/or 704, FIG. 7) for sending, by the user device to the access point, a precoding matrix indicator that identifies a selected short-term codebook matrix within a set of short-term codebook matrices; and wherein the selected long-term codebook matrix post multiplied by the selected short- term codebook matrix defines a precoding on the signal before transmission.

[0074] According to an example implementation of the apparatus, the means for receiving, by a user device, a set of parameters for array response generation may include: means (e.g., 702A/702B and/or 704, FIG. 7) for receiving, by the user device from the access point, a set of parameters for array response generation.

[0075] According to an example implementation of the apparatus, the means for receiving, by a user device, a set of parameters for array response generation may include the user device configured with the set of parameters for array response generation.

[0076] According to an example implementation of the apparatus, wherein the means for determining a set of long-term codebook matrices may include: means (e.g., 702A/702B and/or 704, FIG. 7) for determining, by the user device, a set of long-term codebook matrices based on the set of array response vectors, wherein at least some of the array response vectors are the same or in common for at least some adjacent long- term codebook matrices within the set of long-term codebook matrices.

[0077] According to an example implementation of the apparatus, the apparatus further including: means (e.g., 702A/702B and/or 704, FIG. 7) for determining, by the user device, a set of short-term codebook matrices.

[0078] According to an example implementation of the apparatus, the apparatus further including: means (e.g., 702A/702B and/or 704, FIG. 7) for determining, by the user device, a set of short-term codebook matrices; means (e.g., 702A/702B and/or 704, FIG. 7) for selecting, by the user device based on the measured channel, a selected short- term codebook matrix of the set of short-term codebook matrices; means (e.g.,

702A/702B and/or 704, FIG. 7) for sending, by the user device to the access point, an indication of the selected short-term codebook matrix; means (e.g., 702A/702B and/or 704, FIG. 7) for receiving a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix and the selected short-term codebook matrix; and means (e.g., 702A/702B and/or 704, FIG. 7) for performing, by the user device, post-processing and demodulation on the received signal.

[0079] According to an example implementation of the apparatus, the apparatus may further include: means (e.g., 702A/702B and/or 704, FIG. 7) for selecting, by the user device based on the measured channel, a selected short-term codebook matrix of the set of short-term codebook matrices; sending, by the user device to the access point, an indication of the selected short-term codebook matrix; means (e.g., 702A/702B and/or 704, FIG. 7) for receiving a signal from the access point in which the access point has performed precoding on the signal before transmission based at least on the selected long-term codebook matrix and the selected short-term codebook matrix; and means (e.g., 702A/702B and/or 704, FIG. 7) for performing, by the user device, demodulation on the received signal.

[0080] According to an example implementation, a set of parameters for array response generation is provided to a user device. The set of parameters may include, for example: position information indicating relative positions of a plurality of antenna elements (and/or transceiver units) of a non-separable antenna array of an access point, and a set of azimuth angle/elevation angle pairs over which the set of long-term codebook matrices should be defined. The user device may then determine a set of array response vectors based on the set of parameters for array response generation. For example, the array response vectors may include an array response vector for each of the azimuth angle/elevation angle pairs. The user device may then determine a set of long-term codebook matrices based on the set of array response vectors. In an example

implementation, there may be at least some overlap of array response vectors (or some common array response vectors) between adjacent long-term codebook matrices of the set of long-term codebook matrices.

[0081] An illustrative example LTE codebook (may provide a variety of features, such as: a) a product structure Wl *W2, where Wl is the long-term codebook (or a selected Wl codebook matrix) and W2 is the short term codebook matrix (or a selected W2 codebook matrix), with overlapping design for frequency-selectivity where Wl is long-term and W2 is short-term; b) a kronecker structure for the polarization dimension; and, c) a DFT (discrete Fourier transform) based grid-of-beam structure. In order to extend it to the elevation dimension and for optimizing for generic 2D (2

dimensional)/3D (3 dimensional) arrays a) and b) can be retained - this would ensure minimum change to the specifications and to the UE implementations. In addition, improvements may include extending the codebook from ID to 3D antenna arrays and also to the elevation dimension.

[0082] Therefore, according to various example implementations, one or more features may be provided, including (by way of example): A) Parameters are provided to a user device for a codebook used for azimuth and elevation adaptation (e.g., rank-1 and higher ranks) that may include precoding vectors that are non-separable in azimuth and elevation dimensions. The example parameters provided to a user device may include position information indicating relative positions of a plurality of antenna elements (and/or transceiver units) of a non-separable antenna array (e.g., of a non-separable antenna array of an access point), and a set of azimuth angle/elevation angle pairs over which the set of long-term codebook matrices should be defined. The parameters may include 3D locations of the transceiver units (TXRUs) and/or antenna elements. The parameters may be configured/preconfigured on a user device, or received by a user device from an access point/base station, for example (e.g., the parameters may be sent/transmitted by an access point to the user device). B) Also, a method may be provided for reusing the framework for separable arrays to also provide CSI (channel state information, which may include Rank Indication (RI) and one or more precoding matrix indicator (PMI) and/or one or more channel quality indicators (CQIs)) feedback for non-separable arrays and an indication of switching between separable CSI feedback and non-separable CSI feedback (note that non-separable CSI feedback can also be used for separable arrays). Furthermore, in a further example implementation, the feedback may include an index of the azimuth angle in place of an azimuth PMI and an index of the elevation angle in place of an elevation PMI, for example.

[0083] FIG. 6 is a diagram illustrating an example definition of x, y, z axes, origin, azimuth and elevation angles, and a wave vector according to an illustrative example implementation. An array response vector corresponding to a set of arbitrary N- 1 antenna elements assuming far field propagation and narrow-band assumption can be written as:

[0084] g 0 (e, <p)e-V- r °

α(0, φ) = (θ, φ)ε-ί β ^

[0085] where the vector a(9,cp) is the array response vector corresponding to an incident wave at azimuth angle Θ and elevation angle φ corresponding to the x, y and z axes. The complex scalar values g o (0,(p), gi(9,cp), .. . , gN-i(0,(p) are the gains and phases of the antenna elements 0, 1, ..., N. The vector β is the wave vector given by the vector β = (27i )*[sin Θ cos φ, sin Θ sin φ, cos Θ]. The position vector r; corresponding to the antenna element i is given by [x;, y;, and considering the antenna element 0 as the origin, we can write the array response vector as:

Eqn. 1 - Array Response Vector Equation

[0086] Therefore the array response vector a(9,cp) becomes a function of the 3D positions (x, y and z positions) of the antenna elements expressed as a fraction of the wavelength λ and with respect to an arbitrary antenna element chosen as the origin. The origin or reference point may be the first antenna element, e.g., for antenna element 0, or may a center point in an antenna array, or other reference point from which x, y and z positions may be measured for each of the antenna elements, for example. Thus, for example, the 3D location may be measured with respect to this reference point or origin, for example.

[0087] Example Implementation- 1 : (codebook resolution and array type assumption is customizable by the AP/BS):

[0088] A) Transmission from an AP to a user device of parameters for array response vector generation, including the following parameters: a) positions of the antenna elements as a fraction of λ and with respect to antenna element 0 (or with respect to other reference point) - specifically (χι-χ 0 )/λ, (χ 2 0 )/λ, .. . , (χΝ-ΐ-χο)/λ. And, b) A sampling of the azimuth and elevation angles (or a set of azimuth angle/elevation angle pairs, e.g., which may define a range of angles over which the Wl codebook should be defined, for example), including an azimuth angle Θ and an elevation angle φ for each pair of angles in the set of angles/samples. For example, the set of azimuth

angle/elevation angle pairs may include, by way of example: (θ 0 , φ 0 ), (θι, (pi), ..., (Θ Ι , cpNb-ι)· Note that the positions of the antenna elements may, for example, assume that each antenna element is driven by a TXRU (transceiver unit). In case antenna elements are aggregated to TXRUs (transceiver units) then effective antenna element positions are denoted by (x 0 ,y 0 ,z 0 ), (xi,yi,zi), (x N-1 ,y N-1 ,z N-1 ).

[0089] B) A user device may generate a set of M array response vectors denoted by a(9o, (po), a(9i, (pi), ..., a(0M-i, (pM-i) following the array response vector equation (Eqn. 1) provided above.

[0090] C) An alternative to steps A) and B) is to transmit (e.g., for an AP/BS to transmit) a set of M array response vectors to the user device directly.

[0091] D) The user device generates a set of Wl (long-term codebook) matrices, where each Wl matrix (of the set of Wl matrices) may be of the form where X is of size (N/2 x Nb). X is designed by grouping overlapping array response vectors for e.g. X(l)=[ a(9 0 , (po) a(9i, (pi) a(9 2 , φ 2 ), a(9 3 , φ 3 )], X(2)=[ a(9 2 , φ 2 ) a(9 3 , φ 3 ) a(9 4 , φ 4 ), a(9 5 , φ 5 )], . .. , X(K)=[ a(0 M -2, ΦΜ- 2 ) a(9 M -i, ( pM-i) a(9 0 , φ 0 ), a(9i, φι)]. Thus, X may have K elements. Each X includes a group of array response vectors. Note that adjacent X values including overlapping (or at least some common) array response vectors a( ). For example, X(l) and X(2) both include (common or overlapping) array response vectors: a(9 2 , φ 2 ), a(9 3 , φ 3 ). According to an example implementation, the Wl (long-term

ΓΥ(1) 0

codebook) matrices may be generated from X simply as: Wl(l)=

0 (l)

X(2) 0

Wl(2)= W1(K)= i^*^ y !L I . Thus, at least adjacent matrices of

0 X(2)

the set of Wl (long-term codebook) matrices include some array response vectors (a( )) that overlap or are in common, based on the overlap of array response vectors for adjacent Xs. As noted above, X(l)=[ a(9o, (po) a(9i, (pi) a(9 2 , φ 2 ), a(9 3 , φ 3 )], X(2)=[ a(9 2 , φ 2 ) a(9 3 , φ 3 ) a(9 4 , φ 4 ), a(9 5 , φ 5 )], X(K)=[ a(9 M - 2 , ΦΜ- 2 ) a(9 M -i, cpM-i) a(9 0 , φ 0 ), a(9 b φι)] . For example, Wl(l) and Wl(2) may include overlapping array response vectors, e.g., W(l) and W(2) both include (common or overlapping) array response vectors: a(9 2 , φ 2 ), a(9 3 , φ 3 ), e.g., based on the equation for X.

[0092] The ability to incorporate Nb array response vectors within a single X matrix allows the array response to vary within a certain small range due to frequency selectivity - this is because a single Wl matrix is considered to be valid for the entire wideband. The usage of overlapping array response vectors for the different choices of Wl matrices ensures that there is no abrupt transition from one Wl matrix to the next.

[0093] E) For each rank, the user device may be configured with a different set of M array response vectors, for example, Mi array is configured to generate codebook when rank=l and M 2 array is configured to generate codebook when rank=2.

[0094] F) A user device may also generate a W2 (short-term) codebook, as a set of W2 matrices. For example, the W2 matrices may include selection and co-phasing entries are pre-determined at the user device. For example, the W2 matrices may be selected based on number of antenna elements and predetermined rules based on size(s) of Wl matrices, so that W2 can be multiplied by Wl to obtain overall precoding by the AP. A precoder according to these steps is of the form Wl *W2.

[0095] Illustrative Example 1): Assume N = 16 Tx antennas (TXRUs/transceiver units) arranged in 2 rows and 4 cols, M = 512 (32 samples of azimuth Θ and 16 samples of elevation φ which is 8x oversampling in both azimuth and elevation dimensions). With a total of 512 beams and assuming Nb=4 and an overlap of 2 beams with adjacent X matrices leads to K=M/(Nb-2)=256. Therefore, in this example, the size of Wl codebook = 8 bits. The existing LTE Release- 10 W2 codebook of size 4 bits can be reused.

Therefore the total codebook size for 16 Tx comes out to be 8 (Wl) + 4 (W2) = 12 bits. Note that an AP may also customize the codebook on a per user device basis by sampling the elevation and azimuth non-uniformly depending on the radio channel to the user device.

[0096] Example Implementation-2: (codebook resolution and array type assumption is not customizable, and certain aspects or parameters may be specified by a standard or specification): In Example Implementation- 1 , the AP may transmit to the user device the parameters for array response vector generation, such as the position information indicating relative position of a plurality of antenna elements (and/or positions or TXRUs), e.g., for a non-separable antenna array, and a set of azimuth angle/elevation angle sets over which a codebook(s) should be determined or defined, e.g., for Wl (long-term) codebook, and/or for W2 (short-term) codebook. In contrast, in Example Implementation-2, the parameters (e.g., position information and sets of angle pairs for array response generation) may be preconfigured into a user device, e.g., based on a standard or specification. Based on these configured or known parameters, the user device may then perform the various operations described above for proposal- 1, such as, for example: generate a set of M array response vectors a( ) as performed in operation B) above in Example Implementation- 1; the user device may generate or determine a set of Wl (long-term codebook) matrices as done in operation D) above. Operation E) and F may similarly be repeated here in this proposal-2 by the user device.

[0097] Example Implementation-3 : In order to support separable 2D arrays, a kronecker style precoder (horizontal® vertical) can be accommodated in the feedback framework using two separate long-term precoding indices - one for horizontal precoder and one for vertical precoder. In the case of non-separable arrays, there is only one precoder that corresponds to a set of angles (θ, φ) - so a long-term PMI can be replaced by two long-term indices - the index of the azimuth angle (in place of the azimuth PMI) and the index of the elevation angle (in place of the elevation PMI) for non-separable arrays. Note that the CSI feedback technique for non-separable arrays can also be applied for separable arrays. Thus, according to an example implementation, the implementation may use two PMIs - a long-term PMI corresponding to Wl and a short-term PMI corresponding to W2. The long-term PMI for Wl can be further split into two indices - an index for the azimuth angle and an index for the elevation angle.

[0098] FIG. 7 is a block diagram of a wireless station (e.g., AP or user device) 700 according to an example implementation. The wireless station 700 may include, for example, one or two RF (radio frequency) or wireless transceivers 702A, 702B, where each wireless transceiver includes a transmitter to transmit signals and a receiver to receive signals. The wireless station also includes a processor or control unit/entity (controller) 704 to execute instructions or software and control transmission and receptions of signals, and a memory 706 to store data and/or instructions.

[0099] Processor 704 may also make decisions or determinations, generate frames, packets or messages for transmission, decode received frames or messages for further processing, and other tasks or functions described herein. Processor 704, which may be a baseband processor, for example, may generate messages, packets, frames or other signals for transmission via wireless transceiver 702 (702A or 702B). Processor 704 may control transmission of signals or messages over a wireless network, and may control the reception of signals or messages, etc., via a wireless network (e.g., after being down-converted by wireless transceiver 702, for example). Processor 704 may be programmable and capable of executing software or other instructions stored in memory or on other computer media to perform the various tasks and functions described above, such as one or more of the tasks or methods described above. Processor 704 may be (or may include), for example, hardware, programmable logic, a programmable processor that executes software or firmware, and/or any combination of these. Using other terminology, processor 704 and transceiver 702 together may be considered as a wireless transmitter/receiver system, for example.

[00100] In addition, referring to FIG. 7, a controller (or processor) 708 may execute software and instructions, and may provide overall control for the station 700, and may provide control for other systems not shown in FIG. 7, such as controlling input/output devices (e.g., display, keypad), and/or may execute software for one or more applications that may be provided on wireless station 700, such as, for example, an email program, audio/video applications, a word processor, a Voice over IP application, or other application or software.

[00101 ] In addition, a storage medium may be provided that includes stored instructions, which when executed by a controller or processor may result in the processor 704, or other controller or processor, performing one or more of the functions or tasks described above.

[00102] According to another example implementation, RF or wireless

transceiver(s) 702A/702B may receive signals or data and/or transmit or send signals or data. Processor 704 (and possibly transceivers 702A/702B) may control the RF or wireless transceiver 702A or 702B to receive, send, broadcast or transmit signals or data.

[00103] The embodiments are not, however, restricted to the system that is given as an example, but a person skilled in the art may apply the solution to other

communication systems. Another example of a suitable communications system is the 5G concept. It is assumed that network architecture in 5G will be quite similar to that of the LTE-advanced. 5G is likely to use multiple input - multiple output (MIMO) antennas, many more base stations or nodes than the LTE (a so-called small cell concept), including macro sites operating in co-operation with smaller stations and perhaps also employing a variety of radio technologies for better coverage and enhanced data rates.

[00104] It should be appreciated that future networks will most probably utilise network functions virtualization (NFV) which is a network architecture concept that proposes virtualizing network node functions into "building blocks" or entities that may be operationally connected or linked together to provide services. A virtualized network function (VNF) may comprise one or more virtual machines running computer program codes using standard or general type servers instead of customized hardware. Cloud computing or data storage may also be utilized. In radio communications this may mean node operations may be carried out, at least partly, in a server, host or node operationally coupled to a remote radio head. It is also possible that node operations will be distributed among a plurality of servers, nodes or hosts. It should also be understood that the distribution of labour between core network operations and base station operations may differ from that of the LTE or even be non-existent.

[00105] Implementations of the various techniques described herein may be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. Implementations may implemented as a computer program product, i.e., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by, or to control the operation of, a data processing apparatus, e.g., a programmable processor, a computer, or multiple computers. Implementations may also be provided on a computer readable medium or computer readable storage medium, which may be a non-transitory medium. Implementations of the various techniques may also include implementations provided via transitory signals or media, and/or programs and/or software

implementations that are downloadable via the Internet or other network(s), either wired networks and/or wireless networks. In addition, implementations may be provided via machine type communications (MTC), and also via an Internet of Things (IOT).

[00106] The computer program may be in source code form, object code form, or in some intermediate form, and it may be stored in some sort of carrier, distribution medium, or computer readable medium, which may be any entity or device capable of carrying the program. Such carriers include a record medium, computer memory, readonly memory, photoelectrical and/or electrical carrier signal, telecommunications signal, and software distribution package, for example. Depending on the processing power needed, the computer program may be executed in a single electronic digital computer or it may be distributed amongst a number of computers.

[00107] Furthermore, implementations of the various techniques described herein may use a cyber-physical system (CPS) (a system of collaborating computational elements controlling physical entities). CPS may enable the implementation and exploitation of massive amounts of interconnected ICT devices (sensors, actuators, processors microcontrollers,...) embedded in physical objects at different locations.

Mobile cyber physical systems, in which the physical system in question has inherent mobility, are a subcategory of cyber-physical systems. Examples of mobile physical systems include mobile robotics and electronics transported by humans or animals. The rise in popularity of smartphones has increased interest in the area of mobile cyber- physical systems. Therefore, various implementations of techniques described herein may be provided via one or more of these technologies.

[00108] A computer program, such as the computer program(s) described above, can be written in any form of programming language, including compiled or interpreted languages, and can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit or part of it suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.

[00109] Method steps may be performed by one or more programmable processors executing a computer program or computer program portions to perform functions by operating on input data and generating output. Method steps also may be performed by, and an apparatus may be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).

[00110] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer, chip or chipset. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. Elements of a computer may include at least one processor for executing instructions and one or more memory devices for storing instructions and data.

Generally, a computer also may include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of non- volatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, special purpose logic circuitry.

[00111] To provide for interaction with a user, implementations may be implemented on a computer having a display device, e.g., a cathode ray tube (CRT) or liquid crystal display (LCD) monitor, for displaying information to the user and a user interface, such as a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.

[00112] Implementations may be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation, or any combination of such back-end, middleware, or front-end components. Components may be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), e.g., the Internet.

[00113] While certain features of the described implementations have been illustrated as described herein, many modifications, substitutions, changes and equivalents will now occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the various embodiments.