博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#实现局部峰值查找,功能对应Matlab中的findpeaks.m
阅读量:7058 次
发布时间:2019-06-28

本文共 1886 字,大约阅读时间需要 6 分钟。

原文:

相关算法的原理参考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
data = new List
(); 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开始)

 

转载地址:http://zzmol.baihongyu.com/

你可能感兴趣的文章
手机版开发框架集合
查看>>
Memcache的客户端连接系列(二) Python
查看>>
shell 环境变量
查看>>
安装xampp二三事
查看>>
2019-04-09 SpringBoot+Druid+MyBatis+Atomikos 的多数据源配置
查看>>
分解质因数
查看>>
字符型图片验证码识别完整过程及Python实现
查看>>
js,jquery获取url参数
查看>>
Java基础学习总结(36)——Java注释模板
查看>>
erange.heetian.com 回显任意账号
查看>>
OBJ文件格式简介
查看>>
实验三 有限自动机的构造与识别
查看>>
python的学习笔记之——time模块常用内置函数
查看>>
计算机是如何工作的
查看>>
【c++】必须在类初始化列表中初始化的几种情况
查看>>
阿拉伯数字1与英语字母l造成的代码bug
查看>>
深度学习常见的专业术语
查看>>
2018-2019-2 20165334《网络对抗技术》Exp2 后门原理与实践
查看>>
HTML提交方式post和get区别(实验)
查看>>
Java 11.do语句
查看>>