我想在Python中使用LPC(线性预测编码)来预测某些数据的下一个值。 我使用了audiolazy包,并得到了如下的Z Filter公式: 1-0.625 * z ^ -1 + 0.25 * z ^ -2 + 0.125 * z ^ -3
之后,我想使用此过滤器对下一个值进行预测 但是我不确定该过滤器的输入是什么。
我发现A Filter对象的定义是 Zfilter(seq,memory = None,zero = 0.0)
seq –任何可迭代显示为过滤器的输入流。
内存 –可能是可迭代的或可调用的。通常,作为可迭代对象,此输入中的第一个所需元素将直接用作内存(而不是最后一个!),并且作为可调用对象,将使用size作为唯一位置参数来调用它,并应返回一个可迭代的。如果为None(默认),则内存将初始化为零。
零 –必要时用于填充内存的值,并在出现延迟时显示为先前的输入。默认值为0.0。
返回:具有输入序列中数据的流 过滤。
我在这里有2个问题:
这是我的代码:
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()