下标索引必须是实正整数或逻辑数。在MatLab中使用findpeaks

下标索引必须是实正整数或逻辑数。在MatLab中使用findpeaks,matlab,data-analysis,Matlab,Data Analysis,我一直在使用MatLab中的findpeaks来定位波形的最大和最小点,没有问题,但在过去20分钟左右的时间里,错误: ???下标索引必须是实正整数或逻辑数 出现了一个我不知道为什么。即使尝试使用测试数据进行简单的练习也会导致同样的错误。例如,如果我有数据集: test = [ 0.1 0.5 0.9 0.5 0.2 0.6 1.0 0.7 0.3 0.1 ] 并使用代码: peaks = test(findpeaks(test)); 我希望结果是: peaks = [0.1 0.9 0.2

我一直在使用MatLab中的findpeaks来定位波形的最大和最小点,没有问题,但在过去20分钟左右的时间里,错误:

???下标索引必须是实正整数或逻辑数

出现了一个我不知道为什么。即使尝试使用测试数据进行简单的练习也会导致同样的错误。例如,如果我有数据集:

test = [ 0.1 0.5 0.9 0.5 0.2 0.6 1.0 0.7 0.3 0.1 ]
并使用代码:

peaks = test(findpeaks(test));
我希望结果是:

peaks = [0.1 0.9 0.2 1.0 0.1 ]
但出于某种原因,情况不再如此

请告知。

返回峰值,而不是其指数。试试这个

peaks=findpeaks(test)
如果你想找到局部极小值

peaks = [findpeaks(test) -findpeaks(-test)]

感谢您的快速响应,但是如果我需要最小值和峰值,我应该添加什么?@Jazibobs:添加到我的答案中。您的代码找到的最小值不正确。可能有语法错误吗?FindPeak实际上可以使用语法
[peaks-peak\u index]=FindPeak(test)
返回峰值的索引。