我在c#中搜索“多谐波样条”的实现。我只找到这个库Altaxo。我搜索一个库,通过nuget和许可证是可用的apache或mit。多谐波样条实现c#
我的用例是查找2D地图上定义点的平均温度。例如在
- 位置1(X:0 Y:0温度:10°)
- 情况2(X:0 Y:30温度:100℃)
- POSITION3(X:40 Y:0温度:50°)
- POSITION4(X:30 Y:30温度:20°)
红色点是计算值。
代码示例
using Altaxo.Calc.Interpolation;
using Altaxo.Calc.LinearAlgebra;
using System.Collections.Generic;
using System.Linq;
public class Spline
{
private PolyharmonicSpline _spline;
public Spline()
{
var items = new List<TemperaturePosition>()
{
new TemperaturePosition(0,0,10),
new TemperaturePosition(0,30,100),
new TemperaturePosition(40,0,50),
new TemperaturePosition(30,30,20),
};
var xCoordinates = items.Select(o => o.X).ToArray();
var yCoordinates = items.Select(o => o.Y).ToArray();
var values = items.Select(o => o.Temperature).ToArray();
this._spline = new PolyharmonicSpline();
this._spline.Construct(new DoubleVector(xCoordinates), new DoubleVector(yCoordinates), new DoubleVector(values));
}
public double Calculate(double x, double y)
{
return this._spline.GetInterpolatedValue(x, y);
}
}
public class TemperaturePosition
{
public double X { get; set; }
public double Y { get; set; }
public double Temperature { get; set; }
public TemperaturePosition(double x, double y, double temperature)
{
this.X = x;
this.Y = y;
this.Temperature = temperature;
}
}