# 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$$. – KillaKem 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. – KillaKem May 19 '15 at 21:53
• Can you provide a link to where the referenced slides came from? – Jason R 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.
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. – Matt L. May 20 '15 at 17:05