在Matlab中找到关于矩阵最大值最大值两侧的局部最小值

时间:2018-11-14 13:49:23

标签: matlab max min minima

用于某些“大数据”处理。绘制时,我的数据像符号波一样,但具有随机峰值。 (因此,想象将每个矩阵位置的值相对于它的位置作图)

我知道如何找到峰值,但是我需要一种方法来找到峰值任一侧的局部最小值和矩阵中的位置。例如,如果数据为:

3 2 1 0 1 2 3 7 -4 -5 -6 -5 -4 0

我需要的函数将返回类似:min,loc = [0,-6; 4,11]

2 个答案:

答案 0 :(得分:2)

如果您有权访问R2017b或更高版本,请签出islocalmaxislocalmin函数。

答案 1 :(得分:2)

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