# complex valued Equalizer - zero forcing criterion

Started by August 29, 2007
```Dear all,

For demonstrating the effect of a multipath channel on a wireless comm.
system, I am trying to implement an equalizer working according to
Zero-Forcing criterion.
However I think I have some vaque points in the theory so I would be most
happy if you can advice/correct me on the below issue.

What I planned to do was to find out the transfer function of my
multipath filter (I assume that I have a timeinvariant multipath channel)
and then take inverse of it. This would give me the transfer function
that
I have to implement as an equalizer.
So when I take the inverse Z transform of this I have the Equalizer
coefficients.
If these coefficients are complex, then I implement a complex filter
If these coefficients are real, then I implement a real filter

Untill I read the below statement, I thought that I understood the theory
but wikipedia at http://en.wikipedia.org/wiki/Z-transform
says that Z-transform accepts real numbers. If this is right then how can
I
find the coefficients of a ZERO FORCING criterion equalizer

Anyway I am confused right now. I would be happy if you can advice me in
the right path?

```
```
rifo wrote:

> For demonstrating the effect of a multipath channel on a wireless comm.
> system, I am trying to implement an equalizer working according to
> Zero-Forcing criterion.

Impossible.
A non-minimal phase system doesn't have an inverse.

DSP and Mixed Signal Design Consultant
http://www.abvolt.com
```
```Hi,

here is some quick-and-dirty Matlab (Octave) example for a zero forcing
equalizer.
You said it's only for a demo, but a short disclaimer anyway:
--- Don't use this code for real life applications, it doesn't work: ---

a) it would require infinite length.
b) channel may have nulls in H(f) and is not invertible at all
c) or more likely, the channel has notches, and the EQ boosts the noise.

Cheers

Markus

% time shifted pulse
% inverse convolution needs some space left and right
pulse=zeros(1, 256); pulse(128)=1;

% two-tap channel
chan=pulse; chan(130)=-2-3i; chan(133)=-3+4i;

% invert channel
%fft(chan) .* fft(eq) = fft(pulse)
eq=ifft(fft(pulse) ./ fft(chan));

p1=[1 2i 3 4 5]; % test signal
p2=conv(p1, chan); % channel output
p3=conv(p2, eq); % equalizer output

plot(abs(p3));
p3(128+256-1:128+256+6)

```
```>Impossible.
>A non-minimal phase system doesn't have an inverse.

Oops overlapping posts.
Right, it's an approximation only with a finite number of taps.

```
```Hello, thank you for the responses.
is not useful or valid for equalization purposes.

Proakis. So equalizing the multipath channel effect with a zero-forcing
algorithm should be perfectly possible.

I agree that since I have limited number of taps in the equalizer filter
I will have residual error in the equalizer output but still this should
be
acceptable for my simple case.

Can you then tell me another way to find the coefficients needed for
zero forcing criterion? For example for a linear filter with coefficients
h = 1 0 0.4 0.2  modelling the multipath effect.

http://www.dsprelated.com/showmessage/78224/1.php
I have read the above post so I know that I will need complex values but
at this point I am clueless about how to proceed any further.

```
```Hello,

In my copy of Proakis, you'll find some of your questions answered around
page 622.
In particular: "little more can be said for the general solution of the
minimization problem" (for finite length EQ).

I've put some more example code on this page, using a least-squares
solution in the time domain:
http://www.elisanet.fi/mnentwig/webroot/zero_forcing_equalizer_example/index.html

Said page is new, so don't believe everything... Please let me know if you
find errors.

Cheers

Markus
```
```Hello again

Dear Markus,

For a newbie that is not properly trained in the arts of Estimation theory
and Linear Algebra. It was a little bit difficult for me to grasp theory
behind your code but I think I am okey right now.

For possible future readers of this post, I also found these two links
aside from Markus`s webpage useful.

http://www.stanford.edu/class/ee263/ls_ln_matlab.pdf
http://www.stanford.edu/class/ee263/ls.pdf

My question now would be " how to select the proper coefficients for my
channel"

For example for the physical channel of

h = 1 0 0 0.4 0.2

I  get real numbers as equalizer coefficients. However I know that I need
complex   coefficients since I have inphase-quadrature signals together as
my transmitter output.

Should I just make my channel filter complex (by just copying the real
part into the imaginary) as

h= 1+j1 0  0  0.4+j0.4  0.2+j0.2

or can I just copy my equalizer filter complex by doing the above method.

I presume that both of my ideas above are wrong but then again I am
pointless in how to proceed any further :)

```
```Hello,

some example, why channel coefficients can be complex:

Assume, the channel is a radio link with a direct path and one reflection
(multipath), -6 dB.

The length of the multipath is exactly one sample longer (distance=sample
time * speed of light), for example 10 m.

So my channel model might be: [... 1 0.5 ..]

Now the modulation is carried by a radio wave with a much higher frequency
than the sample time.

For example at 2 GHz, one quarter wavelength is about 4 cm.

So let's assume the above channel model was accurate for 10.00 m.

Now change the length of the reflection to 9.96 m. On the sample time
scale there is almost no change, so the absolute value of the taps is
still next to [1 0.5].
However, since the path shortened by a quarter wavelength, the phase
advances by 90 degrees, and turns the 0.5 into 0.5i. The channel is now
[... 1 0.5i ...]

The relative phase of multipaths changes all the time, when a mobile

You might start looking for a "standard" channel model, for example take
it from the reference:
http://www.3gpp.org/ftp/Specs/archive/25_series/25.101/25101-780.zip
search for "pedestrian A"

-mn
```
```Dear Markus,

I think that now I have the (correct)
big picture :)

I make a small summary of what I understand below. I would be
happy if you correct my mistakes. Since this simulation is
only for demonstration purposes my carrier frequency will
be around 24Khz :)  and I will be implementing the
multipath effect directly on passband.

Using the same channel model [... 1 0.5 ...]
After modulating the transmit signal I will convolve it
with the channel  [... 1 0.5 ... ]  (not 0.5i)
Then later on, since I know that the multipath channel
has a complex impulse response in baseband. I will
equalize the downconverted signal with a complex equalizer that has a
structure mentioned in
Proakis 636 figure 10.2-10 or for those who don't have the
book, second post of topic

I will acquire the complex coefficients of the equalizer filter
by appliying the algorithms mentioned previously in this post
but this time, I will take my multipath channel as

[..... 1 0.5i .....]

assuming that the calculated complex equalizer coefficients are

[ .... 0.5+i0.3 -0.25+i0.1  0.1  -i0.02  .... ]

then coefficients of the real part of my Complex Equalizer are
[.....  0.5    -0.25   0.1  0 ......]

and coefficients of the imaginary part of my Complex Equalizer are

[...... 0.3     0.1    0   -0.02 ....]

I hope that this time I understood it correctly :)
Thank you very much for your help

Best Regards
Rifat
```
```Hello all,

On my way to implementation of the transmitter-receiver chain on a DSP.
I have come across one more problem.

Here is a brief info about my current system specs
Fsampling = 48Khz
Fcarrier  = 750Hz
Fsymbol   = 750Hz
No pulse shaping

I have 64 samples (Fs/Fc) from a single period of my carrier sinusoid.
Since there is no pulse shaping each of these samples is modulated with
the same symbol value.

My problem is about the Low Pass Filter right after the downconverter in
the QAM demodulator. Since my carrier frequency is not that high,
in order to eliminate the 2Wc component I am using a FIR filter of length
40. However this leads to problems related to transient response of the
filter.

On my I line where the carrier is cosine. Due to discontinuities I get
repeating transient regions and this makes the detection process very
problematic.