MATLAB: How to Measuring Peak Widths

calciumpeak widthpeaks

Hi,
New to Matlab and thought I'd try measuring peak width from Calcium transits in beating cardiomyocytes. I've succedded in finding peak heights and making a graph which displays the peak widths (see attached figure)
This may sound simple, but how can I generate a numerical integer, or table which provides the widths of each peak. Ideally, I would use this to find the peaks (i.e., intensity), and widths (i.e., duration) of calcium transits in multiple cell lines. A bonus would be to measure the time at 90% return to baseline.
Thanks for the help.

Best Answer

I believe findpeaks function can do that task. The following is an example:
% Load sample data
load sunsplot.dat;
% Define x and y
x = sunspot(:,1);
y = sunspot(:,2);
% Apply findpeaks function and obtain Peaks, Locations, and Width
[pk,loc,w] = findpeaks(y,x,'MinPeakProminence',20);
% Arrange them as a table
T = table(loc,pk,w,'VariableNames',{'Location','PeakHeight','Width'});
>> T
T =
26×3 table
Location PeakHeight Width
________ __________ ______
1705 58 2.2599
1717 63 3.6818
1727 122 3.747
1738 111 4.7879
... ... ...