我目前正在對四個單元進行壽命測試,這些單元定期響應氣體應用(儘管氣體應用之間的間隔不一致!)。我將數據繪製成下圖:

有誰知道我可以過濾峰值讀數的方法,以便我可以顯示趨勢線並繼續進一步分析?大多數數據點都接近每個單位的最小讀數,因此數據集的任何擬合線都出現在圖表的底部:

我可以手動執行此操作,但是由於需要在整個測試過程中重複執行此操作,因此可能會變得非常乏味。先致謝!
您希望找出哪些趨勢線?顯然,數據中有很多噪音,但我可以看到潛在的一些區域“在噪音中”,類似於趨勢線。如果你只想提取最大值(即頂行),你可以每次提取最大值嗎?另一個選擇可能是查看移動平均線( 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;