MATLAB Answers


Inverse fast Fourier transform of measured RF data

Asked by Thomas Schäfer on 11 Jun 2018
Latest activity Commented on by Thomas Schäfer on 19 Jun 2018

Hi I would like to perform an inverse fast Fourier transform on a measured set of data recorded with a network analyzer. The data I have is in the frequency domain and I am interested into transforming it to time domain. I have the frequency vector F and the corresponding complex magnitude vector V. I believe that the Matlab function IFFT is the function that I am looking for, but I cannot figure out how to set up the function call correctly. I would appreciate if someone would help me with this. Please let me know if I you need more info of my problem. I do not have access to the signal processing toolbox. Best regards Thomas


Show 1 older comment

Hi David Thank you for responding. As I mentioned the data is from measurement and is equally spaced in frequency. I have not made any interpolation or extrapolation. I have attached the data in a text file, first column is frequency (Hz), second is real part and third is imaginary. I expect a small contribution about 5ps (pico second) and larger around 130ps and 230ps. Best regards Thomas

Hi Thomas,

I can't really comment on the picosecond times you are looking for, but the data does show a larger time delay tau on the order of 3 nsec, appearing as a multiplicative phase factor exp(2*pi*i*f*tau). The following code finds the delay and attempts to remove its effect.

I think it makes sense to rescale and use frequency in GHz so the times are in nanosec. The result is tau = 2.96 nsec which suggests about 0.8 m difference in cable length between the signal and reference channels (if all of the delay were due to that effect).

f = data(:,1)/1e9;                % f in GHz
z = data(:,2) + i*data(:,3);
ua = unwrap(angle(z));
% linear fit, ua = (2*pi*f*tau + const) = c(1)*(f-80) + c(2);
c = polyfit((f-80),ua,1)  
tau = c(1)/(2*pi)                 % tau in nanosec
plot(f,ua,f,polyval(c,(f-80)))    % fit check
z1 = z.*(exp(-2*pi*i*f*tau));     % response without tau delay

Thank you for your replay. Yes, it is obvious after you point it out, that there is a longer transition line.

Sign in to comment.

0 Answers