MathToolsBasis.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. using System;
  2. using System.Linq;
  3. namespace WingAIDiagnosisService.Carotid.MathTools
  4. {
  5. public class MathToolsBasis
  6. {
  7. //精度要求
  8. public static float Precision = 0.0001f;
  9. //精度要求
  10. public static float NegPrecision = -0.0001f;
  11. /// <summary>
  12. /// Get min pow of two for the input value.
  13. /// </summary>
  14. /// <param name="inputValue">input value</param>
  15. /// <returns>Min power of two.</returns>
  16. public static int GetMinPowOfTwo(int inputValue)
  17. {
  18. for (var i = 4; i < int.MaxValue; i++)
  19. {
  20. var sum = (int)Math.Pow(2, i);
  21. if (sum >= inputValue)
  22. {
  23. return sum;
  24. }
  25. }
  26. return 64;
  27. }
  28. /// <summary>
  29. /// 判断两个double是否相等
  30. /// </summary>
  31. /// <param name="d1"></param>
  32. /// <param name="d2"></param>
  33. /// <returns></returns>
  34. public static bool TwoDoubleEqual(double d1, double d2)
  35. {
  36. return Math.Abs(d1 - d2) < Precision;
  37. }
  38. /// <summary>
  39. /// double四舍五入转int
  40. /// </summary>
  41. /// <param name="d"></param>
  42. /// <returns></returns>
  43. public static int DoubleToInt(double d)
  44. {
  45. return (int)Math.Round(d);
  46. }
  47. /// <summary>
  48. /// 向上取整
  49. /// </summary>
  50. /// <param name="value"></param>
  51. /// <returns></returns>
  52. public static int GetUpperInt(double value)
  53. {
  54. return (int)Math.Ceiling(value);
  55. }
  56. /// <summary>
  57. /// 向下取整
  58. /// </summary>
  59. /// <param name="value"></param>
  60. /// <returns></returns>
  61. public static int GetLowerInt(double value)
  62. {
  63. return (int)Math.Floor(value);
  64. }
  65. /// <summary>
  66. /// 弧度转角度
  67. /// </summary>
  68. /// <param name="radian"></param>
  69. /// <returns></returns>
  70. public static double ChangeRadianToAngle(double radian)
  71. {
  72. return radian / 2 / Math.PI * 360;
  73. }
  74. /// <summary>
  75. /// 计算一系列数据的标准差
  76. /// </summary>
  77. /// <param name="data"></param>
  78. /// <returns></returns>
  79. public static float GetStandardDeviation(int[] data)
  80. {
  81. if (data.Length> 0)
  82. {
  83. // 计算平均数
  84. var avg = data.Average();
  85. // 计算各数值与平均数的差值的平方,然后求和
  86. var sum = data.Sum(d => Math.Pow(d - avg, 2));
  87. // 除以数量,然后开方
  88. return (float)Math.Sqrt(sum /data.Length);
  89. }
  90. return 0;
  91. }
  92. }
  93. }