如何用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 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找出一组离散数据中的峰值相关推荐
- Excel表格中如何找出并替换数据中某一固定范围内的值(包括空值)
Excel表格中如何找出并替换数据中某一固定范围内的值(包括空值) 一.问题介绍 二.方法介绍 1.选中数据 2.按住Ctrl+H键,调出替换窗口 3.输入 " * ",并点击查找 ...
- Excel 中如何找出两列数据中不重复的记录
现在有两列数据,要在 A 列中找出 B 列中没有的记录,在 B 列中找出 A 列中没有的记录.现在和大家分享一下这个方法. 我们先用一个简单的例子看一下.现在有两列数据,可以是分别在不同的数据单(sh ...
- MATLAB找出二维数组中最接近某个数的n个数
clear;clc; % 找出数组A中最接近b的n个数,一维二维通用 A=round(100*rand(10)); % 要找的数组 AA=A(:); b=20; % 要接近的数 n=20; % 要找的 ...
- matlab找出二维矩阵中最大值的位置或者最小值的位置
matlab寻找最大值或者最小值是通过max和min命令 对应二维矩阵寻找最大元素就是max(max(A)),注意二维矩阵要写两个max 找对应位置用find函数 举个例子: >> A=[ ...
- 【正则表达式测试工具】使用正则表达式快速找出两列数据中不同的行
例如像下面的这样的一堆海量数据(已省略部分),可能有几千组,在不编程的情况下如何快速找到不同的行?可能excel有办法,但是处理起来应该没我这样方便的. b_start b_end 100790 10 ...
- Excel中如何找出两列数据中相同的数据,并且进行同行显示
使用VLOOKUP方法即可. =VLOOKUP(A2,Sheet1!B:C,1,0)的含义是: 在sheet1工作表的B:C区域的首列中查找等于a2的值,找到后,返回该区域的同行的值.最后的参数0表示 ...
- 如何用Python找出英语和汉语中特定词性的单词
在绘制词云图时,我们有时需要找到特定词性的单词,便云图显示更加精准,本文通过jieba(结巴)库中的posseg和nltk中pos_tag分别对汉英两种字符进行分词.标准,再利用列表表达式进行特定词性 ...
- 用matlab处理表格,matlab删除excel表格数据-如何用matlab处理多个excel表格中的数据...
如何用matlab处理多个excel表格中的数据 biao='D:\Program Files\matlab\bin\filename.xls'; A1=xlsread (biao,'Sheet1', ...
- 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 ...
最新文章
- Python3 函数function
- django forms 错误处理
- OpenCV制作自己的线性滤波器
- 使用C#把Tensorflow训练的.pb文件用在生产环境
- Win7下使用toad连接oracle出现can't initialize OCI -1
- 帮助你的上司达成目标
- java字符串_Java字符串
- 汇客huikeCRM项目实战-牛刀小试
- sin(ωt),一文和正弦函数、频域、周期的头疼说白白
- Redis相关面试题
- 数据科学家也良莠不齐 蹩脚数据科学家的10个迹象
- timestamp与datetime的对比
- 外卖也智能!美团骑手智能助手的技术与实践
- Java身份证处理工具
- python爬山算法
- JavaScript中的join() 方法
- 基于JAVA机票预定系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
- 现代笑话二则:1、马尾辫同学;2、辣椒惹的祸。
- 计算机密码学试题,现代密码学试卷(含答案)
- 软考高级 真题 2015年上半年 信息系统项目管理师 论文