如何用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. Python的库和资源
  2. 关键字提取_SEO怎么做?从排名和关键字优化入手
  3. python读取指定字节长度的文本
  4. AIX 下磁盘 I/O 性能分析
  5. 前端知识点总结---面试专用
  6. 单调栈 leetcode整理(一)
  7. 2019胡润女企业家榜公布:碧桂园杨惠妍继续领跑
  8. mysql 性能 索引怎么用_MySQL索引使用方法和性能優化
  9. 安全服务,从“被动应对”到“主动防范”
  10. Hive窗口函数经典案例(保姆级案例)
  11. PowerDesigner 逆向工程 Could not Initialize JavaVM!
  12. 计算机硬盘常用分区工具,三款好用的磁盘分区工具推荐
  13. hash函数(哈希表)
  14. 解决matlab2019b中文乱码问题
  15. 遗传算法(二 )——通用框架
  16. 电镀面积计算机公式,教你正确的计算电镀中施镀面积方法。
  17. LiveZilla 详细 配置 设置 (二) 安装 LiveZilla
  18. iDB-数据库自动化运维平台
  19. java delight 咖啡是什么意思_各种咖啡的含义是什么?
  20. 计算机硬件——显示器原理

热门文章

  1. 视频涂鸦怎么弄?视频涂鸦用什么软件?
  2. 【SA8295P 源码分析】14 - Passthrough配置文件 /mnt/vm/images/linux-la.config 内容分析
  3. Ubuntu18.04安装docker (阿里云镜像)
  4. ExtJS 动态设置Grid列是否可编辑
  5. redis分布式缓存应用—五大数据类型:key/String/Hash/List/Set/Zset,配置文件redis.conf解析
  6. pythonforandroid下载中文_通过python-for-android打包apk-Go语言中文社区
  7. 程序人生 - 猫吃鸡胸肉的好处?
  8. 杰里之播放 flash 音乐 bin 文件的制作方法篇
  9. 【MAXScript】3DMax批量修改贴图名及模型名
  10. JS控制 textarea多行文本框HTML标签根据内容自适应高度