0
$\begingroup$

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)?

$\endgroup$

1 Answer 1

1
$\begingroup$

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

$\endgroup$

Your Answer

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

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