私はかなり複雑な状況にあり、SAS に慣れていないため、解決策を見つけようとして壁に頭をぶつけています。2 つのデータセット (コントローラー、daq) があり、各データセットには電力の測定値があります。コントローラーのデータを daq データと揃える必要があります。各データセットにはタイム スタンプがありますが、daq とコントローラーの時刻を同期していないため、2 つのデータセットの間に不確定な時間差があります。さらに複雑なことに、両方のシステムが異なるレートでデータをサンプリングします...そして、コントローラはテスト中にデータを記録するだけですが、daq はより長い期間記録します。したがって、典型的なテスト実行では、コントローラには約 1000 行のデータがあり、daq には異なるサンプル レートで 30,000 行があります (つまり、絶対測定値が正確に一致しない可能性があります)。
データを自動的に調整する方法を見つけようとしています。つまり、コントローラー データの曲線が daq データの曲線と最もよく一致する場所を見つけて、時間のデルタを求めています。
私の現在の考えは、2 つの配列を反復処理し、daqrow[i] を controllerow[j] から減算してから、曲線のデルタを合計して最小デルタを見つけることです。
set work.daqPower work.controlPower
array pwr_daq{*} daqPwr; /* daqPwr is name of power variable in work.daqPower */
array pwr_control{*} controlPwr; /* controllPwr is name of power variable in work.controlPower */
do idaq=1 to (30000 - 1000);
x = idaq;
tmp = 0;
do jcontrol=1 to 1000;
tmp = tmp + ABS(pwr_daq[x] - pwr_control[jcontrol]);
x = x + 1;
end;
output;
end;
配列のドキュメントを理解していないようです。私はオンラインで検索して多くの例を調べてきましたが、2 つのデータセットを読み取ってそれらから別の配列を作成する例は見つかりませんでした。同様の例へのリンク、またはより良いアプローチのアイデアがあれば、よろしくお願いします。
ありがとう、
フレッド
データサンプルで更新:
DateTime daqPower
05JUL12:10:10:00 205.45687866211
05JUL12:10:10:00 204.33529663086
05JUL12:10:10:00 204.17504882813
05JUL12:10:10:00 203.53414916992
05JUL12:10:10:00 203.53414916992
05JUL12:10:10:00 204.81597900391
05JUL12:10:10:00 204.33529663086
05JUL12:10:10:00 205.13641357422
05JUL12:10:10:00 207.05914306641
05JUL12:10:10:00 206.73867797852
05JUL12:10:10:00 207.05914306641
05JUL12:10:10:00 208.50119018555
05JUL12:10:10:00 208.50119018555
05JUL12:10:10:00 207.53982543945
05JUL12:10:10:00 207.21936035156
05JUL12:10:10:00 206.73867797852
05JUL12:10:10:00 206.09777832031
05JUL12:10:10:00 205.77731323242
05JUL12:10:10:00 205.13641357422
05JUL12:10:10:00 205.45687866211
DateTime controlPower
05JUL12:10:01:19 226.8705902
05JUL12:10:01:19 232.526886
05JUL12:10:01:19 236.9337006
05JUL12:10:01:19 242.3483887
05JUL12:10:01:19 246.9274292
05JUL12:10:01:19 246.3426819
05JUL12:10:01:19 244.3251495
05JUL12:10:01:19 242.6235352
05JUL12:10:01:20 243.5477753
05JUL12:10:01:20 240.9849854
05JUL12:10:01:20 230.8181458
05JUL12:10:01:20 225.579071
05JUL12:10:01:20 221.7199097
05JUL12:10:01:20 214.7053986
05JUL12:10:01:20 212.1452332
05JUL12:10:01:20 210.9714203
05JUL12:10:01:20 213.6631317
05JUL12:10:01:20 213.3510437
05JUL12:10:01:21 209.8970642
05JUL12:10:01:21 210.884964
時間が一致しないことに注意してください (タイムスタンプが互いに約 10 分以上同期していない可能性があると「聞いた」ことがあります)。ポイントは、コントローラーからの曲線がdaqよりもはるかに短い間隔であり、コントローラーの曲線がコントローラーの曲線と最も密接に一致する場所を調整することによって時間差を決定しようとしているということです. 最初は最大値を一致させることだけを考えていたので、曲線と言いますが、コントローラーデータからの最大値は1つしかありませんが、daqデータははるかに長い期間続き、電力曲線はその値を何度も横切ります。それだけに基づいてデータを調整することは困難です。