AngularSpectrumMethod

Documentation for AngularSpectrumMethod.

AngularSpectrumMethod.ASM!Method
ASM!(u, λ, Δx, Δy, z; expand=true)

Same as ASM, but operates in-place on u, which must be an array of complex floating-point numbers.

AngularSpectrumMethod.ASMMethod
ASM(u, λ, Δx, Δy, z; expand=true)

return diffracted field by the angular spectrum method (ASM). Evanescent waves are not eliminated but attenuated as $\exp(-2{\pi}wz)$. Without attenuation, the total energy $\iint|u|\mathrm{d}x\mathrm{d}y$ is conserved.

Arguments

  • u: input field.
  • λ: wavelength.
  • Δx: sampling interval the in x-axis.
  • Δy: sampling interval the in y-axis.
  • z: diffraction distance.
  • expand=true: if true (default), perform 4× expansion and zero padding for aliasing suppression.
Note

The x-axis is the horizontal direction, and the y-axis is the vertical.

AngularSpectrumMethod.BandLimitedASM!Method
BandLimitedASM!(u, λ, Δx, Δy, z; expand=true)

Same as BandLimitedASM, but operates in-place on u, which must be an array of complex floating-point numbers.

AngularSpectrumMethod.ScalableASM!Method
ScalableASM!(u, λ, Δx, Δy, z; expand=true)

Same as ScalableASM, but operates in-place on u, which must be an array of complex floating-point numbers.

AngularSpectrumMethod.ScalableASMMethod
ScalableASM(u, λ, Δx, Δy, z; expand=true)

return automatically scaled diffraction field by the scalable ASM (see Ref. 1). The sampling pitch in the destination plane $\Delta_{d}$ is $\Delta_{d}=\dfrac{\lambda z}{pN\Delta_{s}}$, where $\Delta_{s}$ is the sampling pitch in the source plane, $N$ is the number of pixels in the source or destination plane, and $p=2$ is the padding factor.

  1. Rainer Heintzmann, Lars Loetgering, and Felix Wechsler, "Scalable angular spectrum propagation," Optica 10, 1407-1416 (2023)
AngularSpectrumMethod.ScaledASM!Method
ScaledASM!(u, λ, Δx, Δy, z, R; expand=true)

Same as ScaledASM, but operates in-place on u, which must be an array of complex floating-point numbers.

AngularSpectrumMethod.ShiftedASM!Method
ShiftedASM!(u, λ, Δx, Δy, z, x₀, y₀; expand=true)

Same as ShiftedASM, but operates in-place on u, which must be an array of complex floating-point numbers.

AngularSpectrumMethod.TiltedASM!Method
TiltedASM!(u, λ, Δx, Δy, T; expand=true, weight=false)

Same as TiltedASM, but operates in-place on u, which must be an array of complex floating-point numbers.

AngularSpectrumMethod.TiltedASMMethod
TiltedASM(u, λ, Δx, Δy, T; expand=true, weight=false)

return tilted diffraction field for a rotation matrix $T$ by the tilted ASM (see Ref. 1, 2). If weight=true, a diagonal weighting matrix is used as the Jacobian determinant (default false). In this case, the energy conservation improves, but the computational cost is high (see Ref. 3).

Note

Rotations.jl is helpful in generating rotation matrices.

  1. Kyoji Matsushima, Hagen Schimmel, and Frank Wyrowski, "Fast calculation method for optical diffraction on tilted planes by use of the angular spectrum of plane waves," J. Opt. Soc. Am. A 20, 1755-1762 (2003)
  2. Kyoji Matsushima, "Formulation of the rotational transformation of wave fields and their application to digital holography," Appl. Opt. 47, D110-D116 (2008)
  3. James G. Pipe and Padmanabhan Menon, "Sampling density compensation in MRI: Rationale and an iterative numerical solution," Magn. Reson. Med. 41, 179-186 (1999)