123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- using System;
- using System.Linq;
- namespace WingAIDiagnosisService.Carotid.MathTools
- {
- public class MathToolsBasis
- {
- //精度要求
- public static float Precision = 0.0001f;
- //精度要求
- public static float NegPrecision = -0.0001f;
- /// <summary>
- /// Get min pow of two for the input value.
- /// </summary>
- /// <param name="inputValue">input value</param>
- /// <returns>Min power of two.</returns>
- public static int GetMinPowOfTwo(int inputValue)
- {
- for (var i = 4; i < int.MaxValue; i++)
- {
- var sum = (int)Math.Pow(2, i);
- if (sum >= inputValue)
- {
- return sum;
- }
- }
- return 64;
- }
- /// <summary>
- /// 判断两个double是否相等
- /// </summary>
- /// <param name="d1"></param>
- /// <param name="d2"></param>
- /// <returns></returns>
- public static bool TwoDoubleEqual(double d1, double d2)
- {
- return Math.Abs(d1 - d2) < Precision;
- }
- /// <summary>
- /// double四舍五入转int
- /// </summary>
- /// <param name="d"></param>
- /// <returns></returns>
- public static int DoubleToInt(double d)
- {
- return (int)Math.Round(d);
- }
- /// <summary>
- /// 向上取整
- /// </summary>
- /// <param name="value"></param>
- /// <returns></returns>
- public static int GetUpperInt(double value)
- {
- return (int)Math.Ceiling(value);
- }
- /// <summary>
- /// 向下取整
- /// </summary>
- /// <param name="value"></param>
- /// <returns></returns>
- public static int GetLowerInt(double value)
- {
- return (int)Math.Floor(value);
- }
- /// <summary>
- /// 弧度转角度
- /// </summary>
- /// <param name="radian"></param>
- /// <returns></returns>
- public static double ChangeRadianToAngle(double radian)
- {
- return radian / 2 / Math.PI * 360;
- }
- /// <summary>
- /// 计算一系列数据的标准差
- /// </summary>
- /// <param name="data"></param>
- /// <returns></returns>
- public static float GetStandardDeviation(int[] data)
- {
- if (data.Length> 0)
- {
- // 计算平均数
- var avg = data.Average();
- // 计算各数值与平均数的差值的平方,然后求和
- var sum = data.Sum(d => Math.Pow(d - avg, 2));
- // 除以数量,然后开方
- return (float)Math.Sqrt(sum /data.Length);
- }
- return 0;
- }
- }
- }
|