I am supposed to design a delay and sum beam former for a short audio. But the sampling frequency is only 8kHz and after times the delay, the fractional delay is less then one sample, and after the "floor" function in Matlab, all the fractional delay integer will be 0 and the results are neither fractional delayed nor time aligned. Exponential weights cannot be used in this case for the reason no imaginary part should be in the filtered signal.

  • $\begingroup$ What you need is a fractional delay filter. You would pass the signal through the filter to apply the desired fractional sample delay, then add it to the original. $\endgroup$
    – Jason R
    Mar 29, 2015 at 1:03
  • $\begingroup$ um, that's hard to do if your interpolation is symmetric (i.e. the interpolation would work the same if you reversed the signal in time). the only way to interpolate to a fractional sample precision where the actual delay, in real time, is less than 1 sample, is linear interpolation. in other words, if you were using 4-sample 3rd-order Hermite polynomial interpolation, your fractional-sample-precision delay would have to be at least 1 sample delay. if it was an 8-sample 7th-order Hermite polynomial, the delay would have to be at least 3 samples. $\endgroup$ Mar 29, 2015 at 4:05

1 Answer 1


There is no reason you cannot use exponential weights. Those are used in the frequency domain, not in time domain, and won't produce imaginary part.

Using the Translation/ Time-Shifting Property of the Fourier transform, you can define the weights (per frequency bin), even for fractional delay. By the way, the problem of fractional delay is not only when it is less then 1 sample. Flooring all delays to be integers will produce sub-optimal results.

A different approach is to use interpolation in time-domain to obtain values between samples, e.g. using interp1. This approach will be much slower, if it matters.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.