5点3次スムーズ+python実装

1550 ワード

工業データを処理する際、工業データはデータ粒子が細く、ノイズが大きく、量が大きく、測定点の増加に伴い、データ次元が高く、複雑性が高く、関連性が強いが、この関連性は相対的である.データノイズが大きい場合があるため、この関連性は示されない.
最近知っている5時3回の平滑化は、一つの工業データ処理プラットフォームにこれがあると、なぜこれを使うのか疑問に思って、matlabが書いたコードをたくさん探して、なぜこの方法を使うのか説明していないで、ネットに行っていくつかの論文を探して、これらの文献の解釈を引用しました.
「一般的に、データ収集システムで収集されたデータにはノイズが重畳されることが多い.ノイズは周期的、不規則の2種類に分けられる.前者は50 Hzの周波数干渉、後者はランダム信号を表す.」
「ランダム干渉の存在により、ランダム信号で描かれる曲線が折れ線状になることが多く、サンプリングデータには高周波成分が豊富であることを示している.干渉の影響を除去または弱めるために、曲線の滑らかさを高めるためには、サンプリングデータを平滑化する必要がある.一般的な平滑化処理方法は、平均法、スプライン関数法、五点三次平滑化法である.平均法は比較的簡単である、フィルタリング効果も悪い.スプライン関数法はスプライン補間を用いてサンプリング点に近づく方法で平滑化を実現し、アルゴリズムは多様で、効果は比較的良いが、この方法を用いて計算は比較的複雑で、平滑振幅制御は比較的悪い.五点三次平滑法は多項式の最小二乗近似を利用してサンプリング点に対して平滑フィルタリングを行い、アルゴリズムは簡単で、効果は比較的に良い.」
実際には生産現場では、多くのデータがアナログ信号であり、制御中の信号データを自動化すべきである.以前は平均法を用いていたが,今では5時3回の平滑化で探索することが考えられる.
ネット上はすべてMATLABバージョンで、それからただ1つのC言語のバージョンだけを見て、それからここで1つのpythonのを書いて、全ネットの唯一であるべきです.の急いで、先に1つ書いて、データはpdしかありません.Seriesは、データ・ボックスのカラム・データを操作できます.
def mean5_3(Series,m):
    n=len(Series)
    a=Series
    b=Series.copy()
    for i in range(m):   
        b[0] = (69*a[0] + 4*(a[1] + a[3]) - 6*a[2] - a[4]) /70
        b[1] = (2*(a[0] + a[4]) +27*a[1] + 12*a[2] - 8*a[3]) /35
        for j in range(2,n-2):
            b[j] = (-3*(a[j-2] + a[j+2]) + 12*(a[j-1] + a[j+1]) + 17*a[j]) /35
        b[n-2] = (2*(a[n-1] + a[n-5]) + 27*a[n-2] + 12*a[n-3] - 8*a[n-4]) /35
        b[n-1] = (69*a[n-1] + 4*(a[n-2] + a[n-4]) - 6*a[n-3] -a[n-5]) /70
        a=b.copy()
    return a

入力:
Series:データ・ボックスとして入力
m:反復回数