> 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