omphybweights

Compute hybrid beamforming weights using orthogonal matching pursuit

Description

[wpbb,wprf] = omphybweights(chanmat,ns,ntrf,at) returns the hybrid precoding weights wpbb and wprf for the channel matrix chanmat. The weights are computed using an orthogonal matching pursuit algorithm. ns is the number of independent data streams propagated through the channel. ntrf specifies the number of RF chains in the transmit array. at is a collection of possible analog weights for wprf. Together, the precoding weights approximate the optimal full digital precoding weights of chanmat.

example

[wpbb,wprf,wcbb,wcrf] = omphybweights(chanmat,ns,ntrf,at,nrrf,ar) also returns the hybrid combining weights wcbb and wcrf. The input nrrf specifies the number of RF chains in the receive array. ar is a collection of possible analog weights for wcrf.

[___] = omphybweights(chanmat,ns,ntrf,at,nrrf,ar,npow) also specifies the noise power npow in each receive antenna element. All subcarriers are assumed to have the same noise power.

Examples

collapse all

Assume a 8-by-4 MIMO system with four RF chains in a transmit array and two RF chains in a receive array. Show that the hybrid weights can support transmitting two data streams simultaneously.

Specify the positions of the transmitters and receivers in uniform line arrays.

txpos = (0:7)*0.5;
rxpos = (0:3)*0.5;

Construct the channel matrix.

chanmat = scatteringchanmtx(txpos,rxpos,10);

Specify the number of transmit and receive RF chains.

ntrf = 4;
nrrf = 2;

Specify two data streams.

ns = 2;

Set up the steering vector dictionaries for the transmitting and receiving arrays.

txdict = steervec(txpos,-90:90);
rxdict = steervec(rxpos,-90:90);

Compute the precoding and combining weights.

[Fbb,Frf,Wbb,Wrf] = omphybweights(chanmat,ns,ntrf,txdict,nrrf,rxdict);

Calculate the effective channel matrix from the weights. A diagonal effective channel matrix indicates the capability of simultaneous transmission of multiple data streams.

chan_eff = Fbb*Frf*chanmat*Wrf*Wbb
chan_eff = 2×2 complex

   1.0000 - 0.0000i  -0.0000 - 0.0000i
   0.0000 - 0.0000i   1.0000 - 0.0000i

Input Arguments

collapse all

Channel response matrix, specified as an Nt-by-Nr matrix or a complex-valued L-by-Nt-by-Nr array where

  • Nt is the number of elements in the transmitting array.

  • Nr is the number of elements in the receiving array.

  • L is the number of subcarriers.

Data Types: double
Complex Number Support: Yes

Number of independent data streams propagated through the channel, specified as a positive integer.

Data Types: double

Number of RF chains in the transmit array, specified as a positive integer.

Data Types: double

Collection of possible analog weights for wprf, specified as a complex-valued matrix or array.

  • When chanmat is an Nt-by-Nr matrix, at is a complex-valued Nt-by-P matrix. Each column represents a vector of analog weights.

  • When chanmat is an L-by-Nt-by-Nr array, at is a complex-valued Nt-by-P-by-L array. Each page is an Nt-by-P matrix. Each column represents a vector of analog weights.

  • Nt is the number of elements in the transmitting array.

  • Nr is the number of elements in the receiving array.

  • L is the number of subcarriers.

  • P is the number of vectors of analog weights in the collection.

Data Types: double
Complex Number Support: Yes

Number of RF chains in the receive array, specified as a positive integer.

Data Types: double

Collection of possible analog weights for wprf, specified as a complex-valued matrix or array.

  • When chanmat is an Nt-by-Nr matrix, ar is a complex-valued Nr-by-Q matrix. Each column represents a vector of analog weights.

  • When chanmat is an L-by-Nt-by-Nr array, ar is a complex-valued Nr-by-Q-by-L array. Each page is an Nr-by-Q matrix. Each column represents a vector of analog weights.

  • Nt is the number of elements in the transmitting array.

  • Nr is the number of elements in the receiving array.

  • L is the number of subcarriers.

  • Q is the number of vectors of analog weights in the collection.

Data Types: double
Complex Number Support: Yes

Noise power in each receive antenna element, specified as a nonnegative scalar. All subcarriers have the same noise power.

Data Types: double

Output Arguments

collapse all

Hybrid baseband precoding weights, returned as a complex-valued matrix or array.

  • When chanmat is an Nt-by-Nr matrix, wpbb is a complex-valued Ns-by-Ntrf matrix.

  • When chanmat is an L-by-Nt-by-Nr array, wpbb is a complex-valued L-by-Ns-by-Ntrf array.

  • Ns is the number of independent data streams specified by the ns argument.

  • Ntrf is the number of RF chains in the transmit array specified by the ntrf argument.

  • L is the number of subcarriers.

Hybrid RF precoding weights, returned as a complex-valued matrix or array.

  • When chanmat is an Nt-by-Nr matrix, wprf is a complex-valued Ntrf-by-Nt matrix.

  • When chanmat is an L-by-Nt-by-Nr array, wprf is a complex-valued L-by-Ntrf-by-Nt array.

  • Nt is the number of elements in the transmitting array.

  • Ntrf is the number of RF chains in the transmit array specified by the ntrf argument.

  • L is the number of subcarriers.

Hybrid baseband combining weights, returned as a complex-valued matrix or array.

  • When chanmat is an Nt-by-Nr matrix, wcbb is a complex-valued Nrrf-by-Ns matrix.

  • When chanmat is an L-by-Nt-by-Nr array, wcbb is a complex-valued L-by-Nrrf-by-Ns array.

  • Ns is the number of independent data streams specified by the ns argument.

  • Nrrf is the number of RF chains in the receive array specified by the nrrf argument.

  • L is the number of subcarriers.

Hybrid RF combining weights, returned as a complex-valued matrix or array.

  • When chanmat is an Nt-by-Nr matrix, wcrf is a complex-valued Nr-by-Nrrf matrix.

  • When chanmat is an L-by-Nt-by-Nr array, wcrf is a complex-valued L-by-Nr-by-Nrrf array.

  • Nt is the number of elements in the transmitting array.

  • Nrrf is the number of RF chains in the receive array specified by the nrrf argument.

  • L is the number of subcarriers.

More About

collapse all

Precoding Weights

The matrix product of the precoding weights wpbb x wprf approximates the optimal full digital precoding weights of the channel matrix chanmat.

Combining Weights

The combining weights wcbb and wcrf, together with the precoding weights, diagonalize the channel into independent subchannels. The matrix product wpbb x wprf x chanmat x wcrfx wcbb is approximately diagonal.

References

[1] Ayach, Omar El et al. "Spatially Sparse Precoding in Millimeter Wave MIMO Systems" IEEE Trans on Wireless Communications. Vol. 13, No. 3, March 2014.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using MATLAB® Coder™.

Introduced in R2019b