FAQ
FAMOS
シーケンス / 関数top
└シーケンス / 関数
ID.s068
Q. 0を中心に±に振れる信号があります。正側を5倍、負側を3倍にしたい
A.
以下のサンプルファイルを例にします。
この信号に対して0より大きい値を5倍、0より小さい値を3倍にします。
最初に必要なのでは、0より大きい信号を見つけることです。ある条件を設定し、値を抽出するためには関数SearchLevelを利用すると便利です。
resp = SearchLevel( Data, 2, 0, 0, 0, 0, 0, 0)
この関数を実行すると、0より大きい値を抽出します。
この信号を5倍して、元のデータに戻すことで目的を達成します。信号を5倍にするためには単純に5を掛ければよいです。元のデータに値を戻すには関数”Set”を利用します。
SearchLevelの結果はXY波形です。Set関数の第2引数にXデータ、第3引数にYデータを指定します。
Data = Set( Data, resp.X, resp.Y*5)
以上で結果は正側のみ5倍になります。
この後、負側も同様に行います。
以上です。
シーケンスは以下の通りです。
;***********************************************
;
; 正側を5倍、負側を3倍にします
;
;***********************************************
; 後でデータを比較するためにコピーします。
Data = sintest1
; 正側のデータを抽出します
resp = SearchLevel(Data, 2, 0, 0, 0, 0, 0, 0)
; 負側のデータを抽出します
resm = SearchLevel(Data, 1, 0, 0, 0, 0, 0, 0)
; 元のデータに演算結果を戻します
Data = Set(Data,resp.X, resp.Y*5)
Data = Set(Data,resm.X, resm.Y*3)