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.