v10.10.2024.0601 优化Json序列化,支持DateOnly/TimeOnly,支持带时区的时间序列化
石头 编写于 2024-06-01 08:10:50
X
using System;

namespace NewLife.Algorithms
{
    /// <summary>
    /// 双线性插值
    /// </summary>
    public class BilinearInterpolation
    {
        public static Single[,] Process(Single[,] array, Int32 timeLength, Int32 valueLength)
        {
            var rs = new Single[timeLength, valueLength];

            var scale1 = (Single)array.GetLength(0) / timeLength;
            var scale2 = (Single)array.GetLength(1) / valueLength;

            for (var i = 0; i < timeLength; i++)
            {
                for (var j = 0; j < valueLength; j++)
                {
                    var d1 = i * scale1;
                    var d2 = j * scale2;
                    var n1 = (Int32)Math.Floor(d1);
                    var n2 = (Int32)Math.Floor(d2);
                    var leftUp = (d1 - n1) * (d2 - n2);
                    var rightUp = (n1 + 1 - d1) * (d2 - n2);
                    var rightDown = (n1 + 1 - d1) * (n2 + 1 - d2);
                    var leftDown = (d1 - n1) * (n2 + 1 - d2);
                    rs[i, j] = 
                        array[n1, n2] * rightDown + 
                        array[n1 + 1, n2] * leftDown + 
                        array[n1 + 1, n2 + 1] * leftUp + 
                        array[n1, n2 + 1] * rightUp;
                }
            }

            return rs;
        }
    }
}