我正在使用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向量并得到了同样的错误。可能是什么问题?
答案 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
输出:
关于此问题可能值得联系The Mathworks。希望有所帮助!