I need to compute the impulse response of a system, but I only have access to the frequency response data.
This data contains the output magnitude of the system (for a fixed input amplitude) at frequencies between 10Hz and 400Hz, sampled at each 5Hz (10, 15, 20, ..., 395, 400) with a 1000Hz sampling frequency. The magnitude past the area of interest tends towards zero, but was not measured directly.
I dont have phase information (or a way to obtain it), but I only care about magnitude information.
Here's a quick graph of the data I have:
(Amplitude units are undefined, but aren't meaningful since an arbitrary scaling factor is added during processing steps.)
How can I obtain an impulse response of the system with incomplete frequency response data?
I'm thinking of using the IFFT function in MATLAB, but I am unsure of how it will interact with the gaps and the missing information past 400Hz.
I assume I could pad the data with zeroes, but up to how many?
I can also obtain more data to "fill in" make the gaps smaller, but there will always be some since I could also sample at non-integer frequencies.
EDIT for extra context: I am trying to implement a parallel filter design to equalize the magnitude response of my system, based on the works of Balasz Bank. The author provides MATLAB code to determine the parameters of the system, but said code requires the impulse response of the system as input, not the frequency response.
The code takes the impulse response as input, converts it to minimum-phase and then computes the filter parameters using a least squares method. (The actual code is in the roomcomp.m and parfiltid.m files)
The end goal of the equalizer is to get a flat frequency response for the amplitude (In this case, amplify 0-50Hz, attenuate 50-200Hz and amplify 200+Hz). The system takes in a 1kHz signal as input, equalizes it and outputs the result in real time at 1kHz.
I'd like to take phase into account eventually, but due to time constraints, for now any solution that results in decent equalization works.