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)


<< シーケンス / 関数に関するFAQ一覧へ戻る