Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations cowski on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

How to estimate Impulse Response from a frequency domain dataset

Status
Not open for further replies.

joepope

Computer
Apr 12, 2013
3
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.
 
Replies continue below

Recommended for you

Since you have both amplitude and phase, the inverse complex FFT should get you back to the original time domain signal. I don't see in your code where you use the phase information. Without it, the implicit assumption is everything is at zero phase.

TTFN
faq731-376
7ofakss

Need help writing a question or understanding a reply? forum1529
 
I use it here:

Code:
frf = M(:,1)+1i*M(:,2);

Like i said "(I previously modified the phase M:),2) in radians)".

Anyways, I still don't get where and how to apply the Kaiser window. Thank you for your time!
 
You presumably would use the inverse of the Kaiser window to undo the window's application prior to the original FFT to reduce the sampling window's artifacts on the FFT.

TTFN
faq731-376
7ofakss

Need help writing a question or understanding a reply? forum1529
 
Thanks for your answer, but I am not sure to understand what you mean properly. I never used FFT, i just managed my frequency domain dataset.

Moreover, if I have to be true i modified the code posted in my first message, now I've got 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?

Thanks for your time!
 
I suggest you contact an applications engineer for your spectrum analyzer with your questions.

TTFN
faq731-376
7ofakss

Need help writing a question or understanding a reply? forum1529
 
I would start by creating an impulse response in Matlab, run it through their FFT, throw away the negative frequencies, then treat it as externally measured data and be sure you can get the original impuilse response back using your code. Matlab is a pretty good place to fake good test data for proving your algorithms.

- Steve
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor