Precoding Matrix Indicator and Rank Indicator

Hi All,
Does someone has a very good explanation about Precoding Matrix Indicator and Rank Indicator?

And is the full rank mean?
High is good thing in Precoding Matrix Indicator and Rank Indicator?

You need to understand this picture:

Read the bottom of this page:

Thanks alot, it was very useful.

But I also have a question:
I am trying to make matrix index by matlab, and I have trouble in 2 x 2 index.
Does somebody can give me a hint how to do it?

2 x 2 means what?
2 enodeB antenna and 2 RX antenna of UE?
Or you want to transmit 2 layers to 2 RX antenna?
CSI-rs ports, how many you want to configure?
4, 8, 12, 16?
There cannot be more layers than the number of CSI-rs ports.
PMI matrix is PxL where P is number of ports and L is number of layers.

Each element of the matrix ij is the phase shifter (complex number) of signal of layer j transmitted by port i.

Great explanation @RFSpecialist. :+1:

This is the most important picture.
Once one understand it, MIMO and massive MIMO will be clear! :wink:

The whole concept of SDV and PMI is based on 3 matrixes:

  • precoding matrix at the transmitter,
  • air interface matrix, and
  • equalizer matrix at receiver

And this 3 matrixes concept are done only to have a diagonal air interface matrix, i.e. signals do not interfere each other at receiving antenna of UE.

So you see you can have 4 TX antenna at eNodeB, 4 RX antenna at UE (reception), but only 3 layers or 2 layers possible to transmit.

It all depends on what UE calculate and multipath ortoghonality of air interface.

Or even only 1 layer possible to transmit.

For a given air interface matrix (UE knows, measures it by measuring CSI_RS signals) UE calculate other 3 matrixes for SVD: precoding matrix at the transmitter, another air interface matrix (diagonal matrix) and equalizer matrix at receiver.

You can calculate those 3 matrixes for any interface matrix online here:

I could not find a link online to calculate it with complex numbers like a+ib.

What you need to understand is that the whole scope of work of this decomposition of air interface matrix in 3 matrixes SVD is to have a diagonal matrix on air interface, i.e. signals do not interfere each other from transmitter to receiver.

So signals coudl be received with zero interference one to each other
This is not always possibel this is why you get rank2 or even rank1 and not always rank4

Thanks to @Jaeku_Ryu(ShareTechNote) I have read and learned all those things.
Sharetechnote has so much info, we just need time to read and learn all what is written there.

It’s like 3D multidimensional array:


It is not 3D, it is 2D - all matrixes are 2D.

Sure, i was more referring to the multidimensional aspect. But you’re correct.:wink:

Now: When I do 2x2 for index 1, give error.

What I just understand from there is you have row, column and page.
The thing is that I want to assgin page as matrix index.
A (R,C,P).

But why are you dealing with multidimensional arrays (more than 2)?
You don’t need this for PMI.

Because I want to implement precoding matrix from standard.

Let me show you what I mean.


That’s the point:
PMI cannot have just any valued.
This is why is says codebook.
Because only limited values are possible.
3GPP has limited this.
This is why in the table you see just few options of PMI matrix for 2x2.


If I have PMI = 1.
I want to use matrix at this PMI.
Why in Matlab it is not possible?

But what would be the use of a matrix 1x1?