Сглаживание без потери длины массива

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

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

import numpy as np

def continuum(y,N):
        return np.convolve(y, np.ones((N,))/N, mode='same')

plt.figure()
plt.errorbar(x1,y1,yerr=err1,zorder=1)
cont = continuum(y1,10)
plt.plot(x1,cont,'r-',zorder=2)

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

def continuum(x,y,N):
        contin = np.convolve(y, np.ones((N,))/N, mode='valid')
        x_new = np.linspace(x[0],x[-1],len(contin))        
        return x_new,contin

plt.figure()
plt.errorbar(x1,y1,yerr=err1,zorder=1)

Это, конечно, лучше, но это означает, что когда я продолжу сглаживать для вычитания континуума, я не смогу вычесть его из исходных данных, так как длины массивов будут другими.

Любые идеи о том, как я мог бы объединить два для лучшей функции сглаживания?

0 ответов

Другие вопросы по тегам