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?
Answer
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.
No comments:
Post a Comment