C#实现局部峰值查找,功能对应Matlab中的findpeaks.m
相关算法的原理参考Ronny,地址:图像分析:投影曲线的波峰查找,这里感谢下原作者。
参照C++的代码实现,我用C#翻译了下,其实原理也很简单的,下面放相关实现代码:
private double[] oneDiff(double[] data) {double[] result = new double[data.Length - 1];for (int i = 0; i < result.Length; i++){result[i] = data[i + 1] - data[i];}return result;}private int[] trendSign(double[] data){int[] sign = new int[data.Length];for (int i = 0; i < sign.Length; i++){if (data[i] > 0) sign[i] =1;else if (data[i] == 0) sign[i] = 0;else sign[i] = -1;}for (int i = sign.Length - 1; i >=0 ; i--){if (sign[i] == 0 && i ==sign.Length - 1){sign[i] = 1;}else if (sign[i] == 0) {if (sign[i+1] >= 0){sign[i] = 1;}else{sign[i] = -1;}}}return sign;}private int[] getPeaksIndex(int[] diff) {List<int> data = new List<int>();for (int i = 0; i != diff.Length - 1; i++){if (diff[i+1] - diff[i] == -2){data.Add(i + 1);}}int[] result = new int[data.Count];for (int i = 0; i < result.Length; i++){result[i] = data[i];}return result;//相当于原数组的下标}
调用方法:
double[] data = {25, 8, 15, 5, 6, 10, 10, 3, 1, 20, 7}; int[] index = getPeaksIndex(trendSign(oneDiff(Constant.data)));
返回的int[]数组内容是对应原数组中峰值对应的索引(从0开始)
转载于:https://www.cnblogs.com/lonelyxmas/p/9383992.html
C#实现局部峰值查找,功能对应Matlab中的findpeaks.m相关推荐
- matlab输出波形自动找到波峰波谷,Matlab中利用findpeaks找波峰和波谷
利用 findpeaks 工具箱函數可以找原始波形中的波峰,但是當單周期里出現多個極值,時findpeaks的判斷會將極值也算入. 原波形 為250HZ的正弦波型, findpeaks 尋找峰值函數p ...
- C里面的scanf那个功能在matlab中实现
从文件读入用fscanf,从一个字符串读入用sscanf,从控制台读入可以用input.具体用法可用"help 命令" 查看.
- Matlab中利用findpeaks找波峰和波谷
利用 findpeaks 工具箱函数可以找原始波形中的波峰,但是当单周期里出现多个极值,时findpeaks的判断会将极值也算入. 原波形 为250HZ的正弦波型, findpeaks 寻找峰值函数 ...
- matlab中help所有函数功能的英文翻译
doc funname 在帮助浏览器中打开帮助文档 help funname 在命令窗口打开帮助文档 helpbrowser 直接打开帮助浏览器 lookfor funname 搜索某个关键字相关函数 ...
- quad8是matlab中调用那个,Matlab 数值积分
MATLAB数值积分与微分 8.1 数值积分 8.1.1 数值积分基本原理 求解定积分的数值方法多种多样,如简单的梯形法.辛普生(Simpson)法.牛顿-柯特斯(Newton-Cotes)法等都是经 ...
- Matlab中画图以及plot函数及legend函数详解
Matlab中plot函数及legend函数详解 Matlab中plot函数全功能解析Matlab中plot函数及legend函数详解 功能 二维曲线绘图 语法 plot(Y) plot(X1,Y1, ...
- matlab中permute,matlab中permute函数
matlab中permute函数app是一款聚集海量游戏玩家的游戏社区应用,permute软件上可以看各大神原创游戏视频直播,与游戏大神互动交友,还能自由录制游戏视频记录精彩时刻. 功能介绍 matl ...
- 如何查看matlab的启动参数,如何使用多个参数在Matlab中执行“查找”?
我正在寻找一种"矢量化"以下代码的方法.也就是说,我想摆脱for循环,这需要很长时间(这个for循环嵌套在另一个for循环中,重复超过40,000次). for k=1:lengt ...
- matlab 数组中查找字符串长度,Matlab 之 字符串数组查找
Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果.下面就介绍一下字符串数组查找的小技巧. 字符串数组我通常会选择应用cell格 ...
最新文章
- linux 应用层编程之内核链表list的使用
- 【CyberSecurityLearning 36】靶场环境搭建(ubuntu系统安装优化及vulhub安装)
- java时间api_什么是java时间API?
- 用Python+Django在Eclipse环境下开发web网站【转】
- hdu 1325 Is It A Tree?
- lintcode 中等题:Divide Two Integers 两个数的除法
- Centos 5.5 安装Mysql5.5过程
- 函数式编程-将Monad(单子)融入Swift
- HandBrake for Mac(专业的视频转码器) 最新版
- 论文常用出图软件(Matlab,XMind,Viso,ppt)以及格式选择(eps,svg,tif,png)
- 华为atn950b指导手册_全新原包装华为ATN950B 整机 传输设备
- 语法分析器-LL(1)语法分析
- 计算机没有休眠,没有休眠选项,电脑没有休眠选项
- 集训队作业2018: 喂鸽子(min-max容斥)
- 用计算机弹魂斗罗,魂斗罗30命S弹版电脑版
- 向下兼容性格什么意思_成大事者都有一种高段位能力:向下兼容
- OneZero第四周第二次站立会议(2016.4.12)
- adb的升级与版本更新
- 联想p720工作站安装linux,联想发布ThinkStation P920和P720工作站 采用至强处理器
- 机器人是如何实现控制的,它的控制器有哪些组成?
热门文章
- php如何返回数据请求数据格式化,PHP以json或xml数据格式返回请求数据的封装代码...
- python大数据和java大数据的区别-未来Java、大数据、Python哪个前景更好,薪资更高?...
- python项目开发案例集锦 豆瓣-Python第三个项目:爬取豆瓣《哪吒之魔童降世》 短评...
- 英语和数学不好可以学python-Day2 怎么学 Python?
- python用途与前景-Python的发展前景及干货!!
- python天天学怎么样-python练习:好好学习,天天向上
- python网课什么平台好-python网课什么平台好
- python做电脑软件-PC端数据下载软件开发(Python)
- python零基础怎么学-零基础的小白怎么学python?
- python快速编程入门教程-终于懂得python快速编程入门教程