Hi, I'm currently an undergrad who is evry new to beamforming and
>matlab, would greatly appreciate is someone can help
me in this.
>
>After calculating the complex weights through MVDR, they appeared in
>the form of w (8X1 matrix with complex values).
>
>(example)
>w > 0.1250
> 0.1079 - 0.0630i
> 0.0614 - 0.01089i
>-0.0019 - 0.1250i
>-0.0646 - 0.1070i
>-0.1098 - 0.0598i
>-0.1249 + 0.0037i
>-0.1060 + 0.0662i
>My question : How do i get the desired y[n] (signal after processing)
>when my weights are in complex and x[n] in real (sampling of human
>speech).
>Based on y[n]=x[n]*w
>where x[n] is a 80000X8 Matrix (sampling rate 8khz , duration 10sec)
>
>I'm implementing all these in matlab and I have tried using
>y=real(x*w);
>the output doesn't seemed to be correct based on its playback. Any
>advice?
You need to design your weight vector so that is is real. This basically means
that you need to constrain both the positive and negative frequencies.
One method of implementing this is: If c is your original (complex) constraint
vector then your new constraint matrix is C = [real(c) imag(c)].
Your weight vector is still calculated using: w =
inv(R)*C*inv(C'*inv(R)*C)*g, where R is your covariance matrix and g you
gain vector.
HTH,
Matt