Comparison of different modulation functions
This example demonstrates the advantage of using a cubic pseudo-sinusoid as modulation function for MIIPS. The accuracy of the phase retrieval is improved because, with respect to the sin function, the pseudo-sinusoid does not contain orders higher than the third in its Taylor expansion (see A.Comin, sumbitted paper).
Contents
Set up chirped Gaussian pulse
p = gaussianPulse('f0',300/800, 'fwhm', 10, 'units', 'fs', 'dt', 0.5); GDD = 500; % fs^2 TOD = 0e4; % fs^3 FOD = 0e5; % fs^4 FTOD = 0000; % fs^5 p.polynomialPhase([ FTOD FOD TOD GDD 0 0])
Simulate Gmiips
maxGDD = 2000; % fs^2 tau = 10; amp = maxGDD/tau^2; phasesteps = linspace(-2*pi, 2*pi, 500); % using normal sin function m1 = Gmiips(p, amp, tau, phasesteps, 'gateWidth', [], ... 'modulationFunction', 'sin'); m1.notes = 'sin'; % using a pseudo-sinusoid m2 = Gmiips(p, amp*1.15, tau, phasesteps, 'gateWidth', [], ... 'modulationFunction', 'bsin'); m2.notes = 'bsin'; % using another pseudo-sinusoid m3 = Gmiips(p, amp, tau, phasesteps, 'gateWidth', [], ... 'modulationFunction', 'psin'); m3.notes = 'psin';
Plot results
figure(1) subplot(2,1,1) plot(2*pi*p.frequencyArray, m1.retrievedPhase, 'b', ... 2*pi*p.frequencyArray, m2.retrievedPhase, 'r', ... 2*pi*p.frequencyArray, m3.retrievedPhase, 'g', ... 2*pi*p.frequencyArray, p.spectralPhase, 'k--'); legend(m1.notes, m2.notes, m3.notes) xlim([-1,1]*2*pi*p.bandwidth+2*pi*p.centralFrequency) xlabel(['\omega (rad / ', p.timeUnits, ')']) ylabel('spectral phase (rad)') title('Phase Retrieval') subplot(2,1,2) plot(2*pi*p.frequencyArray, m1.retrievedPhase-p.spectralPhase, 'b', ... 2*pi*p.frequencyArray, m2.retrievedPhase-p.spectralPhase, 'r',... 2*pi*p.frequencyArray, m3.retrievedPhase-p.spectralPhase, 'g'); legend(m1.notes, m2.notes, m3.notes) xlim([-1,1]*2*pi*p.bandwidth+2*pi*p.centralFrequency) xlabel(['\omega (rad / ', p.timeUnits, ')']) ylabel('spectral phase (rad)') title('Phase Error')
