<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 <<
简单移动平均线 ( 保存到数据表 ) ;
我不会对坡度的计算发表意见。