Я пытаюсь получить x-координаты пиков в фигуре MATLAB (пример прилагается). Я использовал findpeaks
, но мне не нравится тот факт, что я рисую точки, а не линии.
У меня не всегда будет два пика. Иногда у меня будет три, иногда одна. Множественные пики всегда будут разделены по крайней мере 1/4 диапазона x, а пики всегда будут как минимум в два раза превышать уровень шума.
Вот что я ожидаю, будет работать:
[pks,locs] = findpeaks(yData,...
'SortStr','descend',...
'MinPeakDistance',floor(range(xData)/4),...
'MinPeakHeight',floor(max(yData)/2)...
)
Вместо того, чтобы получить два пика, я получаю четыре, связанных вокруг первого пика:
>> locs
locs =
6774 166785 326792 486799
>> xData(locs)
ans =
-96780.787939025 -96770.1800919265
-96770.8959353367 -96771.6117787468
Я предполагаю, что MinPeakDistance работает с индексами xData, а не с самими данными. Как заставить его использовать расстояния между пиками вместо расстояния между индексами пиков?