LaserPulse is a Matlab class for streamlining simulations in nonlinear and ultrafast optics. It allows to store pulses in a convenient way, analyze them and perform simple mathematical operations.
- Automatic Fourier Transform: When a pulse is modified in time domain the spectral field is automatically updated using fft, and vice versa.
- Physical Quantities: Pulse duration, bandwidth, central frequency, and other properties of the pulse are automatically calculated.
- Mathematical Operators: The LaserPulse class supports arithmetic operations, convolutions and calculation of higher harmonics. By default the operators are applied in time domain, so for instance p1*p2 is a multiplication in time domain and a convolution in frequency domain. See the example files for more information.
- Pulse Trains: A LaserPulse object can contain multiple sub-pulses. Pulse parameters, like central frequency and bandwidth, are calculated from the average pulse intensity, as they would be measured using a slow detector. This functionality can be useful for simulating pulse trains generated by high repetition rate laser sources, for which the individual pulses often cannot be measured individually.
A concise user guide with example code can be found here.