pseudo_voigt | R Documentation |
The Pseudo-Voigt function is an approximation for the Voigt function.
It is defined as a linear combination of the Gaussian and Lorentzian functions,
weighted by a mixing parameter \eta
(eta
) that determines the relative
contribution of each component.
pseudo_voigt(x, y0, xc, wG, wL, A, eta = NULL)
x |
A numeric vector representing the independent variable (e.g., wavelength or frequency). |
y0 |
A numeric value specifying the baseline offset. |
xc |
A numeric value representing the center of the peak. |
wG |
A numeric value specifying the Gaussian full width at half maximum (FWHM). |
wL |
A numeric value specifying the Lorentzian FWHM. |
A |
A numeric value representing the peak area. |
eta |
A numeric value between 0 and 1, representing the mixing parameter.
If |
The Pseudo-Voigt function is given by:
y = y_0 + A \cdot [ \eta \cdot L(x, x_c, w_L) + (1 - \eta) \cdot G(x, x_c, w_G)]
where:
A
is the peak area
y_0
is the baseline offset
G(x, x_c, w_G)
is the Gaussian component with center x_c
and the full width at half maximum w_G
L(x, x_c, w_G)
is the Lorentzian component with center x_c
and the full width at half maximum w_L
\eta
is the mixing parameter, with 0 \leq \eta \leq 1
. The
mixing parameter \eta
allows the pseudo-Voigt function to describe a wide
range of line shapes, from pure Gaussian (\eta = 0
) to pure Lorentzian (\eta = 1
),
and various intermediate shapes in between.
The Olivero and Longbothum (1977) approximation, and its subsequent refinements (Belafhal 2000; Zdunkowski et al. 2007), offer an efficient and accurate way (accuracy of 0.02%) to estimate the half-width of a Voigt line, which is given by:
w_v = \frac{1}{2} \cdot [c_1 \cdot w_L + \sqrt(c_2 \cdot w_L^2 + 4 \cdot w_G^2)]
with c_1 = 1.0692
, c_2 = 0.86639
A numeric vector of the same length as x
, containing the
computed pseudo-Voigt function values. If eta = NULL
, the function returns
a list with the following components:
$y
: A numeric vector of the same length as x
, containing the computed
pseudo-Voigt function values using the approximated mixing parameter.
$eta
: The approximate mixing parameter calculated using the polynomial
approximation based on the wG
and wL
values.
Zdunkowski, W., Trautmann, T., Bott, A., (2007). Radiation in the Atmosphere — A Course in Theoretical Meteorology. Cambridge University Press.
Belafhal, A., (2000). The shape of spectral lines: Widths and equivalent widths of the Voigt profile. Opt. Commun., 177(1-6):111–118.
Olivero, J., Longbothum, R., (1977). Empirical fits to the Voigt line width: A brief review. J. Quant. Spectrosc. Radiat. Transfer, 17(2):233–236.
Ida, T., Ando, M., Toraya, H., (2000). Extended pseudo-Voigt function for approximating the Voigt profile. Journal of Applied Crystallography. 33(6):1311–1316.
x <- seq(-2, 2, length.out = 100)
y1 <- pseudo_voigt(x, y0 = 0, xc = 0, wG = 1, wL = 0.5, A = 2, eta = 0)
y2 <- pseudo_voigt(x, y0 = 0, xc = 0, wG = 1, wL = 0.5, A = 2, eta = 0.5)
y3 <- pseudo_voigt(x, y0 = 0, xc = 0, wG = 1, wL = 0.5, A = 2, eta = 1)
y4 <- pseudo_voigt(x, y0 = 0, xc = 0, wG = 1, wL = 0.5, A = 2)
plot(x, y1, type = "l", col = "red", main = "Pseudo-Voigt Profile", ylim = c(0, 5.5))
lines(x, y2, col = "blue")
lines(x, y3, col = "green")
lines(x, y4$y, col = "black")
legend("topright", legend = c("eta = 1", "eta = 0.5", "eta = 0", "eta = NULL"),
col = c("red", "blue", "green", "black"), lty = 1)
# The approximated mixing parameter:
y4$eta
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.