Скажем, у вас есть индексы пиков, а затем для их подсчета вам придется их сегментировать. Это легче всего сделать, взяв разницу между индексами, а затем применив некоторый порог минимального расстояния между каждым пиком.
peaks = unique([randi([100,110],1,randi(10)),randi([150,160],1,randi(10)),randi([210,220],1,randi(10))]); %Create some peaks
thresh = 20; %Set a threshold
nextPeak = diff([-inf,peaks])>thresh; % Find peak seperators
Если вас интересует количество пиков, вы можете просто посчитать количество разделителей, например,
NumPeaks = sum(nextPeak);
Если вас интересует расположение пиков, вам нужно будет решить, как определить «пик», является ли он центральной точкой пика или максимальным значением, например, e.t.c.?
Во всех случаях вам придется пробежаться по количеству пиков
nextPeakIdx = [find(nextPeak),length(peaks)+1];
for i = 1:length(nextPeakIdx)-1
peakIdx = peaks(nextPeakIdx(i):(nextPeakIdx(i+1)-1));
%Decide which index to keep
end