Hi, I am trying the CMA equalizer of gnuradio and for understanding I am
studying the reference paper mentioned in the doc as well. I have a
question after going through the code- Why the real and imag part of the
error signals are being clipped at 1.
float re = gr::clip(error.real(), 1.0); float im =
gr::clip(error.imag(),
1.0);
Shouldn’t it be “d_modulus” instead of 1.
The answer is no. The clipping is just to make sure that the error
signal
doesn’t walk away too far or go to some strange state if the incoming
signal is too ugly. There’s nothing that I can find that ties that value
to
the modulus at all, though I can see why you might think so. In fact,
when
you make the change you suggested, the results get noticeably worse.
I’ve attached an example that uses our dynamic fading model to explore
the
results. You can select between different UMTS PDP models, both of which
are pretty bad. I found that restricting this error value even more
makes
the algorithm a bit more robust, though it likely takes longer to lock.
But
when using d_modulus here, the algorithm never actually converges.
you make the change you suggested, the results get noticeably worse.
I was playing around with the flowgrpah you attached and observed the
same
as you mentioned. I am studying further on CMA and I 'll also play more
with your flowgraph. I’ll get back on the same thread if I can find
something different.
Thanks.
Regards,
Sam
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.