The method of how to calculate the FWHM.

23 visualizaciones (últimos 30 días)
cheng wei
cheng wei el 11 de Dic. de 2024 a las 5:20
Respondida: Star Strider el 11 de Dic. de 2024 a las 16:29
I have searched extensively on this website and the internet, but all the methods for calculating the FWHM (Full Width at Half Maximum) seem overly complex. I was wondering: can we simplify this by using a cut_index on the X-axis to determine the corresponding Y-axis values?
My idea is that we could compute the FWHM using the formula:
FWHM=(max_Y_value - min_Y_value)/2
and display the result accordingly in the window.
BTW, my sample is just a very simple Gaussian curve.
Would this approach be possible or effective? I’d like to discuss this idea further with the community. Thank you!

Respuestas (2)

Torsten
Torsten el 11 de Dic. de 2024 a las 14:47
Editada: Torsten el 11 de Dic. de 2024 a las 14:59
xmax = 0;
ymax = 4;
x = xmax:0.01:3;
f = -x.^2 + ymax;
FWHM = 2*interp1(f,x,ymax/2)
FWHM = 2.8284
Or directly use the inverse function of your Gaussian curve and evaluate it at ymax/2.

Star Strider
Star Strider el 11 de Dic. de 2024 a las 16:29
A different approach —
x = linspace(0, 10);
y = exp(-(x-5).^2*0.25);
ymin = min(y)
ymin = 0.0019
[ymax,idx] = max(y - ymin)
ymax = 0.9974
idx = 50
halfmax = ymax/2;
for k = 1:2
idxrng = (1:idx) + idx*(k-1);
xhalf(k) = interp1(y(idxrng), x(idxrng), halfmax + ymin);
end
xhalf
xhalf = 1×2
3.3364 6.6636
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
FWHM = diff(xhalf)
FWHM = 3.3272
figure
plot(x, y)
hold on
plot(xhalf, [1 1]*(halfmax+ymin), 'rs')
hold off
grid
text(mean(xhalf), (halfmax+ymin), sprintf('\\leftarrow FWHM = %.3f \\rightarrow', FWHM), 'Horiz','center')
.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by