FAQ

FAMOS

シーケンス / 関数top

シーケンス / 関数

ID.

Q. XY波形の移動平均を求めたい。

A.


MvMean()関数はXY波形をサポートしていないため、下記のようなシーケンスで求めて下さい。

例)
LOAD sintest?
Data = XYof(sintest5, sintest2) ; サンプルデータ

; https://www.toyo.co.jp/mecha/faq/detail/id=2885
_Xsort = Sort(Data.X, 1) ;X軸データを単調増加へ
_Ysort = Value(Data.Y, Sort(Data.X, 3)) ;Y軸データを単調増加へ

_dx = 0.5 ; Xの刻み幅
_x0 = Floor(Min(Data.X) / _dx + 1) * _dx ; Xの開始値。最小値をXの刻み幅で丸め
_xend = Floor(Max(Data.X) / _dx) * _dx ; Xの終了値。最大値をXの刻み幅で丸め

_loop = (_xend - _x0) / _dx ; 区間数
Result = ramp(_x0+_dx/2, _dx, _loop) ; 結果を保存する変数(切り出し範囲の中央にプロット)
_index1 = PosiEx2(_Xsort, _x0, 0, 4) ; (最初の)切り出し開始位置
for _iii = 1 to _loop step 1
    _x = _dx*_iii + _x0 ; Yを切り出したい範囲のXの終了値
    _index2 =  PosiEx2(_Xsort, _x, 0, 4) ; 切り出し終了位置
    _Ycut = CutIndex(_Ysort, _index1, _index2) ; 切り出し
    _Ymean = Mean(_Ycut) ; 平均
    Result[_iii] = _Ymean ; 結果を保存
    _index1 = _index2 + 1 ; 切り出し開始位置更新
end
SetUnit(Result, Unit?

製品詳細はこちら

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