2017-07-18 93 views
0

我有一個數組在matlab中的數據。我想查找峯值,但遇到下圖中顯示的以下問題。在平坦區域的matlab中找到峯值

要生成峯並繪製他們,我用下面的代碼:

gyryMF = medfilt1(gyry, 3); 
[pks, gyryPeaks] = findpeaks(gyryMF); 
%% 
plot(gyryMF); 
text(gyryPeaks+.02,pks,num2str((1:numel(pks))')); 

Picture

正如你從圖片中看到,一些山峯沒有發現,因爲有一個平坦區域。我想知道我是否能找到幷包含它們?

+0

你指的是哪個高峯?在大約1.934的峯值不是一個峯值,但它可能是一個零導數的點。您可以嘗試使用基於'find(abs(diff(gyryMF))<0.1))'的方法。 – Zep

回答

0

如何用自己的標準編寫自己的峯值函數?

peak_no = []

ind_peak_no = []

如果數據(X)<數據(x + 1)& &數據(x + 1)>數據(X + 2)& &數據(x + 1)> Peak_min
peak_no = [peak_no; Data(x + 1)];
ind_peak_no = [ind_peak_no; X + 1];
結束