FAQ

FAMOS

OROS24ユーザーのための質問コーナー

ID.o009

Q. OROSの最大値検出方法について

A.


定義

最大値の検出については以下のように定義されています。

最大値とは予め設定したスレッショルドを超えた極大値のことを意味します。

 

シーケンス

;***********************************************
;OROS最大値検出
;***********************************************

;Parametas -------------------------------------

_k_MaxThresh = 20

;初期値の設定-----------------------------------------------
_k_tempMax  = -1E20
_k_tempMin  = -1E20
_k_Prev     = 0
_k_SampTime = XDel?(Data)

If Data[2]>Data[1]
  _k_Prev = 1
End
_k_i=3
MaxiX = Leng(0,0)
MaxiY = Leng(0,0)
While _k_i<=Leng?(Data)
  If Data[_k_i]>Data[_k_i-1]
    If _k_Prev<>1 _k_Prev=1             ;パターンDU
      If Data[_k_i-1]<_k_TempMin
        _k_TempMin = Data[_k_i-1]
      End
    End
  Else
    If _k_Prev=1
      _k_Prev=0                      ;パターンUD
      If Data[_k_i-1]>_k_TempMax
        _k_TempMax = Data[_k_i-1]       ;一時的な極大値の更新
        _k_TempX   = (_k_i-2)*_k_SampTime
      End
    End
    If _k_TempMax-_k_MaxThresh>Data[_k_i]
      If _k_TempMax-_k_MaxThresh>_k_TempMin
        MaxiX = Join(MaxiX, _k_TempX)
        MaxiY = Join(MaxiY, _k_TempMax)
        _k_TempMax = -1E20
        _k_TempMin =  1E20
      End
    End
  End
  _k_i=_k_i+1
End

;------------------------------
;データ処理部
;------------------------------

_k_TempX = Sort( MaxiY, 4)              ;データを大きい順に並べ、そのときのインデックスを取得
_k_TempX = _k_TempX+1                   ;ソートした結果はX単位ですのでインデックスに変換します。
MaxiX    = ValueIndex(MaxiX, _k_TempX)  ;Xデータを並べ替えます
MaxiY    = Sort( MaxiY, 2)              ;Yデータを昇順に並べ替えます

;sweap variable-----------------------------------------
Delete _k_*


製品詳細はこちら

<< OROS24ユーザーのための質問コーナーに関するFAQ一覧へ戻る