FAQ
FAMOS
シーケンス / 関数top
└シーケンス / 関数
ID.s059
Q. ノイズが多い場合のピーク値の検出
A.
以下の波形のようにノイズが多く含まれた信号のピーク値を求めます。
ピークとして、0.7[sec]付近の正側のピークと0.8[sec]付近の負側のピークを求めます。
最初にノイズ成分に影響されないようにオリジナル波形にローパスフィルターを適用した波形を適用します。
S_100 = Smo( ORIGINAL, 0.10)
次に信号が0を横切ったときを検出します。このとき関数”All0”をします。All0は0を横切ったときのX座標(Array)を返します。
さらに、この結果の何番目(index)が正側のピークを表しているか求めます。
Array = All0( S_100) ;0点を横切る全ての点を抽出 max_x = Pos( S_100, Max(S_100)) ;最大値のX座標を取得 index = Floor( Pos(Array, max_x))+1 ;この変数にピークに対応 するインデックス番号が入力されます。 ;X座標に相当するインデックス番号を取得
この変数にピークに対応 するインデックス番号が入力されます。 ;X座標に相当するインデックス番号を取得
この後、正側と負側のピークを検出する区間を切り出します。
p_peak = cut( Original, ValueIndex(Array,index-1), ValueIndex(Array,index)) m_peak = cut( Original, ValueIndex(Array,index ), ValueIndex(Array, index+1 ))
切り出された波形に対して、ピーク値を求めます。
plus = Max(p_peak) minus = Min(p_peak)
以上でピーク値を求めることができます。この結果をカーブウィンドウにプロットするには以下のコマンドを適用すると表示できます。
plus_G = XYof( Pos( p_peak , Max(p_peak)), Max(p_peak)) minus_G = XYof( Pos( m_peak , Min(m_peak)), Min(m_peak))