TransWikia.com

how to understand the MIMO zero forcing as a bank of decorrelators?

Signal Processing Asked by Hao xue on October 24, 2021

I am studying the zero forcing as a simple linear receiver for MIMO detection. according to following notes:
http://www.ee.ic.ac.uk/bruno.clerckx/All.pdf.

The zero forcing can be understood as the following two ways.

  1. For a single stream $mathbf{q}$, we can project the received $mathbf{y}$ onto a subspace orthogonal to channel matrix $mathbf{H}$ without $mathbf{h}_q$, then apply the matched filter to the projected signal or,
  2. We can just work on all streams in one shot with the pseudo inverse of the channel matrix, i.e., $(mathbf{H}^Tmathbf{H})^{-1}mathbf{H}^T$.

I can understand that the second approach certainly cancels the interference as $(mathbf{H}^Tmathbf{H})^{-1}$ exists if columns of $mathbf{H}$ are independent, and obviously $(mathbf{H}^Tmathbf{H})^{-1}mathbf{H}^Tmathbf{H} = mathbf{I}$ such that $(mathbf{H}^Tmathbf{H})^{-1}mathbf{H}^Tmathbf{y}=mathbf{x} + (mathbf{H}^Tmathbf{H})^{-1}mathbf{H}^Tmathbf{n}$.

It seems to me that according to (2), a decorrelator for the $q^{th}$ stream is just the $q^{th}$ row of the pseudo-inverse of the matrix $mathbf{H}$.

My question is, can we prove, or conclude (2) from (1)?

The following is the MATLAB script implemented according to the methods described in the above-mentioned notes.

%zero forcing

randn('seed', 0);
m=2; n=2;

x = randn(n,1)+1j*randn(n,1);
nz=0;

H = randn(m,n)+1j*randn(m,n);

y=H*x+nz;

%zeero forcing filter

G0 = inv(H'*H)*H';
x0=G0*y;

%disp(x-x0);


% transform the y into the null space of the 

% subspace spanned by H1m (H w/o h1)

h1=H(:,1);
H1m=H(:,2:end);
[U, S, Vc]=svd(H1m);

% Q1 spans null space of the subspace spanned by H1m (H w/o h1)

% (actually it is null space of H1m')

% i.e., Q1'*y projects y into the null space of H1m

% y1 = Q1'*y = Q1'*h1*x1 + Q1'*n + zero (cancelled interference)

Q1=U(:,n:m);

% (Q1'*h1)' is the match filter to the transformed y1

% g1=h1'*(Q1*Q1'), note that Q1*Q1' is not orthogonal but Q1'*Q1=I

g1=(Q1'*h1)'*Q1';

% normalization

g1=g1/(norm(g1)^2);
x01=g1*y;

%x(1)-x01

%snr for stream 1

snr1=(norm(Q1'*h1))^2

nv=inv(H'*H);

%snr1 - 1/nv(1,1)
```

One Answer

It seems like you understand your question already but are unsure it is correct? Let the decorrelator be $mathbf{D}=(mathbf{H}^Tmathbf{H})^{-1}mathbf{H}^T$, then the symbols post-decorrelator are $mathbf{z}=mathbf{D}mathbf{y}=mathbf{D}(mathbf{Hx}+mathbf{n})$. The first stream, $z_1$, is computed by taking the first row of $mathbf{D}$, call the row vector $mathbf{d}_1$ (first row of $mathbf{D}$), and performing the operation: $z_1=mathbf{d}_1(mathbf{Hx}+mathbf{n})$. You get $z_1=x_1 + text{filtered noise}$ because $mathbf{d}_1mathbf{H}=[1, 0, ..., 0]$.

Answered by Engineer on October 24, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP