MATLAB:findpeaks功能

时间:2015-02-28 12:41:21

标签: matlab

我正在使用MATLAB 2013a并尝试查找数据的峰值点。当我尝试给出的代码示例时 Find Peaks with Minimum Separation

我收到以下错误:

Error using uddpvparse (line 122)
Invalid Parameter/Value pairs.

Error in findpeaks>parse_inputs (line 84)
hopts = uddpvparse('dspopts.findpeaks',varargin{:});

Error in findpeaks (line 59)
[X,Ph,Pd,Th,Np,Str,infIdx] = parse_inputs(X,varargin{:});

我尝试了简单的x和y向量并得到了同样的错误。可能是什么问题?

1 个答案:

答案 0 :(得分:2)

我和Mathworks的例子有同样的问题(OSX上的R2013a)。出于某种原因,似乎我们不能将findpeaks与x和y数据一起用作输入参数。我们需要使用y数据调用函数并使用[peaks,locations]输出来获取峰值/绘制它们。

看起来在R2014b中他们改变了一些关于findpeaks的东西,这些东西对旧版本不起作用...就像在R2014b中调用没有输出参数的函数一样,没有任何额外的数据/峰值步骤...但它不适用于早期版本。

无论如何,这是一种解决问题的方法。使用单个输入参数调用findpeaks(y数据,也可以使用属性/值对)并使用索引(位置)显示峰值:

clc
clear

load sunspot.dat

year = sunspot(:,1);
avSpots = sunspot(:,2);


[peaks, locations] = findpeaks(avSpots)

plot(year,avSpots)

hold on

scatter(year(locations),avSpots(locations),40,'filled')
hold off

输出:

enter image description here

关于此问题可能值得联系The Mathworks。希望有所帮助!