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開始)
相關文章
- Java中查詢列表的峰值元素Java
- 查詢賬單功能的實現
- [LeetCode] Find Peak Element 求陣列的區域性峰值LeetCode陣列
- Flutter 區域性路由實現Flutter路由
- IP地址查詢API的C#實現APIC#
- c# winform 實現分頁查詢C#ORM
- WebView實現頁內文字查詢功能WebView
- C#實現二叉查詢樹C#
- WebGL實現簡易的區域性“馬賽克”Web
- 一類區間查詢對應答案具有單調性--維護字首對應端點最大值
- C# Winform ComboBox模糊查詢實現C#ORM
- 區域性類實現C++的閉包薦C++
- MYSQL INNODB中hash查詢表的實現MySql
- Access查詢實現Mysql的 limit 查詢MySqlMIT
- 6、域滲透中查詢域使用者對域成員機器關係
- 簡單實現附近周邊服務查詢功能
- iOS架構:AOP實現區域性模組化iOS架構
- javascript實現區域性列印程式碼例項JavaScript
- 物件點查詢和中括號查詢的區別物件
- 對DBGrid 的巧妙用法實現查詢 (轉)
- duxapp放棄了redux,在duxapp中區域性、全域性狀態的實現方案APPRedux
- laravel 定義模型的區域性查詢作用域方法沒有PhpStorm沒有程式碼提示Laravel模型PHPORM
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- python opencv如何實現目標區域裁剪功能PythonOpenCV
- java實現Hbase中的查詢(一)Filter方式JavaFilter
- 說說你對二分查詢的理解?如何實現?應用場景?
- Python實現天氣查詢功能(外加Excel技巧)PythonExcel
- python 程式碼實現查詢功能介面測試Python
- 實現多表關聯來方便你的SELECT查詢功能
- mac查詢埠對應的PIDMac
- 查詢命令對應的RPM包
- 使用ajax實現頁面區域性重新整理
- xsl中,對xml文件查詢的結果再次查詢XML
- 在java中實現對FORM的列印功能 (轉)JavaORM
- matlab實現 線性拉伸某灰度影像的對比度 程式碼 對比度拉伸Matlab
- 快遞鳥api介面實現訂閱物流軌跡單號查詢功能對接呼叫API
- Oracle11DATA GUARD實時應用加實時查詢功能Oracle
- 【譯】理解Rust中的區域性移動Rust