202601061423

This commit is contained in:
GukSang.Jin
2026-01-06 14:23:40 +08:00
parent b1c3e2781b
commit 36f9b3b965
2 changed files with 51 additions and 80 deletions

View File

@@ -920,7 +920,7 @@ namespace WindowsFormsApp6
/// <summary> /// <summary>
/// 计算标准偏差 /// 计算标准偏差
/// 计算方式:基于每个试样的平均芯吸速率计算标准偏差(组间标准偏差) /// 计算方式:基于每个试样的平均芯吸速率计算标准偏差(组间标准偏差)
/// 结果:只有一个标准偏差值,合并显示在第1列 /// 结果:只有一个标准偏差值,只在试样1的第1列显示
/// ///
/// 说明: /// 说明:
/// - 每5个试样为一组计算该组的标准偏差 /// - 每5个试样为一组计算该组的标准偏差
@@ -938,9 +938,9 @@ namespace WindowsFormsApp6
// 清空标准偏差行的所有数据 // 清空标准偏差行的所有数据
for (int i = 1; i <= currentSampleCount; i++) for (int i = 1; i <= currentSampleCount; i++)
{ {
stdRow[$"试样{i}_1"] = 0.0; stdRow[$"试样{i}_1"] = DBNull.Value;
stdRow[$"试样{i}_2"] = 0.0; stdRow[$"试样{i}_2"] = DBNull.Value;
stdRow[$"试样{i}_3"] = 0.0; stdRow[$"试样{i}_3"] = DBNull.Value;
} }
// 计算每组5个试样的标准偏差 // 计算每组5个试样的标准偏差
@@ -982,7 +982,7 @@ namespace WindowsFormsApp6
stdDev = Math.Sqrt(sumOfSquares / (groupAverages.Count - 1)); stdDev = Math.Sqrt(sumOfSquares / (groupAverages.Count - 1));
} }
// 只在该组第1个试样的第1列显示标准偏差(合并显示效果) // 只在该组第1个试样的第1列显示标准偏差其他列保持DBNull
stdRow[$"试样{startSample}_1"] = Math.Round(stdDev, 2); stdRow[$"试样{startSample}_1"] = Math.Round(stdDev, 2);
} }
} }
@@ -992,7 +992,7 @@ namespace WindowsFormsApp6
// 清空所有行的标准偏差列 // 清空所有行的标准偏差列
foreach (DataRow row in sampleDataTable.Rows) foreach (DataRow row in sampleDataTable.Rows)
{ {
row[ROW_STD_DEVIATION] = 0.0; row[ROW_STD_DEVIATION] = DBNull.Value;
} }
// 计算每组5个试样的标准偏差 // 计算每组5个试样的标准偏差
@@ -1037,7 +1037,7 @@ namespace WindowsFormsApp6
stdDev = Math.Sqrt(sumOfSquares / (groupAverages.Count - 1)); stdDev = Math.Sqrt(sumOfSquares / (groupAverages.Count - 1));
} }
// 只在该组第1个试样的第1次测试行显示标准偏差(合并显示效果) // 只在该组第1个试样的第1次测试行显示标准偏差其他行保持DBNull
int targetRowIndex = (startSample - 1) * 3; // 第1次测试的行索引 int targetRowIndex = (startSample - 1) * 3; // 第1次测试的行索引
if (targetRowIndex < sampleDataTable.Rows.Count) if (targetRowIndex < sampleDataTable.Rows.Count)
{ {

View File

@@ -455,29 +455,21 @@ namespace WindowsFormsApp6
DataRow avgRow = dataTable.NewRow(); DataRow avgRow = dataTable.NewRow();
avgRow["序号"] = $"平均时间(s) 试样{startSample}-{endSample}"; avgRow["序号"] = $"平均时间(s) 试样{startSample}-{endSample}";
// 将平均值显示在该组的所有试样列(合并显示效果) // 只在该组第一个试样列显示平均值其他列设置为DBNull
for (int i = startSample; i <= endSample; i++) for (int i = 1; i <= currentSampleCount; i++)
{ {
if (dataTable.Columns.Contains($"试样{i}")) if (dataTable.Columns.Contains($"试样{i}"))
{
// 只在该组第一个试样列显示平均值
if (i == startSample)
{ {
avgRow[$"试样{i}"] = groupAvg; avgRow[$"试样{i}"] = groupAvg;
} }
} else
// 其他列设置为空
for (int i = 1; i < startSample; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{ {
avgRow[$"试样{i}"] = DBNull.Value; avgRow[$"试样{i}"] = DBNull.Value;
} }
} }
for (int i = endSample + 1; i <= currentSampleCount; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
avgRow[$"试样{i}"] = DBNull.Value;
}
} }
dataTable.Rows.Add(avgRow); dataTable.Rows.Add(avgRow);
@@ -754,28 +746,21 @@ namespace WindowsFormsApp6
avgAbsorption = 0; avgAbsorption = 0;
} }
// 将平均值显示在该组的所有试样列(合并显示效果) // 只在该组第一个试样列显示平均值其他列设置为DBNull
for (int i = startSample; i <= endSample; i++) for (int i = 1; i <= currentSampleCount; i++)
{ {
if (dataTable.Columns.Contains($"试样{i}")) if (dataTable.Columns.Contains($"试样{i}"))
{
// 只在该组第一个试样列显示平均值
if (i == startSample)
{ {
avgRow[$"试样{i}"] = avgAbsorption; avgRow[$"试样{i}"] = avgAbsorption;
} }
} else
// 其他列设置为空
for (int i = 1; i < startSample; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{ {
avgRow[$"试样{i}"] = DBNull.Value; avgRow[$"试样{i}"] = DBNull.Value;
} }
} }
for (int i = endSample + 1; i <= currentSampleCount; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
avgRow[$"试样{i}"] = DBNull.Value;
}
} }
dataTable.Rows.Add(avgRow); dataTable.Rows.Add(avgRow);
@@ -790,28 +775,21 @@ namespace WindowsFormsApp6
maxAbsorption = 0; maxAbsorption = 0;
} }
// 将最大值显示在该组的所有试样列(合并显示效果) // 只在该组第一个试样列显示最大值其他列设置为DBNull
for (int i = startSample; i <= endSample; i++) for (int i = 1; i <= currentSampleCount; i++)
{ {
if (dataTable.Columns.Contains($"试样{i}")) if (dataTable.Columns.Contains($"试样{i}"))
{
// 只在该组第一个试样列显示最大值
if (i == startSample)
{ {
maxRow[$"试样{i}"] = maxAbsorption; maxRow[$"试样{i}"] = maxAbsorption;
} }
} else
// 其他列设置为空
for (int i = 1; i < startSample; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{ {
maxRow[$"试样{i}"] = DBNull.Value; maxRow[$"试样{i}"] = DBNull.Value;
} }
} }
for (int i = endSample + 1; i <= currentSampleCount; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
maxRow[$"试样{i}"] = DBNull.Value;
}
} }
dataTable.Rows.Add(maxRow); dataTable.Rows.Add(maxRow);
@@ -826,28 +804,21 @@ namespace WindowsFormsApp6
stdDev = 0; stdDev = 0;
} }
// 将标准偏差显示在该组的所有试样列(合并显示效果) // 只在该组第一个试样列显示标准偏差其他列设置为DBNull
for (int i = startSample; i <= endSample; i++) for (int i = 1; i <= currentSampleCount; i++)
{ {
if (dataTable.Columns.Contains($"试样{i}")) if (dataTable.Columns.Contains($"试样{i}"))
{
// 只在该组第一个试样列显示标准偏差
if (i == startSample)
{ {
stdDevRow[$"试样{i}"] = stdDev; stdDevRow[$"试样{i}"] = stdDev;
} }
} else
// 其他列设置为空
for (int i = 1; i < startSample; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{ {
stdDevRow[$"试样{i}"] = DBNull.Value; stdDevRow[$"试样{i}"] = DBNull.Value;
} }
} }
for (int i = endSample + 1; i <= currentSampleCount; i++)
{
if (dataTable.Columns.Contains($"试样{i}"))
{
stdDevRow[$"试样{i}"] = DBNull.Value;
}
} }
dataTable.Rows.Add(stdDevRow); dataTable.Rows.Add(stdDevRow);
} }