Sound source localization using Phased Array System Toolbox

Illustration
j_jthomas - 2021-12-13T11:11:47+00:00
Question: Sound source localization using Phased Array System Toolbox

I want to use a microphone array to localize sound sources, i.e. find the directions (and possibly distances) of sound sources from the array. I have examined the Direction of Arrival (DoA) finding tools in the Phased Array System Toolbox, but I am not sure if I could use these for my application. All these tools assume that the signal arriving at the array is narrowband, i.e. a single carrier frequency with some modulation. However, the sounds I am interested in are wideband, like most sounds.   Could I sub-divide my wideband sounds into a set of narrowband components (e.g. using a filter bank), and then apply the narrowband DoA tools to each sub-band separately? How could I then combine the multiple sub-band DoA's to best estimate the overall DoA? Is this approach valid, or are the narrowband DoA tools simply not applicable to sound signals?   Any help is much appreciated.

Expert Answer

Profile picture of John Michell John Michell answered . 2025-11-20

Yes, you can use a filter bank to sub-divide your wideband sounds into narrowband components and then apply narrowband DoA tools to each sub-band separately. This approach is valid and can help you estimate the overall DoA for wideband signals.

 Steps to Follow:

1. Sub-divide Wideband Signals: Use a filter bank to split the wideband signal into multiple narrowband components.
2. Apply Narrowband DoA Tools: Use narrowband DoA estimation tools like MUSIC or Capon's method on each sub-band.
3. Combine DoA Estimates: Combine the DoA estimates from each sub-band to get an overall DoA estimate.

 Example Approach:

1. Filter Bank: Use a filter bank to divide the wideband signal into sub-bands.
2. DoA Estimation: Apply DoA estimation tools to each sub-band.
3. Combine Results: Use averaging or weighted averaging to combine the DoA estimates from each sub-band.

MATLAB Example:


% Example code to illustrate the process
% Step 1: Filter Bank
[signal, fs] = audioread('wideband_signal.wav');
numBands = 8; % Number of sub-bands
[signalFB, ~, ~] = filterbank(signal, fs, numBands);
% Step 2: DoA Estimation for Each Sub-Band
doaEstimates = cell(1, numBands);
for k = 1:numBands
    [doaEstimates{k}] = phased.MUSIC('SensorArray', sensorArray, signalFB(:, k));
end
% Step 3: Combine DoA Estimates
overallDoA = mean(cell2mat(doaEstimates));
disp(['Overall DoA: ', num2str(overallDoA)]);

 Explanation:
- Filter Bank: Divides the wideband signal into sub-bands.
- DoA Estimation: Applies the MUSIC algorithm to each sub-band.
- Combine Results: Averages the DoA estimates to get the overall DoA.

This method leverages the strengths of narrowband DoA tools while accommodating wideband signals. 


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!