How to find the locations or indices of lower and upper ends of FWHM of a peak
조회 수: 2(최근 30일)
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.
Simon Chan 2021년 7월 14일
편집: Simon Chan 2021년 7월 14일
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)