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
|
{
|
|
//// 过滤无效数据
|
//// 1输模型修正
|
//// 2输数据修正
|
//// 修正组合偏差
|
//static void Main(string[] args)
|
//{
|
// Station2Helper.Start();
|
// Console.WriteLine();
|
// Console.WriteLine();
|
// Console.WriteLine("ok");
|
// Console.ReadKey();
|
//}
|
|
|
// 过滤无效数据
|
// 1输模型修正
|
// 2输数据修正
|
// 修正组合偏差
|
static void Main(string[] args)
|
{
|
|
var splineList = new List<CurvePoint>();
|
var measuredList = new List<CurvePoint>();
|
|
var name = "22_30";
|
var path = AppDomain.CurrentDomain.BaseDirectory;
|
var lienPaht = path + @$"\pumpcsv\{name}_old_curve.csv";
|
var measuredPath = path + @$"\pumpcsv\{name}.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));
|
}
|
}
|
|
|
// 样条曲线处理
|
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 PumpCurveDataFusionCorrectorHelper();
|
var helper = new PumpCurveDataFusionCorrectorHelper2();
|
(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");
|
CsvHelper.ExportToCsv(pt_list, Path.Combine(fullPath, @$"{name}_update_curve.csv"));
|
|
Console.WriteLine("ok");
|
Console.ReadKey();
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|