Reply by April 23, 20082008-04-23
u98120 wrote:
> Hi, > > I am trying to implement broadcast MIMO channels. > In that i am using zeroforcing precoding which is calculated as: > > W = H' * inv(H'*H); > > where H is the channel matrix. > > To my understanding, H * W should then be I (identity Matrix). > > the problem that i am facing is whenever i run the above equation in > matlab, i get the following warning message. > > Warning: Matrix is close to singular or badly scaled. > Results may be inaccurate. RCOND = 1.048966e-017. > > As a result, I dont get identity Matrix when i do H*W. > > this has something to do with the inverse that i am taking. How can I fix > this problem? > > please help ... thanks in advance > >
The problem is the matrix H'*H is not "well conditioned" which means it is numerically difficult. http://en.wikipedia.org/wiki/Condition_number I am not too familiar with MIMO so I can't help with specifics. There are ways to try and deal with ill conditioned problems by making assumptions that make sense for your application. For example if you look at the SVD and there is only singular value that is giving you grief than you may be able to ignore that subspace. But be careful to justify this. Also, you may have made a mistake in the formula, since H*H'*inv(H'*H) doesn't equal the identity for an H. Unless this is justified you probably want H'*inv(H*H') or H*inv(H'*H). Good luck, J. Elms
Reply by u98120 April 23, 20082008-04-23
Hi,

I am trying to implement broadcast MIMO channels. 
In that i am using zeroforcing precoding which is calculated as:

W = H' * inv(H'*H);

where H is the channel matrix.

To my understanding, H * W should then be I (identity Matrix).

the problem that i am facing is whenever i run the above equation in
matlab, i get the following warning message.

Warning: Matrix is close to singular or badly scaled.
         Results may be inaccurate. RCOND = 1.048966e-017.

As a result, I dont get identity Matrix when i do H*W.

this has something to do with the inverse that i am taking. How can I fix
this problem?

please help ... thanks in advance