How to estimate Impulse Response from a frequency domain dataset

13 views (last 30 days)
Through an old Spectrum Analyzer I have a frequency domain dataset (amplitude in dB and phase in degrees). I would like to estimate Impulse Response (IR). I must compare the obtained IR with the IR automatically measured through a newer Spectrum Analyzer. I will manage a huge dataset, moreover I know I have to apply a Kaiser Window somehow, so I don't think that System Identification Toolbox can work out for me.
My frequency domain dataset expands from 800 MHz to 3 GHz with a step of 5.5 MHz (so I have 401 samples and my Nyquist frequency is 3 GHz). What should I do from 0 to 800 MHz, and when do I apply the Kaiser Window?
I slightly modified this code I found online, but doesn't seem to work out for me (I previously modified the phase M(:,2) in radians):
frf = M(:,1)+1i*M(:,2); %form the complex frequency response function
fn = 3000000000; %Nyquist frequency
df = 5500000; % frequency spacing
freq = [800000000:df:fn]; % frequency vector
frf2 = [0 frf(2:end).' 0 frf(end:-1:2)']; % form 2-sided FRF
irf = ifft(frf2); % calculate IRF
dt = 1./2./fn; % sampling interval
time = 0:dt:801*dt; % vector of sampling times
plot(time,real(irf));
xlabel('Time (s)');
ylabel('IRF');
Any help would be greatly appreciated. Thank you for your patience.

Answers (1)

Giuseppe
Giuseppe on 24 Apr 2013
Hi all.
I modified the code posted in my first message, now I finally have an Impulse Response, but on 1093 bins, while the other one (newer Spectrum Analyzer) is on 401 bins. Since it looks good (same range and kinda same shape) should I decimate to have a correct comparison or what?
Anyways, I still don't get where and how to apply the Kaiser window.
Thank you for your time!

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!