I have the channel estimation and noise power estimation and I need a matlab implementation of time domain siso channel Equalization.


Consider the FIR filter of length $N+1:$ $$ \hat{s}_{k}=\sum_{m=k-N}^{k} h_{k-m} y_{m}=\sum_{i=0}^{N} h_{i} y_{k-i} $$ We need to find the coefficients $\left(h_{i}\right)$ that minimize the MSE: $$ E\left(s_{k}-\hat{s}_{k}\right)^{2} \longrightarrow \min $$ To find $\left(h_{i}\right),$ we can differentiate the error. More conveniently, start with the orthogonality principle: $$ E\left[\left(s_{k}-\hat{s}_{k}\right) y_{k-j}\right]=0, \quad j=0,1, \ldots, N $$ This gives $$ \begin{array}{l} \sum_{i=0}^{N} h_{i} E\left[y_{k-i} y_{k-j}\right]=E\left(s_{i} y_{k-j}\right) \\ \sum_{i=0}^{N} h_{i} R_{y}(i-j)=R_{x y}(j) \end{array} $$ In matrix form: $$ \left[\begin{array}{cccc} R_{y}(0) & R_{y}(1) & \ldots & R_{y}(N) \\ R_{y}(1) & \ddots & \ddots & \ddots \\ \ddots & \ddots & \ddots & R_{y}(1) \\ R_{y}(N) & \ddots & R_{y}(1) & R_{y}(0) \end{array}\right]\left[\begin{array}{c} h_{0} \\ \vdots \\ \vdots \\ h_{X} \end{array}\right]=\left[\begin{array}{c} R_{x y}(0) \\ \vdots \\ \vdots \\ R_{x y}(N) \end{array}\right] $$ $$ R_{v} h=r_{x y} \quad \Rightarrow h=R_{y}^{-1} r_{s y} $$

How can I introduce the noise power estimation in my computations, and fine the delay of the wiener solution ?

Any help would be really appreciated

Here is my own matlab implementation

clear all;
depth = 50; % solution depth 
ntaps = 8; 
MQAM = 2;
N = 1e2;
s = randi([0 1],1, N);
h = [1 0.5*exp(1i*pi/6)  0.1*exp(-1i*pi/8)]';
smod = qammod(s,MQAM,'gray','InputType','bit');
r = awgn(filter(h, 1,smod),0, 'measured');
X=[zeros(1,delay) s(1:depth) zeros(1,ceil(ntaps/2)-1)].';
decision = filter( r(1:depth),1, coeff);
dem = qamdemod(decision,MQAM,'gray','OutputType','bit'); 
cmp = [dem(1:10)', s(1:10)']

Here cmp is the concatenation of the input signal and dem is the output of the MMSE Equalization :we can see that because of the delay, dem and s don't match !

  • $\begingroup$ What is blocking you, you know the formula? $\endgroup$ – Dsp guy sam May 1 at 14:47
  • $\begingroup$ Cmp in my code don't match $\endgroup$ – user47976 May 1 at 15:50
  • $\begingroup$ Looks familiar! Can you provide more details on your input and what isn’t matching? $\endgroup$ – Dan Boschen May 1 at 22:05
  • $\begingroup$ I've updated the post, cmp contains few values of the mmse Equalized signal and the input signal $\endgroup$ – user47976 May 1 at 22:34
  • $\begingroup$ I know it is the delay that I am not setting right ... I need to fine tune the delay but how? $\endgroup$ – user47976 May 3 at 0:13

Your Answer

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