AnalysisAlgorithmcs.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  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. namespace ZDHscript
  14. {
  15. /// <summary>
  16. /// 算法类
  17. /// </summary>
  18. public class AnalysisAlgorithmcs
  19. {
  20. /// <summary>
  21. /// 几何新算法
  22. /// </summary>
  23. /// <param name="fname_dir0">geo路径</param>
  24. /// <param name="fname0">geo文件名</param>
  25. /// <param name="mile_id">是否使用修正后里程,1为使用修正后里程,0为是用geo文件自带里程</param>
  26. /// <param name="linename">线路名英文缩写</param>
  27. /// <param name="mile_min">线路最小里程</param>
  28. /// <param name="mile_max">线路最大里程</param>
  29. /// <param name="tz_curv">道岔台账,n*3维double型数组,第一列为正线道岔尖轨尖里程,第二列为辙叉号,第三列为道岔全长</param>
  30. /// <param name="tz_turnout">道岔台账信息,n*3维数组</param>
  31. /// <param name="distance_table">道岔尖心轨间距信息表,n*3维数组,分为高速和普速</param>
  32. /// <param name="carname">检测车名</param>
  33. 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)
  34. {
  35. JH.Class1 jhfx = new JH.Class1();
  36. MWNumericArray tz_curv_switch = new MWNumericArray(tz_curv.Length / 6, 6, tz_curv);
  37. MWNumericArray tz_turnout_switch = new MWNumericArray(tz_turnout.Length / 3, 3, tz_turnout);
  38. MWNumericArray distance_table_switch = new MWNumericArray(distance_table.Length / 3, 3, distance_table);
  39. MWArray[] agrsIn = new MWArray[] { fname_dir0, fname0, linename, tz_curv_switch, tz_turnout_switch, mile_min, mile_max, mile_id, carname, distance_table_switch };
  40. MWArray[] agrsOut = new MWArray[12];
  41. jhfx.sub_main_turnout_analysis(12, ref agrsOut, agrsIn);
  42. return agrsOut;
  43. }
  44. /// <summary>
  45. /// 轮轨力新算法
  46. /// </summary>
  47. /// <param name="fname_dir0">bny路径</param>
  48. /// <param name="fname0">bny文件名</param>
  49. /// <param name="linename">线路名英文缩写</param>
  50. /// <param name="mile_min">线路最小里程</param>
  51. /// <param name="mile_max">线路最大里程</param>
  52. /// <param name="tz_curv">道岔台账,n*3维double型数组,第一列为正线道岔尖轨尖里程,第二列为辙叉号,第三列为道岔全长</param>
  53. /// <param name="tz_turnout">道岔台账信息,n*3维数组</param>
  54. /// <param name="distance_table">道岔尖心轨间距信息表,n*3维数组,分为高速和普速</param>
  55. /// <param name="carname">检测车名</param>
  56. 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)
  57. {
  58. LGL.Class1 lgl = new LGL.Class1();
  59. MWNumericArray tz_curv_switch = new MWNumericArray(tz_curv.Length / 6, 6, tz_curv);
  60. MWNumericArray tz_turnout_switch = new MWNumericArray(tz_turnout.Length / 3, 3, tz_turnout);
  61. MWNumericArray distance_table_switch = new MWNumericArray(distance_table.Length / 3, 3, distance_table);
  62. MWArray[] agrsIn = new MWArray[] { fname_dir0, fname0, linename, tz_curv_switch, tz_turnout_switch, mile_min, mile_max, carname, distance_table_switch };
  63. MWArray[] agrsOut = new MWArray[8];
  64. lgl.sub_main_turnout_analysis_wrf(8, ref agrsOut, agrsIn);
  65. return agrsOut;
  66. }
  67. /// <summary>
  68. /// 微小算法
  69. /// </summary>
  70. 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)
  71. {
  72. JHWX.Class1 wx = new JHWX.Class1();
  73. MWCharArray date_ = new MWCharArray(date);
  74. MWCharArray car_ = new MWCharArray(car);
  75. MWNumericArray mile_ = new MWNumericArray(mile.Length, 1, mile);
  76. MWNumericArray wave_data_ = new MWNumericArray(wave_data.Length / 18, 18, wave_data);
  77. MWNumericArray id_wave_all_ = new MWNumericArray(id_wave_all.Length / 2, 2, id_wave_all);
  78. MWNumericArray jx_loc_all_ = new MWNumericArray(jx_loc_all.Length / 2, 2, jx_loc_all);
  79. MWCharArray line_ = new MWCharArray(line);
  80. MWNumericArray velo_ = new MWNumericArray(velo.Length, 1, velo);
  81. MWCharArray zc_ = new MWCharArray(zc);
  82. MWArray[] agrsIn = new MWArray[] { date_, car_, mile_, wave_data_, id_wave_all_, jx_loc_all_, line_, velo_, zc_ };
  83. MWArray[] agrsOut = new MWArray[11];
  84. wx.sub_main_geometry_small_change(11, ref agrsOut, agrsIn);
  85. return agrsOut;
  86. }
  87. }
  88. }