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.
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)
```
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP