<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />嗨!我編寫了一個簡單的移動平均值,但我需要處理數據(計算斜率變化),所以我想將它保存到數據表中。但是我該怎麼編寫腳本呢?
關於如何計算坡度的想法也歡迎!我想的是簡單地將導數作為滯後(ds / dt =(時滯(時間,x))/(位置滯後(位置,x))

吉姆,謝謝,這就是訣竅
同時我手動計算,但現在將使用Jim的解決方案。和JoseGL,我使用了你也應該能夠使用的以下公式。ÿ 您可以使用Lag(:variable,index)來指示行索引。這種方式更加靈活,因為您可以將計數器n更改為任何所需的值。

在我的數據中,我經常需要計算一小部分行的斜率,這些行在> 500K行的文件中每200行重複一次,這就是我通常這樣做的方式:
1)使用序列將“人工標記”* [例如,0到200]添加到“行系列”
*我稱之為可變測量時間
2)設置斜率公式的X和Y平均值的長度
3)使用IF語句估計我想要的範圍的斜率
4)[在我的數據中]我用斜率校正所有測量值
這是我使用的腳本[大量硬編碼,但為我完成了工作^ _ ^]
Y_Mean = Mean( :MA_T1[Row()], :MA_T1[Row() + 1], :MA_T1[Row() + 2], :MA_T1[Row() + 3], :MA_T1[Row() + 4], :MA_T1[Row() + 5], :MA_T1[Row() + 6], :MA_T1[Row() + 7], :MA_T1[Row() + 8], :MA_T1[Row() + 9], :MA_T1[Row() + 10], :MA_T1[Row() + 11], :MA_T1[Row() + 12], :MA_T1[Row() + 13], :MA_T1[Row() + 14] ); X_Mean = Mean( :Measurement time[Row()], :Measurement time[Row() + 1], :Measurement time[Row() + 2], :Measurement time[Row() + 3], :Measurement time[Row() + 4], :Measurement time[Row() + 5], :Measurement time[Row() + 6], :Measurement time[Row() + 7], :Measurement time[Row() + 8], :Measurement time[Row() + 9], :Measurement time[Row() + 10], :Measurement time[Row() + 11], :Measurement time[Row() + 12], :Measurement time[Row() + 13], :Measurement time[Row() + 14] ); If( :Measurement time == 1, Slope = ((:Measurement time[Row()] - X_Mean) * (:MA_T1[Row()] - Y_Mean) + (:Measurement time[Row() + 1] - X_Mean) * (:MA_T1[Row() + 1] - Y_Mean) + (:Measurement time[Row() + 2] - X_Mean) * (:MA_T1[Row() + 2] - Y_Mean) + (:Measurement time[Row() + 3] - X_Mean) * (:MA_T1[Row() + 3] - Y_Mean) + (:Measurement time[Row() + 4] - X_Mean) * (:MA_T1[Row() + 4] - Y_Mean) + (:Measurement time[Row() + 5] - X_Mean) * (:MA_T1[Row() + 5] - Y_Mean) + (:Measurement time[Row() + 6] - X_Mean) * (:MA_T1[Row() + 6] - Y_Mean) + ( :Measurement time[Row() + 7] - X_Mean) * (:MA_T1[Row() + 7] - Y_Mean) + (:Measurement time[Row() + 8] - X_Mean) * (:MA_T1[Row() + 8 ] - Y_Mean) + (:Measurement time[Row() + 9] - X_Mean) * (:MA_T1[Row() + 9] - Y_Mean) + (:Measurement time[Row() + 10] - X_Mean) * ( :MA_T1[Row() + 10] - Y_Mean) + (:Measurement time[Row() + 11] - X_Mean) * (:MA_T1[Row() + 11] - Y_Mean) + (:Measurement time[Row() + 12] - X_Mean) * (:MA_T1[Row() + 12] - Y_Mean) + (:Measurement time[Row() + 13] - X_Mean) * (:MA_T1[Row() + 13] - Y_Mean) + ( :Measurement time[Row() + 14] - X_Mean) * (:MA_T1[Row() + 14] - Y_Mean)) / ((:Measurement time[Row()] - X_Mean) ^ 2 + ( :Measurement time[Row() + 1] - X_Mean) ^ 2 + (:Measurement time[Row() + 2] - X_Mean) ^ 2 + (:Measurement time[Row() + 3] - X_Mean) ^ 2 + (:Measurement time[Row() + 4] - X_Mean ^ 2) + (:Measurement time[Row() + 5] - X_Mean) ^ 2 + (:Measurement time[Row() + 6] -X_Mean) ^ 2 + (:Measurement time[Row() + 7] - X_Mean) ^ 2 + (:Measurement time[Row() + 8] - X_Mean) ^ 2 + (:Measurement time[Row() + 9] - X_Mean) ^ 2 + (:Measurement time[Row() + 10] - X_Mean) ^ 2 + (:Measurement time[Row() + 11] - X_Mean) ^ 2 + ( :Measurement time[Row() + 12] - X_Mean) ^ 2 + (:Measurement time[Row() + 13] - X_Mean) ^ 2 + (:Measurement time[Row() + 14] -X_Mean) ^ 2) ); If( :Measurement time < 1, :MA_T1, :MA_T1 - Slope * :Measurement time );)
希望這可以幫助,
如果有人知道怎麼做,請告訴我:

[即,下標[user] - 給變量的名稱,而不必使用變量的實際名稱]
-JoseGL
下面是一個簡單的示例,它來自Help ==> Scripting Index,用於時間序列對象,它說明瞭如何將簡單移動平均值保存到腳本中的數據表中。
名稱默認為此處 ( 1 ) ;
DT = 打開 ( “$ SAMPLE_DATA /股票價格.jmp” ) ;
OBJ = 時間序列 (
ÿ ( : 關 ) ,
簡單
移動平均線 ( 添加模型 ( 五 ) )
) ;
resultdt = OBJ <<
簡單移動平均線 ( 保存到數據表 ) ;
我不會對坡度的計算發表意見。