albeco / LaserPulse

LaserPulse is a class for storing and handling time-frequency pulses, like for example femtosecond laser pulses

Home Page:https://albeco.github.io/LaserPulse/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LaserPulse

LaserPulse is a class for storing and handling laser pulses. Pulses can be defined in either time or frequency domain. Both domains are automatically kept synchronized.

Functionalities:
  • 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.
  • Propagation through media: The effect of propagation through a transparent medium is supported via a 'medium' property and a 'propagate' method.
  • 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.
  • Nonlinear optics: The LaserPulse class makes it easy to simulate most populare pulse shaping and pulse compression techniques. The example files shows how to quickly simulate MIIPS, FROG, chirp scan and dispersion scan.
Requirements:

The LaserPulse class is tested on Matlab R2015a.

Installation:
  • Automatic Installation: From matlab: go to the folder where the LaserPulse is located (for example 'cd LaserPulseClass') and run the installer script 'install_LaserPulse.m'.
  • Manual Installation: For installing the LaserPulse class, just include its parent folder in the matlab search path or, alternatively, copy the '@LaserPulse' folder in a folder which is in the matlab search path. For using the additional utilities and example files, also add the 'utilities' and 'examples' folders to the matlab search path. If the folder with the LaserPulse manual is not present, generate it using the matlab 'publish' function. See 'install_LaserPulse.m' for an example.

Copyright (C) 2015-2019 Alberto Comin.

About

LaserPulse is a class for storing and handling time-frequency pulses, like for example femtosecond laser pulses

https://albeco.github.io/LaserPulse/

License:BSD 2-Clause "Simplified" License


Languages

Language:MATLAB 57.2%Language:HTML 42.8%