So I recently implemented a CMA equalizer in MATLAB that uses method of steepest descent to converge to the minimal cost. (Im on an equalizer implementation binge).
My questions are the following:
1) It seems to me that the CMA algorithm is only good for channels where they are relatively 'flat'. In other words, it is not expected to work for channels with deep fades/nulls? Is this generally true?
2) I am using a BPSK signal, and we can see from the first figure here, that after the multipath effects I have a smearing on the complex plane of my BPSK signal - there arent two nice clusters as one would expect. Instead, we see 4 red clusters. My question is how come after the CMA equalizer I still have 4 clusters? (I colored those blue). I suppose it makes some sense because the CMA simply forces the envelopes to be 1, and doesnt 'care' which cluster you are talking about. I have heard that CMA can suffer from local minima problems however. Would this be an example of it? (ie, getting 4 clusters instead of 2 since this is BPSK). If not, what can be done about it?
3) Almost as if answering question 2, I went ahead and changed the constant modulus that I seek to minimize the error against. Instead of choosing 1 (as is supposed to be the case for BPSK), I chose 0.25 to be the modulus. This is the constellation I got:
The problem is that even if this is a 'solution', how does one know apriori what to chose the modulus to be? The reason I consider it a problem is that if I have 4 clusters instead of 2 it makes post-symbol phase/frequency offset estimation/correction more complicated especially when one expects 2 clusters due to BPSK signalling.
(For completeness I have attached the same plots but when I added frequency offsets)
Thanks in advance for any insights you can give into this equalizer!