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
- 查詢賬單功能的實現
- C# Winform ComboBox模糊查詢實現C#ORM
- c# winform 實現分頁查詢C#ORM
- Flutter 區域性路由實現Flutter路由
- C#聯合halcon實現直線查詢C#
- 一類區間查詢對應答案具有單調性--維護字首對應端點最大值
- duxapp放棄了redux,在duxapp中區域性、全域性狀態的實現方案APPRedux
- WebGL實現簡易的區域性“馬賽克”Web
- mac查詢埠對應的PIDMac
- laravel 定義模型的區域性查詢作用域方法沒有PhpStorm沒有程式碼提示Laravel模型PHPORM
- Python實現天氣查詢功能(外加Excel技巧)PythonExcel
- python 程式碼實現查詢功能介面測試Python
- python opencv如何實現目標區域裁剪功能PythonOpenCV
- 6、域滲透中查詢域使用者對域成員機器關係
- 說說你對二分查詢的理解?如何實現?應用場景?
- matlab實現 線性拉伸某灰度影像的對比度 程式碼 對比度拉伸Matlab
- SSH:hiberate實現資料的查詢(單查詢和全查詢)
- Spring Boot 2 實戰:利用Redis的Geo功能實現查詢附近的位置Spring BootRedis
- 一對一直播原始碼,利用matlab實現程式計時功能原始碼Matlab
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- 使用jQuery的load方法實現div區域性重新整理jQuery
- SICP:賦值和區域性狀態(Python實現)賦值Python
- 使用ajax實現頁面區域性重新整理
- iOS架構:AOP實現區域性模組化iOS架構
- C#中的並行處理、並行查詢的方法你用對了嗎?C#並行
- MyBatis 查詢資料時屬性中多對一的問題(多條資料對應一條資料)MyBatis
- C#實現截圖功能C#
- 查詢torch和torchvision對應版本
- 查詢皮膚中如何實現兩個 select 下拉框的關聯查詢?
- matlab最優化問題的函式(fminbnd),fmincon,globalsearch,multistart(全域性區域性最優)Matlab優化函式
- 一種期望線性的靜態區間查詢
- #MyBatis多表查詢 #多對一、一對多的兩種實現方式 @FDDLCMyBatis
- 快遞鳥api介面實現訂閱物流軌跡單號查詢功能對接呼叫API
- 如何在C#中除錯LINQ查詢C#除錯
- [C#] [WPF] 在MVVM中實現拖拽功能 - 入門C#MVVM
- 實現 MyBatis 流式查詢的方法MyBatis
- Matlab 實現介面相應滑鼠事件Matlab事件