Given a pulse and gate field, E(t) & G(t) where G(t) = E(t)^n or |E(t)|^2, these files can generate a FROG trace and then reconstruct E(t) and G(t) from these fields.
The file makeFROG generates the FROG trace given column vectors of the fields E(t) & G(t).
The file svdexFROG extracts E(t) and G(t) from the complex FROG field (i.e. containing the phase information as well) via an SVD algorithm.
The file svdFROG iterates through the convergence algorithm to find E(t) & G(t) given a measured FROG trace.
Note that the time and frequency pxls must be Fourier transforms of each other, i.e. dt = 2*pi/(N*dw) where dt & dw are the temporal/spectral resolutions and N is the number of pixels.
Interpolation and noise removal is advised.
Trebino, R.; DeLong, K. W.; Fittinghoff, D. N.; Sweetser, J. N.; Krumbugel, M. A.; Richman, B. A. & Kane, D. J. Measuring ultrashort laser pulses in the time-frequency domain using frequency-resolved optical gating Review Of Scientific Instruments, 1997, 68, 3277-3295
Kane, D.; Inc, S. & Santa Fe, N. Real-time measurement of ultrashort laser pulses using principalcomponent generalized projections Selected Topics in Quantum Electronics, IEEE Journal of, 1998, 4, 278-284
I wrote my own program, starting with this one. (You can find it posted under the same title as this one). I found this program to be a nice starting point to use. I found plenty of room for improvements and additions, but I don't remember finding any bugs that would noticeably impact the results.
some lines of this program is not correct,
the fft in the makeFROG.m should be:
EF = fftshift(fft(fliplr(fftshift(EF,2)), , 1), 1);
anyway thanks, Great work.
Great work, thanks.
Wow! This code is awesome. This guy should be a member of SVD club, if he isn't already.
Added correct functions to zip file.
Inspired: Frequency-resolved optical gating (FROG)