File Exchange

image thumbnail

Delay-and-sum beamforming in frequency domain for arbitrary array geometry

version (426 KB) by Jørgen Grythe
Delay-and-sum response of multiple single frequency signals by using an arbitrary 1D, 2D or 3D array


Updated 07 Dec 2016

View License

This matlab function calculates the delay-and-sum response in the frequency domain of a discrete 1D, 2D or 3D array of any shape with isotropic elements. Input can consist of multiple sources of the same frequency arriving at different angles with different source power.

Comments and Ratings (16)

dw w

spectrumNormalized = abs(S)/max(abs(S));

getting error as
Subscript indices must either be real positive integers or logicals. How can i correct it.

river chen


Great job! I'm wondering how should I change the calculation to make this code work for broadband signals too?

Tale Saeidi

I have used you code and modified it based on my need.
I have a problem on reconstructing an image from scattered signals using DAS algorithm. I have done the following code so far. I have 10 arrays located on a box same location that I put in the code. I have your code then I tried to modify it based on my requirements.
I need to know how can I load my own signal? I tried to load it, but it didnt work.
and I need to get the image on my box but it shows on the sphere.
Could you please help me? really appreciate it.

I am unable to understand .. how this will work for any random signal. eg: Sine wave of fixed frequency.
Kindly comment.

Fangyu Li


Jieun Lee



Andy Yang


Great library. It took me some research to figure out that the input signal must be in the complex plane, and this can be achieved using the Hilbert Transform, which, luckily, is a matlab built-in hilbert().

According to Wikipedia, "The Hilbert transform is a linear operator that takes a function, u(t), and produces a function, H(u)(t), with the same domain. The Hilbert transform ... derives the analytic representation of a signal u(t). This means that the real signal u(t) is extended into the complex plane such that it satisfies the Cauchy–Riemann equations. For example, the Hilbert transform leads to the harmonic conjugate of a given function in Fourier analysis, aka harmonic analysis. Equivalently, it is an example of a singular integral operator and of a Fourier multiplier.

I'm sure there are other ways to do this, but this was a quick and dirty way for me to get up and running with this library and start calculating DOA via SRP (Direction of Arrival via Steered Response Power) with real microphone array data.


Thank you for this precious work.
I have still some technical questions about beamforming code, therefore i need to contact with you.

zq yao


Added possibility to perform beamforming for 3D arrays also.

Removed files not needed

Revised files to be more consistent with UV-space notation. Added possibility to scan in cartesian coordinates as well as angles.

steeredResponseDelayAndSum now uses reshape() instead of squeeze() to improve speed

Updated description

Added plotSteeredResponse function with uicontrol slider

Added description text in function files

Added pdf with mathematical explanations

MATLAB Release Compatibility
Created with R2016a
Compatible with any release
Platform Compatibility
Windows macOS Linux