如何使用Lazy_LPC滤波器(Z变换)进行预测

时间:2019-10-02 06:38:32

标签: python transform prediction lpc

我想在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个问题:

  1. 我有一个OriginData数组:d = [1,2,3,4],我想预测下一个值。将inputDta = [1,2,3,4,0]用作Z过滤器的输入是否正确?
  2. 我不了解memory参数。您能用简单的例子解释一下吗?

这是我的代码:

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()

enter image description here

0 个答案:

没有答案