我試圖在MATLAB圖中獲得峯值的x座標(附帶示例)。我一直在使用findpeaks
,但似乎並不喜歡我在繪製點而不是線條的事實。在MATLAB中使用findpeaks和minpeakdistance查找由距離而不是索引分隔的峯值
我不會總是有兩個高峯。有時我會有三個,有時我會有一個。多個峯值將始終至少相隔x的範圍的1/4,並且峯值始終至少是噪聲水平的兩倍。
這裏就是我希望將工作:
[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索引中而不是數據本身。我如何獲得它使用峯值之間的距離而不是峯值之間的距離?
所以,如果我的指數都搞砸了(也就是'6774 166785 326792 486799'都在同一個xData中),我需要在找到峯值之前將我的xData排序爲有序索引,然後找到峯值,然後將我的有序索引映射回原始索引? –
是的。查找峯值返回索引,您需要找到一種方法根據您的x座標來解釋它們。 – Molly