left is ifft of frequency response and right is time shifted fir filter to be causal filter in noise cancellation problem, delay is very annoying things.
You are misinterpreting the results of the IFFT in your picture on the left side. This comes from using the IFFT where you should, properly, use the inverse DTFT.
The DFT (from whence the FFT comes), has an output domain that is both discrete and circular, where any given frequency $\theta$ is congruent with any other frequency $\theta + 2\pi m$. (As typically implemented, this means that for an $N$-point IFFT, any sample $n$ is congruent with any other sample $n + N\ m$).
You problem comes because you're talking about actual physical filters that operate in a time domain over all the integers. For this, the DFT (and, hence, FFT and IFFT) does not fit. Formally, you should be using the the inverse DTFT, where the domain of the output is all the integers.
Where you to do this, you would find that your filter's impulse response $h(n)$ has non-compnents for $n < 0$. This is what makes your filter non-causal. It's obvious in retrospect -- if the filter is responding before the input, then it can't exist in the physical world.
Let me reiterate this:
- Filters that start responding to an input before it happens are non-causal.
- We live in a causal universe.
- Non-causal filters are not real.
Now, someone's going to object that, no, non-causal filters are real, they apply them to recorded data all the time. OK, fine, if you're applying a filter to recorded data, then you are simulating a universe where you have prior knowledge of the 'future', and then you can, within the context of your simulation, have a "non-causal" filter.
But if you're going to apply a real filter to real-time data you can no more use a non-causal filter than you can travel faster than light*.
my question is if i do filtering process in frequency domain, ideal filter (that is not delayed for making fir filter to be causal) can be used?
In the real universe, we live in the time domain. Yes, you can take pre-recorded data, you can take it's FFT, multiply by a filter's frequency response, and then take its IFFT.
But that is not operating on data in real-time. It's operating on recorded data. And because you have recorded the data, you have, indeed, added delay.
i can't understand why i have to do this pure delay to make causal filter.
See the definition of causal filters, above. It is absolutely fundamental, by definition that a filter which responds to an input before the input happens is non-causal.
If you keep this definition in mind, then the need to add delay to make a filter causal should be obvious.
what is the problem when i do filtering signal with frequency response of Non-causal fir filter?? i think that is just multiply process
It is "just" a multiplication in the frequency domain after you record enough data that you can perform an FFT on it. Recording that data takes time, "takes time" is synonymous with "adding delay" -- so when you 'just' multiply in the frequency domain, you must first add delay in the real world.
* Apparently this is actually a result in General Relativity. I still haven't wrapped my brain around it, but -- OK, I understand the presentations when the charts are still on the screen, and I'm not a general relativist, so I'll just take that as a given.