寻找局部最小值和局部最大值

时间:2015-02-17 11:20:26

标签: matlab vector linear-algebra

我想找到给定矢量的局部最小值和局部最大值。让我们假设给定的向量如下:

speed =

0.0002
0.0008
0.0014
0.0027
0.0037
0.0047
0.0054
0.0053
0.0053
0.0058
0.0060
0.0063
0.0062
0.0065
0.0062
0.0061
0.0060
0.0057
0.0062
0.0057
0.0053
0.0050
0.0047
0.0065
0.0049
0.0048
0.0033
0.0033
0.0041
0.0049
0.0063
0.0075
0.0085
0.0105
0.0108
0.0109
0.0105
0.0105
0.0099
0.0098
0.0099
0.0099
0.0105
0.0103
0.0112
0.0108
0.0088
0.0079
0.0066
0.0055
0.0058
0.0049
0.0049
0.0055
0.0060
0.0051
0.0055
0.0060
0.0053
0.0047
0.0058
0.0050
0.0044
0.0033
0.0022
0.0008
0.0015
0.0010
0.0011
0.0024
0.0028
0.0024
0.0016
0.0009
0.0009
0.0009
0.0015
0.0015
0.0025
0.0031
0.0030
0.0042
0.0051
0.0060
0.0065
0.0054
0.0012
0.0043
0.0059
0.0070
0.0078
0.0076
0.0082
0.0087
0.0088
0.0095
0.0101
0.0100
0.0110
0.0103
0.0111
0.0120
0.0118
0.0116
0.0115
0.0121
0.0120
0.0145
0.0107
0.0119
0.0110
0.0116
0.0102
0.0086
0.0076
0.0071
0.0055
0.0066
0.0063
0.0077
0.0052
0.0059
0.0061
0.0036
0.0047
0.0053
0.0027
0.0020
0.0011
0.0041
0.0034
0.0034
0.0019
0.0022
0.0008
0.0001
0.0007
0.0009
0.0010
0.0010
0.0001
0.0007
0.0014
0.0016
0.0016
0.0013
0.0008
0.0008
0.0005
0.0004
0.0002
0.0001
0.0004
0.0005
0.0006
0.0005
0.0006
0.0006
0.0004
0.0002
0.0000
0.0001
0.0001
0.0002
0.0003
0.0004
0.0004
0.0005
0.0007
0.0008
0.0007
0.0006
0.0005
0.0006
0.0006
0.0004
0.0002
0.0003
0.0006
0.0005
0.0005
0.0010
0.0012
0.0014
0.0020
0.0028
0.0039
0.0044
0.0061
0.0074
0.0082
0.0091
0.0102
0.0108
0.0110
0.0117
0.0128
0.0133
0.0148
0.0153
0.0155
0.0150
0.0146
0.0137
0.0130
0.0113
0.0110
0.0107
0.0112
0.0114
0.0113
0.0104
0.0101
0.0095
0.0088
0.0083
0.0076
0.0057
0.0047
0.0043
0.0046
0.0053
0.0063
0.0078
0.0070
0.0062
0.0053
0.0051
0.0055
0.0048
0.0053
0.0052
0.0055
0.0065
0.0075
0.0078
0.0081
0.0067
0.0044
0.0061
0.0047
0.0032
0.0033
0.0028
0.0019
0.0007
0.0017
0.0016
0.0025
0.0034
0.0037
0.0044
0.0039
0.0037
0.0029
0.0030
0.0025
0.0022
0.0025
0.0027
0.0028
0.0031
0.0029
0.0025
0.0025
0.0025
0.0024
0.0022
0.0021
0.0019
0.0020
0.0020
0.0016
0.0016
0.0015
0.0013
0.0011
0.0011
0.0010
0.0009
0.0008
0.0006
0.0005
0.0004
0.0002
0.0000
0.0002
0.0003
0.0004
0.0006
0.0005
0.0004
0.0003
0.0004
0.0003
0.0003
0.0004
0.0006
0.0004
0.0004

当我使用命令plot(speed)在Matlab中对此向量进行策略时,我得到下图:

illustration

我怎样才能找到给定矢量的最大值和最小值?例如,在上面的图片中,我的目标是找到图片中显示的三个最小值/最大值。 我有很多这样的向量,我想为所有人编写代码以找到局部最小值和最大值。

1 个答案:

答案 0 :(得分:2)

首先,您需要定义您认为的极值(最大值或最小值),即哪个刻度被认为是合适的,因为您的曲线实际上具有比3或4更多的局部最大值和最小值。因此寻找零 - 一阶导数与diff的交叉将给你很多虚假的微峰。一种选择是先平滑它。但是,使用标准工具可能更容易。

从信号处理工具箱中尝试findpeaks

您可以使用各种参数指定比例,例如'MinPeakDistance''MinPeakHeight''Threshold'等。

相关问题