Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: How to estimate Impulse Response from a frequency domain dataset
Replies: 3   Last Post: Apr 24, 2013 3:44 AM

 Messages: [ Previous | Next ]
 anyone Posts: 16 Registered: 4/10/13
Re: How to estimate Impulse Response from a frequency domain
dataset

Posted: Apr 12, 2013 12:39 PM

On Fri, 12 Apr 2013 07:16:09 +0000, Giuseppe wrote:

> 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

...and, your frequency bins (equivalently 'resolution', but not 'steps') are ~5MHz wide.

> should I do from 0 to 800 MHz, and when do I apply the Kaiser Window?

You have Source -> System -> Frequency Response. A Frequency Response is the convolution of the Source with
(in effect) the Impulse Response of the System, in the frequency domain. A similar condition exists for the time
domain. If your System were LTI (look it up), and if you could derive the time-domain representation of the
Frequency Response, say through use of IFFT, and if you had the time-domain representation of the Source signal,
you could attempt to derive the time domain Impulse Response through an inverse convolution.

Yet, you believe SIT won't help?

> 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.

Date Subject Author
4/12/13 Giuseppe
4/12/13 anyone
4/13/13 Giuseppe
4/24/13 Giuseppe