MATLAB: Calculate FWHM and area of multiple peak

plot

Hi, I have a graph that contains multiple peaks, I want to calculate the area of the peak and FWHM of each peak. I want to use the formula, Area = Height * FWHM.
In Matlab is there any default function to calculate FWHM and area. The curves are magnitude diagrams in the log scale. If I plot in linear scale the power of peak is near to zero. When I use the function to find peaks
[pks,locs,widths,proms] = findpeaks(x,y);
it gives 1×0 empty double row vector. Is it right way to calculate area from log scale graph? Any suggestions from anyone. Thank in advance.

Best Answer

‘... it gives 1×0 empty double row vector.’
That is most likely because the dependent variable vector (is this ‘y’ in your code?) must be the first argument to findpeaks (link).
Try this instead:
[pks,locs,widths,proms] = findpeaks(y,x);
or preferably, just return the indices of the peaks in the ‘locs’ output with:
[pks,locs,widths,proms] = findpeaks(y);
I find the indices easier to work with.