The method of how to calculate the FWHM.

27 次查看(过去 30 天)
cheng wei
cheng wei 2024-12-11,5:20
回答: Star Strider 2024-12-11,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!

回答(2 个)

Torsten
Torsten 2024-12-11,14:47
编辑:Torsten 2024-12-11,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 2024-12-11,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