DSPRelated.com
Forums

Applying complex weights to microphone array

Started by stahn83 January 25, 2008
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?
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