Commit 25dcf04c authored by 潘栩锋's avatar 潘栩锋 🚴

Merge branch 'dev-6.0' of http://private.flyautomation.net:82/panruising/hemei into dev-6.0

parents d02ee1ae bd869878
......@@ -489,6 +489,8 @@ namespace FLY.HeatingHelper.UI.UiModule
int end = vm1.MaxFrame;
if (LockFrames == 2)
{
int idx1 = vm1.SelectedFrame;
int idx2 = vm2.SelectedFrame;
if (!LockAngle) SearchAngle();
else
{
......@@ -497,6 +499,15 @@ namespace FLY.HeatingHelper.UI.UiModule
NewResetBolt = tmp.Item1;
TandH_Corel = tmp.Item2;
}
var heat = DataHelper.VectorSub(_data.GetHeatsByIndex(idx1, -1, -1),
_data.GetHeatsByIndex(idx2, -1, -1));
var t1 = _data.GetThicksByIndex(idx1, NewResetBolt, double.MaxValue);
var th = DataHelper.VectorSub(_data.GetThicksByIndex(idx2, NewResetBolt, double.MaxValue), t1);
Kp = _data.CalculateHeatToThickFactor(heat, th, Misc.MyMath.Avg(t1));
//double b;
//double a;
//Misc.MyMath.Linest(heat, th, out a, out b);
//Kp = a;
SearchEnabled = true;
UpdateVarChart();
return;
......
......@@ -135,6 +135,8 @@ namespace FLY.HeatingHelper
/// <param name="SearchRotAngle"></param>
/// <returns>返回值:Tuple<偏转数,相关系数,旋转角度变化量></returns>
Tuple<int, double, double> SearchMaxSimilarity(int idxL, int idxB, double searchRange, bool SearchRotAngle);
double CalculateHeatToThickFactor(double[] heats, double[] thicks, double thickmean);
#endregion
#region 数据处理-数据分类接口
......
......@@ -751,7 +751,7 @@ namespace FLY.HeatingHelper
/// <param name="thicks">厚度变化量</param>
/// <param name="thickmean">厚度均值</param>
/// <returns></returns>
private double CalculateHeatToThickFactor(double[] heats, double[] thicks, double thickmean)
public double CalculateHeatToThickFactor(double[] heats, double[] thicks, double thickmean)
{
int cnt = thicks.Count();
if (cnt < 2) return double.NaN;
......@@ -774,14 +774,15 @@ namespace FLY.HeatingHelper
// Step 3
for (i = 0; i < t.Count; i++)
{
if (h[i] < 5) h[i] = 0;
if (Math.Abs(h[i]) < 5) h[i] = 0;
}
// Step 4
if (h.Count() <= 0) return double.NaN;
var hh = EffectFilter(h.ToArray());
// step 5
for (i = 0; i < hh.Count(); i++)
{
if (hh[i] < 0.001) t[i] = 0;
if (Math.Abs(hh[i]) < 0.001) t[i] = 0;
}
// step 6
double sumt = 0, sumh = 0;
......@@ -792,6 +793,7 @@ namespace FLY.HeatingHelper
}
// Step 7
if (sumt < 0.001) return double.NaN;
return sumh / (sumt * 100 / thickmean);
}
......@@ -1321,7 +1323,7 @@ namespace FLY.HeatingHelper
double maxcorel = -100;
int theshift = 0;
int idx1 = fmin, idx2 = fmax;
double deltaAngle = 0;
double deltaAngle = _rotAngles[fmax];
double factor = 1;
if (midbolt == int.MaxValue)
{
......@@ -1355,12 +1357,14 @@ namespace FLY.HeatingHelper
result.frameShift = theshift;
result.similarity = maxcorel;
result.deltaAngle = deltaAngle;
var angle = GetRotAngleByIndex(idx1) + deltaAngle;
var heat = DataHelper.VectorSub(GetHeatsByIndex(idx1, -1, -1), GetHeatsByIndex(idx2, -1, -1));
var t1 = GetThicksByIndex(idx1, 1, angle);
var th = DataHelper.VectorSub(GetThicksByIndex(idx2, 1, angle), t1);
result.ThickToHeatFactor = CalculateHeatToThickFactor(heat, th,
MathNet.Numerics.Statistics.Statistics.Mean(t1));
var t1 = GetThicksByIndex(idx1, theshift, deltaAngle);
var th = DataHelper.VectorSub(GetThicksByIndex(idx2, theshift, deltaAngle), t1);
result.ThickToHeatFactor = CalculateHeatToThickFactor(heat, th, Misc.MyMath.Avg(t1));
//double b;
//double a;
//Misc.MyMath.Linest(heat, th, out a, out b);
//result.ThickToHeatFactor = a;
});
if (report != null)
{
......@@ -1394,7 +1398,7 @@ namespace FLY.HeatingHelper
{
double maxcorel = double.MinValue;
int theshift = 0;
double deltaAngle = 0;
double deltaAngle = _rotAngles[idxB];
if (idxL > idxB)
{
var tmp = idxL;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment