# Constant Modulus Algorithm and the Gradient Operation CMA is a blind channel equalization algorithm with the details presented above. I am facing 3 difficulties and shall appreciate help

Q1: Does $H$ and the bar over $\bar{y_k}$ represent the Transpose symbol?

Q2: When calculating the gradient, $\Delta J(w) = 2E{({|y_k|}^2 - 1). \Delta(w^Hx_kx_k^Hw)}$, how does the gradient $\Delta(w^Hx_kx_k^Hw)$ becomes $x_kx_k^Hw$ ? Is there a formula ?

Q3: Equations : The final Equations are given by $w_{k+1}= w_k - \mu x_k({|y_k|}^2-1)y_k^T$ (T = transpose). While doing steepest ascent, we usually take a step in the opposite direction of the gradient. So, the minus should have become positive as according to the logic given in Least Mean Square.

I was looking at the Matlab implementation given here http://www.mathworks.com/matlabcentral/fileexchange/39482-blind-channel-equalization/content/lms.m The Equations given in this impelemtation from lines 109 -- 113 are different from the ones in theory (excerpt above). The Equations in the implementation are :

for i=1:K
e(i)=abs(c'*X(:,i))^2-R2;                  % initial error
c=c-mu*2*e(i)*X(:,i)*X(:,i)'*c;     % update equalizer co-efficients
c(EqD)=1;
end


What is correct? Can somebody please show the correct version?

• I can only confidently answer 1), $$A^H = (A^*)^T$$. May 19 '15 at 21:06
• Is the complex conjugate taken when we consider real and imaginary signal? When we are only dealing with real part of the signal then is $A^H = A^T$ ?
– SKM
May 19 '15 at 21:49
• Yes, if A is real then $A^H = A^T$, but I don't think you can just assume the w vector is real. May 19 '15 at 21:53
• Can you provide a link to where the referenced slides came from? May 20 '15 at 1:45
• @JasonR: The slides are from ens.ewi.tudelft.nl/Education/courses/et4147/sheets/cma_leus.pdf
– SKM
May 20 '15 at 16:39

As mentioned in the comments, the symbol $^H$ denotes the conjugate transpose of a matrix or vector, which means that the vector/matrix is transposed and that all of its elements are conjugated. The bar over $y_k$ means complex conjugate (note that $y_k$ is a scalar, not a vector or matrix).

When computing the gradient with respect to a complex variable in order to maximize or minimize a function, there's a trick which is explained in more detail in this answer. You basically take the derivative with respect to the conjugated variable and regard the non-conjugated variable as a constant. So when computing the gradient of the expression $\mathbf{w}^H\mathbf{x}\mathbf{x}^H\mathbf{w}$, you formally take the derivative w.r.t. $\mathbf{w}^H$, regarding $\mathbf{x}\mathbf{x}^H\mathbf{w}$ as constant, which yields the given result.

As for your third question, you should realize what you actually want to do. You want to minimize the error function, so you do not want to use a steepest ascent but a steepest descent algorithm, moving in the direction of the negative gradient.

And the Matlab code does in fact implement the equations you stated (replacing the modulus by the variable R2, which is equal to $1$ in your equations). Just use the error $e_k=|y_k|^2-1$ and the expression $y_k=\mathbf{w}^{(k)H}\mathbf{x}_k$ in your update equation, and you'll see it.

• Thank you for the detailed answer. Can you please give some suggestion for the following ? (A) when working with real signals and having no complex or imaginary part, then I can simply take the transpose instead of the complex conjugate (B) Say the model is an univariate FIR filter with true coefficients $h = [1 a_1 a_2]$, then from the link for the code lines 80-82 what will be the values for the variables $L, ChL, EqD$ which denotes the smoothing length, length of the channel & channel equalization delay respectively. Thank you very much for your effort & time.
– SKM
May 20 '15 at 16:38
• I checked back and have doubt regarding the error. Is the error (In the slides) $e_k = ({|y_k|}^2 - 1)y_k$ OR $e_k = ({|y_k|}^2 - 1)$?
– SKM
May 20 '15 at 17:00
• @SKM: The error is the latter; I know that in your slides they called the first expression 'update error', but the actual error is simply the difference between $|y_k|^2$ and the desired magnitude ($1$ or R2 in the Matlab code). As for your other questions: (A) for real signals the complex conjugate does not change anything; the conjugate transpose would be a simple transpose. (B) I haven't checked the Matlab code in the link. Maybe that would be worth a new question. But don't make it a coding question but a DSP content question, otherwise it will very likely be closed. May 20 '15 at 17:05
• I have posted a new Question for part (B) here dsp.stackexchange.com/questions/23534/… . Please have a look in case you have some time.
– SKM
May 20 '15 at 18:36