How to find the locations or indices of lower and upper ends of FWHM of a peak
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Vinay Killamsetty
el 14 de Jul. de 2021
Comentada: Simon Chan
el 14 de Jul. de 2021
How to find the locations and Index of lower and upper limit of FWHM of the largest peak shown in the pic below
Whn I use findpeaks function I am able to get the FWHM but I find it hard to get the location/index of the upper and lower limits of the FWHM
since there exists another peak in the range having a peak value above the half maximum of the main peak.
0 comentarios
Respuesta aceptada
Simon Chan
el 14 de Jul. de 2021
Editada: Simon Chan
el 14 de Jul. de 2021
Suppose y is the data, try this:
You may change the interpolation method, mine is only an example.
The location of the limits on the left side is between idx1 & idx1+1,
while on the right side, it is between idx2-1 & idx2.
[~,location] = max(y);
yn = y/max(y); % Normalized data
idx1 = location - find(diff(yn(location:-1:1)>0.5)~=0,1,'first');
idx2 = location + find(diff(yn(location:1:end)>0.5)~=0,1,'first');
xaxis_left = interp1([yn(idx1), yn(idx1+1)], [x(idx1), x(idx1+1)], [yn(idx1), 0.5, yn(idx1+1)], 'linear');
xaxis_right = interp1([yn(idx2-1), yn(idx2)], [x(idx2-1), x(idx2)], [yn(idx2-1), 0.5, yn(idx2)], 'linear');
FWHM = xaxis_right(2) - xaxis_left(2)
2 comentarios
Simon Chan
el 14 de Jul. de 2021
Try this:
idx3 and idx4 are the minimum points on the left and right side respectively.
Hope it helps
idx3 = location - find(diff(yn(location:-1:1))>0,1,'first') + 1;
idx4 = location + find(diff(yn(location:1:end))>0,1,'first') - 1;
Más respuestas (1)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!