200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 如何用matlab找出一组离散数据中的峰值

如何用matlab找出一组离散数据中的峰值

时间:2021-12-04 13:14:32

相关推荐

如何用matlab找出一组离散数据中的峰值

如何用matlab找出一组离散数据中的峰值

对于一组离散数据,我们经常需要找出其中的峰值,如下一组离散数据:

x = [1 2 3 4 3 2 1 5 8 9 17 12 11 5 3 2 1 7 1]

为了更直观显示,画出数组x的图。可以看出共有三个峰值,有两个问题:

1、如何找出所有的峰值

这个比较简单,使用matlab中的函数

[num loc] = findpeaks(x)

便可以轻松搞定,其中num找出的所有峰值,loc为峰值对应的位置。

2、如何找出峰值里面最大的两个呢

我们已经找出的所有峰值点是一个二维数组,一维是峰值数据,另一维是峰值数据对应的位置。因此我们主要对这个二维数据进行操作。

简而言之,便是从找出的峰值数组中使用max函数找出第一组最大的峰值及其位置,这样便完成了最大的峰值寻找,包括其数据和位置。

然后在所有峰值点组成的二维数组中,将最大峰值覆盖为一个很小的数值,使得不影响对第二大峰值的寻找。

接下来,再次使用max函数在剩下的峰值中寻找最大值,找出第二大峰值数据,及其对应的位置。

总的代码如下

clear allclose allclc%%x = [1 2 3 4 3 2 1 5 8 9 17 12 11 5 3 2 1 7 1] %需要找出两个最大峰值的数据,数据中共有三个峰值plot(x)[num loc] = findpeaks(x)%寻找出全部峰值[a_num,a_loc] = max(num)%在全部峰值里面找出最大的一个a_num,包含其位置a_loclocation_in_x_1 = loc(a_loc) %最大的峰值对应的位置num(a_loc) = 0%在找出的全部峰值数组中,将最大的峰值赋值为0num_del_max = num[b_num,b_loc] = max(num)%找剩下的峰值中的最大值location_in_x_2 = loc(b_loc) %找第二大的峰值对应的位置

仿真结果

x =

1234321589 17 12 11532171

num =

4 177

loc =

4 11 18

a_num =

17

a_loc =

2

location_in_x_1 =

11

num =

407

num_del_max =

407

b_num =

7

b_loc =

3

location_in_x_2 =

18

拿着代码跑一下,你就什么都明白啦!

再送你一套写论文神器,让你 不再因为敲公式而烦恼!

神器

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。