How to solve a time delay from an FIR filter?

I have designed a FIR high-pass filter $$\{h_n\}$$ with length 257 to filter a signal $$\{f_n\}$$ with length 512. To convolve signal with filter in time,
I performed an FFT with length 768, padding zeroes at tail of $$\{h_n\}$$ and $$\{f_n\}$$, and then I multiplied their frequency responses $$\{H_n\}$$ and $$\{F_n\}$$ . To convert it back to time I performed an IFFT producing a filtered signal $$\{\tilde{f}_n\}$$.
However, $$\{\tilde{f}_n\}$$ has a time shift comparing to the origin signal, and their amplitudes also have a deviation. I know there is an 'Overlap-Add Method' to solve this problem, but my calculation resources are limited.
Is there any method to solve such problem using minimal times of FFT/IFFT?

• 1. Did you take care of the FFT shift operations while doing IFFT/FFT? <br/> 2. Did you take care of the fact that multiplication in the frequency domain is circular convolution in time domain (not linear convolution)? 3. What tool are you using for this experiment? Matlab? – Sakshama Ghoslya Jan 16 at 10:09
• What do you mean "their amplitudes have a deviation?" Also, the time-shift may simply be inherent in the group delay of your filter, so one thing you could do is try the minimum-phase version of your filter. – Mike Battaglia Jan 16 at 18:43
• To make any filter minimum phase, simply take all of the zeros in the z-domain that are outside the unit circle and replace them with zeros at the location of their reciprocals. Same frequency response but smaller group delay – Mike Battaglia Jan 16 at 18:44

So, yes, you've got a shift. And, unless your $${h_n}$$ is a linear-phase filter, that delay isn't even constant for different frequencies.