I am writing an open source microphone array simulation program:SharpEar. When I give uniform weight to microphone array elements, the result in the angle is a sinc function as expected. There are 41 elements in array, all equally weighted. Room is 20*20 meters.
Red point in the picture below is a 1000Hz sin wave. The black areas are filtered by the result of beamforming.
Now I am trying to achive null steering. What I understand from null steering with my computer science brain is: Microphone array will work as a spatial filter. Fft of the weights of the array will be reflected in angle. That is why result of the uniform weighted microphone array is like the picture above. Now lets say I know there is a noice in -30 degree and the sound that I want to focus is at 0 degree(Angle considered to middle of microphone array red point was at around 0 degree ). And array interests in 90 degrees from -45 to 45. Because I don't want to get anything I am adding a null at -30 degree. And I am having a data like:
0.5, 0.5 , ... , 0 , 0 , 0 , 0.5 ....1, 1, 1, 0.5, 0.5 , 0.5 ... | | | -45 -30 degrees 0 degrees
I believe if I take the inverse fft of the data above and use as weights in my microphone array. I should achive a better focussing in angle domain. But my results are terrible.
I want to ask if my understanding of null steering is correct or am I missing anything?
Ps: Please forgive my lacking descriptions since DSP is not my profession, I am network programmer and trying to run this project in my free time.