軌跡平滑方法-滑動平均平滑(Moving average)

參考文章:https://blog.csdn.net/Dangkie/article/details/53311516

python實現代碼:以下爲7點2次MA算法

實驗結果:

from matplotlib import pyplot as plt
import numpy as np

x = np.linspace(1, 30, 30)  # X軸數據
# 原始數據
a = [1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 12, 13, 11, 12, 14, 18, 19, 21, 22, 22, 23, 24, 25, 26, 27, 28, 29]
y1 = np.array(a)


# 7點2次MA平滑
def MovingAverage(input):
    output = {}
    print(input)
    size = len(input)
    print(size)
    i = 0
    output[0] = (32.0 * input[0] + 15.0 * input[1] + 3.0 * input[2] - 4.0 * input[3] - 6.0 * input[4] - 3.0 * input[
        5] + 5.0 * input[6]) / 42.0
    output[1] = (5.0 * input[0] + 4.0 * input[1] + 3.0 * input[2] + 2.0 * input[3] +
                 input[4] - input[6]) / 14.0
    output[2] = (1.0 * input[0] + 3.0 * input[1] + 4.0 * input[2] + 4.0 * input[3] +
                 3.0 * input[4] + 1.0 * input[5] - 2.0 * input[6]) / 14.0

    for i in range(3, size - 3):
        output[i] = (-2.0 * (input[i - 3] + input[i + 3]) + 3.0 * (input[i - 2] + input[i + 2]) + 6.0 * (
                input[i - 1] + input[i + 1]) + 7.0 * input[i]) / 21.0

    output[size - 3] = (1.0 * input[size - 1] + 3.0 * input[size - 2] + 4.0 * input[size - 3] + 4.0 * input[
        size - 4] + 3.0 * input[size - 5] + 1.0 * input[size - 6] - 2.0 * input[size - 7]) / 14.0
    output[size - 2] = (5.0 * input[size - 1] + 4.0 * input[size - 2] + 3.0 * input[size - 3] + 2.0 * input[size - 4] +
                        input[size - 5] - input[size - 7]) / 14.0
    output[size - 1] = (32.0 * input[size - 1] + 15.0 * input[size - 2] + 3.0 * input[size - 3] - 4.0 * input[
        size - 4] - 6.0 * input[size - 5] - 3.0 * input[size - 6] + 5.0 * input[size - 7]) / 42.0
    return output


output = list(MovingAverage(a).values())
print(output)
out = np.array(output)
# 繪製散點圖  定義散點大小,顏色,透明度
plt.scatter(x, out, s=75, color="blue", alpha=1)
plt.scatter(x, y1, s=75, color="red", alpha=1)
# 設置x y座標軸範圍
plt.xlim(0, 30, 30)
plt.ylim(0, 30, 30)
plt.show()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章