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.
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.