diff --git a/experiment_data/analysis_state/peak.xlsx b/experiment_data/analysis_state/peak.xlsx new file mode 100644 index 0000000..66e4142 Binary files /dev/null and b/experiment_data/analysis_state/peak.xlsx differ diff --git a/experiment_data/analysis_state/~$peak.xlsx b/experiment_data/analysis_state/~$peak.xlsx new file mode 100644 index 0000000..d4a5841 Binary files /dev/null and b/experiment_data/analysis_state/~$peak.xlsx differ diff --git a/experiment_data/analysis_state/~$标样.xlsx b/experiment_data/analysis_state/~$标样.xlsx new file mode 100644 index 0000000..d4a5841 Binary files /dev/null and b/experiment_data/analysis_state/~$标样.xlsx differ diff --git a/src/data/pointcalculate.cpp b/src/data/pointcalculate.cpp index ff94c92..d8bc7a7 100644 --- a/src/data/pointcalculate.cpp +++ b/src/data/pointcalculate.cpp @@ -178,6 +178,7 @@ QPointF PointCalculate::findClosestPointByX(float x) { void PointCalculate::setRegionPointX(const float left, const float right) { + logde<<"dataVtr size:"<<_dataVtr.size(); logde<<"select point param left,right:"<::infinity(); // 初始化为正无穷 - QPointF closestPoint; + QPointF closestPoint; - for (const Global::ExperimentData& ed : _dataVtr) { - if (left < ed.sampleTemp && ed.sampleTemp < right) { - float diff = std::abs(ed.dsc - valueY); - if (diff < minValue) { - minValue = diff; - closestPoint = QPointF(ed.sampleTemp, ed.dsc); - } - } - } + for (const Global::ExperimentData& ed : _dataVtr) { + if (left < ed.sampleTemp && ed.sampleTemp < right) { + float diff = std::abs(ed.dsc - valueY); + if (diff < minValue) { + minValue = diff; + closestPoint = QPointF(ed.sampleTemp, ed.dsc); + } + } + } - return closestPoint; + return closestPoint; } QString PointCalculate::textFormatGlassTranstion(const float t1,const float tg,const float t2) @@ -479,3 +480,25 @@ QString PointCalculate::textFormatGlassTranstion(const float t1,const float tg,c .arg(QString::number(tg, 'f', 3)) .arg(QString::number(t2, 'f', 3)); } + + +QPair PointCalculate::getMaxMinValue() +{ + if (_dataVtr.isEmpty()) { + return QPair(0.0f, 0.0f); + } + + float maxDsc = std::numeric_limits::lowest(); // 初始化为最小浮点数 + float minDsc = std::numeric_limits::max(); // 初始化为最大浮点数 + + for(const Global::ExperimentData &ed : _dataVtr) { + if (ed.dsc > maxDsc) { + maxDsc = ed.dsc; + } + if (ed.dsc < minDsc) { + minDsc = ed.dsc; + } + } + + return QPair(minDsc, maxDsc); +} diff --git a/src/data/pointcalculate.h b/src/data/pointcalculate.h index d05f3bc..a899ce3 100644 --- a/src/data/pointcalculate.h +++ b/src/data/pointcalculate.h @@ -14,15 +14,16 @@ void setRegionPointX(const float,const float); QPointF getClosestPointByX(const float); QPointF getClosestPointByY(const float left,const float right,const float valueY); QPointF getPeakPoint(); +QPair getMaxMinValue(); QPair calculateStartAndEndPoint(); float calculateArea(); // text format QString textFormatPeakPoint(const float enthalpyValue, - const float peakValue, - const float startPoint, - const float endPoint); + const float peakValue, + const float startPoint, + const float endPoint); QString textFormatNumbericalLabel(const QPointF); QString textFormatStartPoint(const QPointF); QString textFormatEndPoint(const QPointF); diff --git a/src/ui/centralwidget.cpp b/src/ui/centralwidget.cpp index efcd010..f24adb7 100644 --- a/src/ui/centralwidget.cpp +++ b/src/ui/centralwidget.cpp @@ -175,6 +175,8 @@ void CentralWidget::slotRecvAnalysisFileName(const QString &fileName) for(int i = 0;i < cfd.phaseTotalVtr.size();i++){ Global::PhaseTotalInfo& pti = cfd.phaseTotalVtr[i]; + logde<<"data Vtr size:"<startEndPointPair = PointCalculate::getStartAndEndPoint(); @@ -182,8 +184,9 @@ void CentralWidget::slotRecvAnalysisFileName(const QString &fileName) QPointF endPoint = startEndPointPair.second; _customPlot->xAxis->setRange(0, endPoint.x() / 3 * 4); - QPointF peakPoint = PointCalculate::getPeakPoint(); - float absY = std::abs(peakPoint.y()); + //QPointF peakPoint = PointCalculate::getPeakPoint(); + QPair maxMinPair = PointCalculate::getMaxMinValue(); + float absY = std::abs(maxMinPair.first - maxMinPair.second); _customPlot->yAxis->setRange(- absY * 2,absY *2); // 设置坐标轴标签 @@ -205,8 +208,6 @@ void CentralWidget::slotRecvAnalysisFileName(const QString &fileName) _currentCurve->setData(tVtr, xVtr, yVtr); _currentCurve->setSelectable(QCP::stWhole); // 设置曲线可选 - // -// Global::_curveExperimentDataVtr.push_back(); } _customPlot->replot();