# Mathematical operations with given discrete frequency response function

Let's say I have a given discrete frequency response function H(w) and corresponding n frequencies as MATLAB arrays, ranging from 0 to 512 Hz.

If I do an n-point FFT on a discrete time domain signal x(k), how do I filter this frequency domain signal with given FRF? Is it just element-wise multiplication of the FFT array with the FRF array, followed by an IFFT to get the filtered signal y(k) in time domain or is it more complicated than that?

To take it one step further, what if I only had a filtered signal y(k) and my discrete FRF, could I compute the original signal x(k)?

## 1 Answer

Is it just element-wise multiplication of the FFT array with the FRF array, followed by an IFFT

No. Filtering in the frequency domain is not trivial since it's equivalent to circular convolution (not linear) and will result in time domain aliasing. Google "overlap-add" or "overlap save" for a description of adequate algorithms

To take it one step further, what if I only had a filtered signal y(k) and my discrete FRF, could I compute the original signal x(k)?

Sometimes. In essence what you are trying to do is an "inverse filter". This is only possible if the filter itself is invertible. In other words: information that's been lost in the filtering process cannot be recovered. In practice that means you can't have any zero (or too small) amplitude in your filter and you need decent signal to noise at all relevant frequencies