The method of how to calculate the FWHM.

23 vues (au cours des 30 derniers jours)
cheng wei
cheng wei le 11 Déc 2024 à 5:20
Réponse apportée : Star Strider le 11 Déc 2024 à 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!

Réponses (2)

Torsten
Torsten le 11 Déc 2024 à 14:47
Modifié(e) : Torsten le 11 Déc 2024 à 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 le 11 Déc 2024 à 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