C#实现局部峰值查找,功能对应Matlab中的findpeaks.m
原文: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开始)

posted on 2018-07-29 00:19 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/9383992.html

C#实现局部峰值查找,功能对应Matlab中的findpeaks.m相关推荐

  1. matlab输出波形自动找到波峰波谷,Matlab中利用findpeaks找波峰和波谷

    利用 findpeaks 工具箱函數可以找原始波形中的波峰,但是當單周期里出現多個極值,時findpeaks的判斷會將極值也算入. 原波形 為250HZ的正弦波型, findpeaks 尋找峰值函數p ...

  2. C里面的scanf那个功能在matlab中实现

    从文件读入用fscanf,从一个字符串读入用sscanf,从控制台读入可以用input.具体用法可用"help 命令" 查看.

  3. Matlab中利用findpeaks找波峰和波谷

    利用 findpeaks 工具箱函数可以找原始波形中的波峰,但是当单周期里出现多个极值,时findpeaks的判断会将极值也算入. 原波形 为250HZ的正弦波型, findpeaks 寻找峰值函数 ...

  4. matlab中help所有函数功能的英文翻译

    doc funname 在帮助浏览器中打开帮助文档 help funname 在命令窗口打开帮助文档 helpbrowser 直接打开帮助浏览器 lookfor funname 搜索某个关键字相关函数 ...

  5. quad8是matlab中调用那个,Matlab 数值积分

    MATLAB数值积分与微分 8.1 数值积分 8.1.1 数值积分基本原理 求解定积分的数值方法多种多样,如简单的梯形法.辛普生(Simpson)法.牛顿-柯特斯(Newton-Cotes)法等都是经 ...

  6. Matlab中画图以及plot函数及legend函数详解

    Matlab中plot函数及legend函数详解 Matlab中plot函数全功能解析Matlab中plot函数及legend函数详解 功能 二维曲线绘图 语法 plot(Y) plot(X1,Y1, ...

  7. matlab中permute,matlab中permute函数

    matlab中permute函数app是一款聚集海量游戏玩家的游戏社区应用,permute软件上可以看各大神原创游戏视频直播,与游戏大神互动交友,还能自由录制游戏视频记录精彩时刻. 功能介绍 matl ...

  8. 如何查看matlab的启动参数,如何使用多个参数在Matlab中执行“查找”?

    我正在寻找一种"矢量化"以下代码的方法.也就是说,我想摆脱for循环,这需要很长时间(这个for循环嵌套在另一个for循环中,重复超过40,000次). for k=1:lengt ...

  9. matlab 数组中查找字符串长度,Matlab 之 字符串数组查找

    Matlab的优势在于向量操作,字符串操作往往费时费力,但是如果能充分利用Matlab自带的一些函数,也可以取得不错的效果.下面就介绍一下字符串数组查找的小技巧. 字符串数组我通常会选择应用cell格 ...

最新文章

  1. linux 应用层编程之内核链表list的使用
  2. 【CyberSecurityLearning 36】靶场环境搭建(ubuntu系统安装优化及vulhub安装)
  3. java时间api_什么是java时间API?
  4. 用Python+Django在Eclipse环境下开发web网站【转】
  5. hdu 1325 Is It A Tree?
  6. lintcode 中等题:Divide Two Integers 两个数的除法
  7. Centos 5.5 安装Mysql5.5过程
  8. 函数式编程-将Monad(单子)融入Swift
  9. HandBrake for Mac(专业的视频转码器) 最新版
  10. 论文常用出图软件(Matlab,XMind,Viso,ppt)以及格式选择(eps,svg,tif,png)
  11. 华为atn950b指导手册_全新原包装华为ATN950B 整机 传输设备
  12. 语法分析器-LL(1)语法分析
  13. 计算机没有休眠,没有休眠选项,电脑没有休眠选项
  14. 集训队作业2018: 喂鸽子(min-max容斥)
  15. 用计算机弹魂斗罗,魂斗罗30命S弹版电脑版
  16. 向下兼容性格什么意思_成大事者都有一种高段位能力:向下兼容
  17. OneZero第四周第二次站立会议(2016.4.12)
  18. adb的升级与版本更新
  19. 联想p720工作站安装linux,联想发布ThinkStation P920和P720工作站 采用至强处理器
  20. 机器人是如何实现控制的,它的控制器有哪些组成?

热门文章

  1. php如何返回数据请求数据格式化,PHP以json或xml数据格式返回请求数据的封装代码...
  2. python大数据和java大数据的区别-未来Java、大数据、Python哪个前景更好,薪资更高?...
  3. python项目开发案例集锦 豆瓣-Python第三个项目:爬取豆瓣《哪吒之魔童降世》 短评...
  4. 英语和数学不好可以学python-Day2 怎么学 Python?
  5. python用途与前景-Python的发展前景及干货!!
  6. python天天学怎么样-python练习:好好学习,天天向上
  7. python网课什么平台好-python网课什么平台好
  8. python做电脑软件-PC端数据下载软件开发(Python)
  9. python零基础怎么学-零基础的小白怎么学python?
  10. python快速编程入门教程-终于懂得python快速编程入门教程