用于一些"大数据"处理。当绘制时,我的数据是符号波状的,但具有随机峰值。(想象一下,将每个矩阵位置的值与其位置进行对比(
我知道如何找到峰值,但我需要一种方法来找到峰值两侧的局部极小值和矩阵中的位置。例如,如果数据是:
3 2 1 0 1 2 3 7-4-5-6-5-4 0
我需要的函数会返回如下内容:min,loc=[0,-6;4,11]
如果您有权访问R2017b或更高版本,请检查islocalmax和islocalmin函数。
MATLAB R2007a及更新版本有一个名为findpeaks
的函数(需要信号处理工具箱(。您要查找的语法是
[pks,locs] = findpeaks(data)
具体而言,
>> [pks,locs] = findpeaks(-[3 2 1 0 1 2 3 7 -4 -5 -6 -5 -4 0]) % note it's "-[data]"
pks =
0 6
locs =
4 11
减号是因为我们想要的是"谷"而不是"峰",所以请确保之后不要忘记否定pks
。