# CMA Equalizer error

**URL:** <https://www.ruby-forum.com/t/cma-equalizer-error/232094>\
**Category:** GNU Radio\
**Created:** [September 17, 2014, 8:07pm UTC](https://www.ruby-forum.com/t/cma-equalizer-error/232094 "2014-09-17T20:07:02Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![addis\_a](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c4cdca/32.png) [@addis\_a](https://www.ruby-forum.com/u/addis_a)\
**Post date:** [September 17, 2014, 8:07pm UTC](https://www.ruby-forum.com/t/cma-equalizer-error/232094/1 "2014-09-17T20:07:02Z")

</div>

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.

Regards,

Sam

---

<div class="post-metadata">

**Author:** ![Sam\_mite](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f4b2a3/32.png) [@Sam\_mite](https://www.ruby-forum.com/u/Sam_mite)\
**Post date:** [September 19, 2014, 5:33am UTC](https://www.ruby-forum.com/t/cma-equalizer-error/232094/2 "2014-09-19T05:33:18Z")

</div>

Hi, I hope I can have a comment on it.

On Wed, Sep 17, 2014 at 11:06 PM, Sam mite [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> Regards,
> 
> Sam

–

Best Regards,

Sam

---

<div class="post-metadata">

**Author:** ![Sam\_mite](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f4b2a3/32.png) [@Sam\_mite](https://www.ruby-forum.com/u/Sam_mite)\
**Post date:** [September 24, 2014, 7:55pm UTC](https://www.ruby-forum.com/t/cma-equalizer-error/232094/3 "2014-09-24T19:55:17Z")

</div>

On Wed, Sep 17, 2014 at 2:06 PM, Sam mite [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Sam

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.

Tom

---

<div class="post-metadata">

**Author:** ![Sam\_mite](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/f4b2a3/32.png) [@Sam\_mite](https://www.ruby-forum.com/u/Sam_mite)\
**Post date:** [September 26, 2014, 6:00am UTC](https://www.ruby-forum.com/t/cma-equalizer-error/232094/4 "2014-09-26T06:00:54Z")

</div>

On Wed, Sep 24, 2014 at 10:53 PM, Tom R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > 
> 
> 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
