Inverse fast Fourier transform of measured RF data
2 views (last 30 days)
Show older comments
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
4 Comments
David Goodmanson
on 14 Jun 2018
Edited: David Goodmanson
on 14 Jun 2018
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
figure(1)
plot(f,ua,f,polyval(c,(f-80))) % fit check
z1 = z.*(exp(-2*pi*i*f*tau)); % response without tau delay
figure(2)
plot(f,abs(z1),f,angle(z1))
Answers (0)
See Also
Categories
Find more on Transforms in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!