我目前正在对四台设备进行寿命测试,这些设备定期对气体应用做出响应(尽管气体应用之间的间隔不一致!)。我已将数据绘制到下图中:

有人知道我可以用什么方法过滤峰值读数,以便显示趋势线并进行进一步分析吗?大多数数据点都接近每个单元的最小读数,因此数据集的任何拟合线都会出现在图表的底部:

我可以手动完成此操作,但由于需要在整个测试过程中重复此操作,因此可能会非常繁琐。提前致谢!
您希望找出哪些趋势线?显然,您的数据中有很多噪音,但我可以看到“噪音中”的一些区域可能类似于趋势线。如果您只想提取最大值(即顶线),您可以提取每次的最大值吗?另一个选择可能是查看移动平均线( https://community.jmp.com/t5/Discussions/Moving-Average/td-p/87647 )
嗨,本,我要找的点是靠近每个图表顶部的点。我希望在应用气体时从每个单元获得最大响应,以便我可以模拟随时间推移的退化。理想情况下看起来像这样:

这可能有效!有没有一种简单的方法可以在公式列中“提取每次的最大值”?
嗨@AvgLlama27 ,
使用附加的脚本我取得了一些成功 - 我认为使用公式列很难做到这一点。以下脚本的工作原理如下:
1) 根据序列号取一定宽度(行数)的“切片”——以下示例中取样 600 行
2)找到该“切片”的最大值
3)将最大值与第一行和最后一行的第一个和最后一个“经过时间”和“时间戳”值一起存储。
您将必须调整“windowsize”变量并进行调整以找到最佳匹配,但快速达到 600 行效果很好。
前

后

干杯,
本
// Get the current data table
dt = Current Data Table();
Windowsize = 600; //Set this to the 'width' you want to evaluate
// Initialize an empty table to store the results
dt_summary = New Table( "Summary Table",
New Column( "Serial No", Character ),
New Column( "Batch No", Numeric ),
New Column( "Max Value", Numeric ),
New Column( "Min Elapsed Time", Numeric ),
New Column( "Max Elapsed Time", Numeric ),
New Column( "Start Timestamp", "Numeric", "Nominal", Format("m/d/y h:m:s", 23, 0) ),
New Column( "End Timestamp", "Numeric", "Nominal", Format("m/d/y h:m:s", 23, 0) )
);
// Iterate over unique "Serial No"/identifier column
serials = Associative Array( dt:SerialNo ) << Get Keys();//removes duplicate values
//Run a loop to pull out the max row values for each 'window'
For( i = 1, i <= N Items( serials ), i++,
serial = serials[i];
// Get rows for the current Serial No
rows = dt << Get Rows Where( dt:SerialNo == serial );
// Loop through every [windowsize] rows
For( j = 1, j <= N Items( rows ), j += windowsize,
// Determine the range of rows for the current batch
batch_rows = rows[j :: Min( j + (windowsize-1), N Items( rows ) )];
// Get the max value for this batch
max_val = Max( dt:VOCVoltage[batch_rows] );
// Get the range of 'Elapsed Time'
min_elapsed_time = Min( dt:"Elapsed Time,hours"n[batch_rows] );
max_elapsed_time = Max( dt:"Elapsed Time,hours"n[batch_rows] );
// Get the start and end 'Timestamp'
start_timestamp = dt:Timestamp[batch_rows[1]];
end_timestamp = dt:Timestamp[batch_rows[N Items( batch_rows )]];
// Add a row to the summary table
dt_summary << Add Rows( 1 );
dt_summary:Serial No[N Row( dt_summary )] = serial;
dt_summary:Batch No[N Row( dt_summary )] = Ceiling( j / windowsize );
dt_summary:Max Value[N Row( dt_summary )] = max_val;
dt_summary:Min Elapsed Time[N Row( dt_summary )] = min_elapsed_time;
dt_summary:Max Elapsed Time[N Row( dt_summary )] = max_elapsed_time;
dt_summary:Start Timestamp[N Row( dt_summary )] = start_timestamp ;
dt_summary:End Timestamp[N Row( dt_summary )] = end_timestamp ;
);
);
// Show the summary table
dt_summary << Show Window;