Как исправить ошибки в сглаживании построенных данных? (конечная точка данных смещена) - PullRequest
0 голосов
/ 03 июня 2019

Конечная точка данных смещена по сравнению с остальной частью графика, включая контрольный график зеленого цвета без сглаживания, показывающего предполагаемую конечную точку данных.

Я попытался сгладить данные, используя другие методы, такие каккак scipy.

import tkinter
import matplotlib.pyplot as plt
import math as m
import numpy as np

warmup = 30
starttemp = 120
waittime = 10
soaktime = 15
endtemp = 210
heatrate = 10 # x/min
one = 1

temprange = endtemp - starttemp
time = ((temprange//heatrate)*60) 
#time in seconds from start to end temp
y = list(range(1,warmup,1))
x = temprange/heatrate
wur = list(range(warmup, starttemp,1))
interval = int(temprange//time)
methtime = list(range(starttemp,endtemp,1))
#integrate heating rate functionality into the 
#projection graph by adding interval variable.

for _ in range(one):
    y.extend(wur)

for _ in range(soaktime):
    y.append(starttemp)

for _ in range(waittime):
    y.append(starttemp)

for _ in range(one):
    y.extend(methtime)

def smooth(y, box_pts):
    box = np.ones(box_pts)/box_pts
    y_smooth = np.convolve(y, box, mode='same')
    return y_smooth

#plt.plot(y,'g--')
plt.plot(smooth(y,15), 'r--', lw=1)
plt.ylabel('Temperature')
plt.xlabel('Time')
plt.title('PID Control Graph For Current Method')
plt.show()

Конечная точка данных должна следовать общей тенденции данных и заканчиваться при правильной конечной температуре.

Как это должно выглядеть: https://imgur.com/90rHKaA какв настоящее время выглядит: https://imgur.com/NB5OXtI

1 Ответ

1 голос
/ 03 июня 2019

Ваша функция свертки коробки выходит за пределы диапазона данных, поэтому вы видите "эффект края".Это фундаментальная проблема свертки.

Вы можете получить сокращенный диапазон вывода с режимом 'valid'

Также вы можете повторить последнюю точку данных несколько раз (в соответствии с шириной поля), чтобы минимизировать этот эффект и получить полный выходной диапазон (заполнение последним значением вместо нулей)

Возможно, еще один подход - применить «левую» функцию свертки к последним записям, если возможно объединить результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...