<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、
固定長のデータ系列で3点移動平均[MA]を実行し、一定の時間間隔で収集します(つまり、その時点で30分ごとに収集された一連の150のデータ点)。従来のMAは2つのデータ系列をマージするため、データ系列を含む新しい列を追加し([Sequence(、、、)]を使用して番号を増やし)、MAを実行する範囲のリミッタとして使用しました。スクリプトは機能し、それは非常に単純ですが、私はもっと効果的なものを使用したいと思います。
"i"がデータ系列IDであるForループを使用してこれを行う方法はありますか?
変数名を変更せずに複数の列で同じスクリプトを実行する方法を教えてください。
これは私が現在使用しているスクリプトです。

平均(
:T1_F [行() - 1、空()]、
:T1_F [行()、空()]、
:T1_F [行()+ 1、空()]、)、
。)
ここで "T1_F"はスムージングするための私のY変数で、私はスムージングするために数百のYを持っています。
アドバイスをいただければ幸いです。
-JGL
こんにちはJGL、
1つの解決策は、Eval(Parse(Eval Insert()))を使用してループを作成し、目的の列を式に挿入することです。 スクリプトの例は以下の通りです。
//例
ここにデフォルトの名前 ( 1 ) ;
bigClass = 開いた ( "$ SAMPLE_DATA / Big Class.jmp" ) ;
colList = リスト ( : 高さ 、 : 重量 ) ; //移動平均を作成する列
にとって ( 私 = 1 、私 <= 長さ ( colList ) 、私 ++、
コル = カラム ( colList [ 私 ] ) ;
colName = Concat ( "MA(" 、 colList [ 私 ] << 名前を取得 () 、 「)」 ) ;
評価 (
解析する (
評価挿入 (
"bigClass <<新しい列(\!" ^ colName ^ \!"、
数値、
連続した、
形式(\!"Best \!"、12)、
式(平均(列として(^ col ^)[行()-1、空()])、
列(^ col ^)[Row()、Empty()]として、
列(^ col ^)[行()+ 1、空()]))); "
)
)
) ;
) ;