如何用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 all
close all
clc
%%
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_loc
location_in_x_1 = loc(a_loc)                      %最大的峰值对应的位置
num(a_loc) = 0                                    %在找出的全部峰值数组中,将最大的峰值赋值为0
num_del_max = num
[b_num,b_loc] = max(num)                          %找剩下的峰值中的最大值
location_in_x_2 = loc(b_loc)                      %找第二大的峰值对应的位置

仿真结果

x =

 1     2     3     4     3     2     1     5     8     9    17    12    11     5     3     2     1     7     1

num =

 4    17     7

loc =

 4    11    18

a_num =

17

a_loc =

 2

location_in_x_1 =

11

num =

 4     0     7

num_del_max =

 4     0     7

b_num =

 7

b_loc =

 3

location_in_x_2 =

18

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

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

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

  1. Excel表格中如何找出并替换数据中某一固定范围内的值(包括空值)

    Excel表格中如何找出并替换数据中某一固定范围内的值(包括空值) 一.问题介绍 二.方法介绍 1.选中数据 2.按住Ctrl+H键,调出替换窗口 3.输入 " * ",并点击查找 ...

  2. Excel 中如何找出两列数据中不重复的记录

    现在有两列数据,要在 A 列中找出 B 列中没有的记录,在 B 列中找出 A 列中没有的记录.现在和大家分享一下这个方法. 我们先用一个简单的例子看一下.现在有两列数据,可以是分别在不同的数据单(sh ...

  3. MATLAB找出二维数组中最接近某个数的n个数

    clear;clc; % 找出数组A中最接近b的n个数,一维二维通用 A=round(100*rand(10)); % 要找的数组 AA=A(:); b=20; % 要接近的数 n=20; % 要找的 ...

  4. matlab找出二维矩阵中最大值的位置或者最小值的位置

    matlab寻找最大值或者最小值是通过max和min命令 对应二维矩阵寻找最大元素就是max(max(A)),注意二维矩阵要写两个max 找对应位置用find函数 举个例子: >> A=[ ...

  5. 【正则表达式测试工具】使用正则表达式快速找出两列数据中不同的行

    例如像下面的这样的一堆海量数据(已省略部分),可能有几千组,在不编程的情况下如何快速找到不同的行?可能excel有办法,但是处理起来应该没我这样方便的. b_start b_end 100790 10 ...

  6. Excel中如何找出两列数据中相同的数据,并且进行同行显示

    使用VLOOKUP方法即可. =VLOOKUP(A2,Sheet1!B:C,1,0)的含义是: 在sheet1工作表的B:C区域的首列中查找等于a2的值,找到后,返回该区域的同行的值.最后的参数0表示 ...

  7. 如何用Python找出英语和汉语中特定词性的单词

    在绘制词云图时,我们有时需要找到特定词性的单词,便云图显示更加精准,本文通过jieba(结巴)库中的posseg和nltk中pos_tag分别对汉英两种字符进行分词.标准,再利用列表表达式进行特定词性 ...

  8. 用matlab处理表格,matlab删除excel表格数据-如何用matlab处理多个excel表格中的数据...

    如何用matlab处理多个excel表格中的数据 biao='D:\Program Files\matlab\bin\filename.xls'; A1=xlsread (biao,'Sheet1', ...

  9. matlab 中 t=0:t:(n-1)t;k=0:n-1,如何用matlab画出单位脉响应h(n)=sin(n

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:如何用matlab画出单位脉响应h(n)=sin(n回答:n=1:50;%可根据需求调整范围 h(n)=sin(n-10)/(n-1 ...

最新文章

  1. Python3 函数function
  2. django forms 错误处理
  3. OpenCV制作自己的线性滤波器
  4. 使用C#把Tensorflow训练的.pb文件用在生产环境
  5. Win7下使用toad连接oracle出现can't initialize OCI -1
  6. 帮助你的上司达成目标
  7. java字符串_Java字符串
  8. 汇客huikeCRM项目实战-牛刀小试
  9. sin(ωt),一文和正弦函数、频域、周期的头疼说白白
  10. Redis相关面试题
  11. 数据科学家也良莠不齐 蹩脚数据科学家的10个迹象
  12. timestamp与datetime的对比
  13. 外卖也智能!美团骑手智能助手的技术与实践
  14. Java身份证处理工具
  15. python爬山算法
  16. JavaScript中的join() 方法
  17. 基于JAVA机票预定系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  18. 现代笑话二则:1、马尾辫同学;2、辣椒惹的祸。
  19. 计算机密码学试题,现代密码学试卷(含答案)
  20. 软考高级 真题 2015年上半年 信息系统项目管理师 论文

热门文章

  1. 视频播放 - 1001错误
  2. Linux上端口没被占用却报错,【linux】80端口被占用了吗
  3. 产品人员给售前/售后支持和销售人员培训
  4. WiFi的一些连接信息
  5. NaN是什么?NaN == NaN吗?
  6. [无人机航拍全景]飞拍无人机航拍市郊湿地
  7. C/C++求绝对值函数abs()在vs与dev中的差异
  8. Https数字证书交换过程介绍
  9. 腾讯云如何将域名绑定服务器?
  10. plt.plot()详解