AnalysisAlgorithmcs.cs 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. //using JHFX = Package_turnout_analysis_geo; //几何分析 道岔分析
  7. //using JHTQ = Package_turnout_identify_geo; //几何分析 道岔提取
  8. using LGL = Package_turnout_analysis_wrf;//轮轨力 分析
  9. //using LGLTQ = Package_turnout_identify_wrf;//轮轨力 提取
  10. using JH = Package_turnout_analysis;
  11. using MathWorks.MATLAB.NET.Arrays;
  12. using JHWX = Package_geo_change_analysis_for_turnout;//微小算法
  13. using System.Windows.Forms;
  14. namespace Uninpho.Tools.components.DataAnalysis
  15. {
  16. /// <summary>
  17. /// 算法类
  18. /// </summary>
  19. public class AnalysisAlgorithmcs
  20. {
  21. ///// <summary>
  22. /////
  23. ///// </summary>
  24. ///// <param name="fname_dir0">geo路径</param>
  25. ///// <param name="fname0">geo文件名</param>
  26. ///// <param name="mile_id">是否使用修正后里程,1为使用修正后里程,0为是用geo文件自带里程</param>
  27. ///// <param name="fname_disp">修正里程数据文件名,若mile_id为0时则为NaN。</param>
  28. ///// <param name="mile_min">线路最小里程</param>
  29. ///// <param name="mile_max">线路最大里程</param>
  30. ///// <param name="dsip_switch_">道岔台账,n*3维double型数组,第一列为正线道岔尖轨尖里程,第二列为辙叉号,第三列为道岔全长</param>
  31. ///// <param name="fname_dir_result">存储文件目录</param>
  32. ///// <param name="carname">检测车名</param>
  33. //public static void JHFXTQ(string fname_dir0, string fname0, int mile_id, string fname_disp, double mile_min, double mile_max, double[] dsip_switch_, string fname_dir_result, string carname)
  34. //{
  35. // JHTQ.Class1 jhfx = new JHTQ.Class1();
  36. // MWNumericArray dsip_switch = new MWNumericArray(dsip_switch_.Length / 3, 3, dsip_switch_);
  37. // MWArray[] agrsIn3 = new MWArray[] { fname_dir0, fname0, mile_id, fname_disp, mile_min, mile_max, dsip_switch, fname_dir_result, carname };
  38. // MWArray[] agrsOut3 = new MWArray[0];
  39. // jhfx.sub_turnout_identify_georead(0, ref agrsOut3, agrsIn3);
  40. //}
  41. ///// <summary>
  42. ///// 道岔几何分析
  43. ///// </summary>
  44. ///// <param name="fname_dir0">mat路径</param>
  45. ///// <param name="fname0">mat文件名</param>
  46. ///// <returns></returns>
  47. //public static MWArray[] JHFXFX(string fname_dir0, string fname0)
  48. //{
  49. // JHFX.Class1 jhfx = new JHFX.Class1();
  50. // MWArray[] agrsIn = new MWArray[] { fname_dir0, fname0 };
  51. // MWArray[] agrsOut = new MWArray[11];
  52. // jhfx.sub_turnout_analysis_result_output(11, ref agrsOut, agrsIn);
  53. // return agrsOut;
  54. //}
  55. ///// <summary>
  56. ///// 轮轨力提取
  57. ///// </summary>
  58. ///// <param name="fname_dir0">mat路径</param>
  59. ///// <param name="fname0">mat文件名</param>
  60. ///// <param name="dsip_switch_">道岔台账尖轨尖里程,m*1维数组</param>
  61. ///// <param name="fname_dir_result">输出结果目录</param>
  62. ///// <param name="Freq_L">滤波下限频率</param>
  63. ///// <param name="Freq_H">滤波上限频率</param>
  64. //public static void LGLTQ(string fname_dir0, string fname0, double[] dsip_switch_, string fname_dir_result, int Freq_L, int Freq_H)
  65. //{
  66. // LGLTQ.Class1 lgltq = new LGLTQ.Class1();
  67. // MWNumericArray dsip_switch = new MWNumericArray(dsip_switch_.Length, 1, dsip_switch_);
  68. // MWArray[] agrsIn3 = new MWArray[] { fname_dir0, fname0, fname_dir_result, dsip_switch, Freq_L, Freq_H };
  69. // MWArray[] agrsOut3 = new MWArray[0];
  70. // lgltq.sub_turnout_identify_data_read(0, ref agrsOut3, agrsIn3);
  71. //}
  72. ///// <summary>
  73. ///// 轮轨力分析
  74. ///// </summary>
  75. ///// <param name="fname_dir0">mat路径</param>
  76. ///// <param name="fname0">mat文件名</param>
  77. ///// <returns></returns>
  78. //public static MWArray[] LGLFX(string fname_dir0, string fname0)
  79. //{
  80. // LGLFX.Class1 lglfx = new LGLFX.Class1();
  81. // MWArray[] agrsIn = new MWArray[] { fname_dir0, fname0 };
  82. // MWArray[] agrsOut = new MWArray[7];
  83. // lglfx.sub_turnout_analysis_wrf_data_output(7, ref agrsOut, agrsIn);
  84. // return agrsOut;
  85. //}
  86. ///////////////////////////////////////上面的函数都已弃用///////////////////////////////////////////////
  87. ///////////////////////////////////////////////////////////////////////////////////////////////////////
  88. ///////////////////////////////////////////////////////////////////////////////////////////////////////
  89. /////////////////////////////////////// 新 算 法 //////////////////////////////////////////////
  90. ///////////////////////////////////////////////////////////////////////////////////////////////////////
  91. ///////////////////////////////////////////////////////////////////////////////////////////////////////
  92. /// <summary>
  93. /// 几何新算法
  94. /// </summary>
  95. /// <param name="fname_dir0">geo路径</param>
  96. /// <param name="fname0">geo文件名</param>
  97. /// <param name="mile_id">是否使用修正后里程,1为使用修正后里程,0为是用geo文件自带里程</param>
  98. /// <param name="linename">线路名英文缩写</param>
  99. /// <param name="mile_min">线路最小里程</param>
  100. /// <param name="mile_max">线路最大里程</param>
  101. /// <param name="tz_curv">道岔台账,n*3维double型数组,第一列为正线道岔尖轨尖里程,第二列为辙叉号,第三列为道岔全长</param>
  102. /// <param name="tz_turnout">道岔台账信息,n*3维数组</param>
  103. /// <param name="distance_table">道岔尖心轨间距信息表,n*3维数组,分为高速和普速</param>
  104. /// <param name="carname">检测车名</param>
  105. public static MWArray[] JHFX(string fname_dir0, string fname0, int mile_id, string linename, double mile_min, double mile_max, double[] tz_curv, double[] tz_turnout, double[] distance_table, string carname)
  106. {
  107. JH.Class1 jhfx = new JH.Class1();
  108. MWNumericArray tz_curv_switch = new MWNumericArray(tz_curv.Length / 6, 6, tz_curv);
  109. MWNumericArray tz_turnout_switch = new MWNumericArray(tz_turnout.Length / 3, 3, tz_turnout);
  110. MWNumericArray distance_table_switch = new MWNumericArray(distance_table.Length / 3, 3, distance_table);
  111. MWArray[] agrsIn = new MWArray[] { fname_dir0, fname0, linename, tz_curv_switch, tz_turnout_switch, mile_min, mile_max, mile_id, carname, distance_table_switch };
  112. MWArray[] agrsOut = new MWArray[12];
  113. jhfx.sub_main_turnout_analysis(12, ref agrsOut, agrsIn);
  114. return agrsOut;
  115. }
  116. /// <summary>
  117. /// 轮轨力新算法
  118. /// </summary>
  119. /// <param name="fname_dir0">bny路径</param>
  120. /// <param name="fname0">bny文件名</param>
  121. /// <param name="linename">线路名英文缩写</param>
  122. /// <param name="mile_min">线路最小里程</param>
  123. /// <param name="mile_max">线路最大里程</param>
  124. /// <param name="tz_curv">道岔台账,n*3维double型数组,第一列为正线道岔尖轨尖里程,第二列为辙叉号,第三列为道岔全长</param>
  125. /// <param name="tz_turnout">道岔台账信息,n*3维数组</param>
  126. /// <param name="distance_table">道岔尖心轨间距信息表,n*3维数组,分为高速和普速</param>
  127. /// <param name="carname">检测车名</param>
  128. public static MWArray[] LGLFX(string fname_dir0, string fname0, string linename, double mile_min, double mile_max, double[] tz_curv, double[] tz_turnout, double[] distance_table, string carname)
  129. {
  130. LGL.Class1 lgl = new LGL.Class1();
  131. MWNumericArray tz_curv_switch = new MWNumericArray(tz_curv.Length / 6, 6, tz_curv);
  132. MWNumericArray tz_turnout_switch = new MWNumericArray(tz_turnout.Length / 3, 3, tz_turnout);
  133. MWNumericArray distance_table_switch = new MWNumericArray(distance_table.Length / 3, 3, distance_table);
  134. MWArray[] agrsIn = new MWArray[] { fname_dir0, fname0, linename, tz_curv_switch, tz_turnout_switch, mile_min, mile_max, carname, distance_table_switch };
  135. MWArray[] agrsOut = new MWArray[8];
  136. lgl.sub_main_turnout_analysis_wrf(8, ref agrsOut, agrsIn);
  137. return agrsOut;
  138. }
  139. /// <summary>
  140. /// 微小算法
  141. /// </summary>
  142. public static MWArray[] WXSF(string[] date, string[] car, double[] mile, double[] wave_data, double[] id_wave_all, double[] jx_loc_all, string[] line, double[] velo, string[] zc)
  143. {
  144. JHWX.Class1 wx = new JHWX.Class1();
  145. MWCharArray date_ = new MWCharArray(date);
  146. MWCharArray car_ = new MWCharArray(car);
  147. MWNumericArray mile_ = new MWNumericArray(mile.Length, 1, mile);
  148. MWNumericArray wave_data_ = new MWNumericArray(wave_data.Length / 18, 18, wave_data);
  149. MWNumericArray id_wave_all_ = new MWNumericArray(id_wave_all.Length / 2, 2, id_wave_all);
  150. MWNumericArray jx_loc_all_ = new MWNumericArray(jx_loc_all.Length / 2, 2, jx_loc_all);
  151. MWCharArray line_ = new MWCharArray(line);
  152. MWNumericArray velo_ = new MWNumericArray(velo.Length, 1, velo);
  153. MWCharArray zc_ = new MWCharArray(zc);
  154. MWArray[] agrsIn = new MWArray[] { date_, car_, mile_, wave_data_, id_wave_all_, jx_loc_all_, line_, velo_, zc_ };
  155. MWArray[] agrsOut = new MWArray[11];
  156. wx.sub_main_geometry_small_change(11, ref agrsOut, agrsIn);
  157. return agrsOut;
  158. }
  159. }
  160. }