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}^T\mathbf{H})^{-1}\mathbf{H}^T$.

I can understand that the second approach certainly cancels the interference as $(\mathbf{H}^T\mathbf{H})^{-1}$ exists if columns of $\mathbf{H}$ are independent, and obviously $(\mathbf{H}^T\mathbf{H})^{-1}\mathbf{H}^T\mathbf{H} = \mathbf{I}$ such that $(\mathbf{H}^T\mathbf{H})^{-1}\mathbf{H}^T\mathbf{y}=\mathbf{x} + (\mathbf{H}^T\mathbf{H})^{-1}\mathbf{H}^T\mathbf{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);

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


%zeero forcing filter

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


% transform the y into the null space of the 

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

[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'*h1)' is the match filter to the transformed y1

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


% normalization



%snr for stream 1



%snr1 - 1/nv(1,1)
  • $\begingroup$ There is a couple hundred slides, can you specify which slides you are talking about? $\endgroup$ – Engineer Feb 21 '20 at 1:57
  • $\begingroup$ The approach (1) is from page 154-155 of the slides. $\endgroup$ – Hao xue Feb 22 '20 at 1:13

It seems like you understand your question already but are unsure it is correct? Let the decorrelator be $\mathbf{D}=(\mathbf{H}^T\mathbf{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}_1\mathbf{H}=[1, 0, ..., 0]$.

  • $\begingroup$ Thanks for your answer. I understand D is able to cancel the interference. My question is how to relate these two approaches, e.g., how to prove the following fact, if I form a matrix by putting the single-stream decorrelators implemented in (1) together in a row-by-row manner, this matrix is actually the pseudo inverse of H, i.e., the D you mentioned? $\endgroup$ – Hao xue Feb 22 '20 at 1:25
  • $\begingroup$ There’s nothing to prove, it’s just matrix multiplication $\endgroup$ – Engineer Feb 22 '20 at 2:49
  • $\begingroup$ please let me rephrase, how can i prove, that the g_1=(Q_1'*h_1)'*Q_1' in my matlab script, after normalization, is the d_1 you mentioned? Note that Q_1 spans the null space of the subspace spanned by H1m' (H' w/o h_1') $\endgroup$ – Hao xue Feb 22 '20 at 3:11
  • $\begingroup$ Its the inverse because just taking it row-by-row. There is nothing to prove. Once you have $\mathbf{D}$, you can either do your approach #1 (each stream individually) or approach #2 (treat as a bank of filters) $\endgroup$ – Engineer Feb 22 '20 at 12:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.