Eample of nonlinear mixing

Within the LaserPulse class, by default multiplications and divisions between pulses are done in the time domain. Multiplying two pulses then gives the sum-frequency signal. The difference frequency is obtained by multiplying the first pulse by the complex conjugate of the second.

Contents

First laser pulse

Let us define a 10fs Gaussian pulse centered at 0.4 PHz (750 nm)

% parameters
n = 2^12; dt = 0.1; s = 10; t0 = 10; f0 = 0.4;
t = (-n/2:n/2-1).' * dt;
et = exp(-(t-t0).^2/s^2 -2i*pi*t*f0);
% pulse initialization
p1 = LaserPulse(t, 'fs', et);

Second laser pulse

Now let us a define a second pulse centered at a different frequency: 0.6 PHz (500 nm)

% modified parameters
f0 = 0.6;
et2 = exp(-(t).^2/(s/2)^2 -2i*pi*t*f0);
% pulse initialization
p2 = LaserPulse(t, 'fs', et2);

Sum Frequency

The sum frequency can be obtained by simple multiplication.

psf = p1 * p2 ;

Difference Frequency

The frequency difference can be obtained by multiplying the first pulse with the complex conjugate of the second.

pdf = p2 * conj(p1);

Plot pulses

figure()
subplot(2,1,1)
plot(p1.timeArray,p1.temporalAmplitude, ...
  p2.timeArray, p2.temporalAmplitude, ...
  psf.timeArray, psf.temporalAmplitude, ...
  pdf.timeArray, pdf.temporalAmplitude,'--', ...
  'LineWidth', 1.5);
xlabel(['time (', p1.timeUnits, ')']);
ylabel('abs(Et)');
legend('p1','p2','p1.*p2', 'p2.*conj(p1)', 'location','best');
axis([-50 50 -0.02 1.1]);

subplot(2,1,2)
plot(p1.frequencyArray,p1.spectralAmplitude, ...
  p2.frequencyArray, p2.spectralAmplitude, ...
  psf.frequencyArray, psf.spectralAmplitude, ...
  pdf.frequencyArray, pdf.spectralAmplitude,'--', ...
  'LineWidth', 1.5);
xlabel(['frequency (', p1.frequencyUnits, ')']);
ylabel('abs(Ef)');
legend('f1','f2','f1+f2','f2-f1', 'location','best');
axis([0 1.5 -0.2 18])