Я хочу использовать LPC (Linear Predictive Coding) в Python, чтобы предсказать следующее значение некоторых данных. Я использовал пакет audiolazy и получил уравнение Z-фильтра следующим образом: 1 - 0,625 * z ^ -1 + 0,25 * z ^ -2 + 0,125 * z ^ -3
После этого я хочу использовать этофильтр, чтобы сделать прогноз о следующем значении, но я не уверен, что будет входом этого фильтра.
Я нашел определение объекта фильтра A Zfilter (seq, memory = None,ноль = 0.0)
seq - любая итерация, которая будет выглядеть как входной поток для фильтра.
память - может быть повторяемой или вызываемой. Как правило, как итеративные, первые необходимые элементы из этого ввода будут использоваться непосредственно как память (не последние!), И как вызываемое, они будут вызываться с размером как единственным позиционным аргументом, и должны возвращатьитерация. Если Нет (по умолчанию), память инициализируется нулями.
ноль - значение для заполнения памяти, когда это необходимо, и для отображения в качестве предыдущего ввода при наличиизадержка. По умолчанию 0.0.
Возвращает : поток, в котором отфильтрованы данные из входной последовательности.
У меня естьЗдесь 2 вопроса:
- У меня есть массив OriginData: d = [1,2,3,4], и я хочу предсказать следующее значение. Правильно ли вводить inputDta = [1,2,3,4,0] в качестве входных данных для Z-фильтра?
- Я не понимаю параметра памяти. Не могли бы вы объяснить это простыми примерами?
Вот мой код:
from audiolazy import *
d=[-0.94, 0.18, -0.34,0.57, -0.36, 1.23] # this is the origin data
acdata = acorr(d) # auto correlation
filt=levinson_durbin(acdata,3) #obtain Z Filter
p=list(filt([ 0.57, -0.36, 1.23, 0])) # [ 0.57, -0.36, 1.23, 0] is the input data to the
filter, I want to use 3 past data to predict the next
one
import matplotlib.pyplot as plt
d.append(p[-1])
plt.plot((adjdata['delta'][-7:]).values)
plt.plot(d)
plt.ylabel('some numbers')
plt.show()
введите описание изображения здесь