using IStation.Model;
|
using MathNet.Numerics;
|
using MathNet.Numerics.Interpolation;
|
using MathNet.Numerics.LinearRegression;
|
using MathNet.Numerics.Statistics;
|
using System.Data;
|
using System.Text;
|
namespace IStation.Test
|
{
|
internal class Program
|
{
|
|
static void Main(string[] args)
|
{
|
var splineList = new List<CurvePoint>();
|
var measuredList = new List<CurvePoint>();
|
|
var fileName = "23_34";
|
var path = AppDomain.CurrentDomain.BaseDirectory;
|
var lienPaht = path + $@"\pumpcsv\{fileName}_old_curve.csv";
|
var measuredPath = path + $@"\pumpcsv\{fileName}.csv";
|
|
using (var fs = new FileStream(lienPaht, FileMode.Open, FileAccess.Read))
|
using (var sr = new StreamReader(fs, Encoding.UTF8))
|
{
|
var strLine = string.Empty;
|
sr.ReadLine();
|
while (!string.IsNullOrEmpty(strLine = sr.ReadLine()))
|
{
|
var strList = strLine.Split(',');
|
var x = double.Parse(strList[0]);
|
var y = double.Parse(strList[1]);
|
splineList.Add(new CurvePoint(x, y));
|
}
|
}
|
|
using (var fs = new FileStream(measuredPath, FileMode.Open, FileAccess.Read))
|
using (var sr = new StreamReader(fs, Encoding.UTF8))
|
{
|
var strLine = string.Empty;
|
sr.ReadLine();
|
while (!string.IsNullOrEmpty(strLine = sr.ReadLine()))
|
{
|
var strList = strLine.Split(',');
|
var x = double.Parse(strList[4]);
|
var y = double.Parse(strList[5]);
|
measuredList.Add(new CurvePoint(x, y));
|
}
|
}
|
|
measuredList = measuredList.OrderBy(x => x.X).ToList();
|
|
// 样条曲线处理
|
double[] splineX = splineList.Select(x => x.X).ToArray();
|
double[] splineY = splineList.Select(x => x.Y).ToArray();
|
|
// 实测数据处理
|
double[] measuredXAll = measuredList.Select(x => x.X).ToArray();
|
double[] measuredYAll = measuredList.Select(x => x.Y).ToArray();
|
|
|
|
var helper = new PumpCurveDataFusionCorrectorHelper2DeepSeek(); //PumpCurveDataFusionCorrectorHelper2DeepSeek
|
(double[] mergedX, double[] mergedY, double[] optimizedX, double[] optimizedY) = helper.Corrent(splineX, splineY, measuredXAll, measuredYAll);
|
|
Console.WriteLine($"{splineX.Min()},{splineX.Max()}");
|
Console.WriteLine($"{mergedX.Min()},{mergedX.Max()}");
|
Console.WriteLine($"{optimizedX.Min()},{optimizedX.Max()}");
|
|
Console.WriteLine($"{splineY.Min()},{splineY.Max()}");
|
Console.WriteLine($"{mergedY.Min()},{mergedY.Max()}");
|
Console.WriteLine($"{optimizedY.Min()},{optimizedY.Max()}");
|
|
var pt_list=new List<CurvePoint>();
|
for (int i = 0; i < optimizedX.Length; i++)
|
{
|
var x = optimizedX[i];
|
var y = optimizedY[i];
|
pt_list.Add(new CurvePoint(x,y));
|
}
|
var fullPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "pumpcsv");
|
if (File.Exists(Path.Combine(fullPath, $"{fileName}_update_curve.csv")))
|
{
|
File.Delete(Path.Combine(fullPath, $"{fileName}_update_curve.csv"));
|
}
|
CsvHelper.ExportToCsv(pt_list, Path.Combine(fullPath, $"{fileName}_update_curve.csv"));
|
|
Console.WriteLine("ok");
|
Console.ReadKey();
|
}
|
|
|
}
|
|
|
|
|
|
|
|
}
|