def _lpc(x,order):
"""Linear predictor coefficients. Supports 1D and 2D arrays only through
iteration."""
x = np.asarray(x)
if x.ndim == 1:
m = x.size
X = fft(x,n=nextpow2(m)) # TODO nextpower of 2
R = np.real(ifft(np.abs(X)**2)) # Auto-correlation matrix
R = R/m
a = _levinson(r=R, order=order)[0]
a = np.hstack((1., a))
elif x.ndim == 2:
m,n = x.shape
X = fft(x,n=nextpow2(m), axis=0)
R = np.real(ifft(np.abs(X)**2, axis=0)) # Auto-correlation matrix
R = R/m
a = np.ones((order+1,n))
for col in range(n):
a[1:,col] = _levinson(r=R[:,col], order=order)[0]
else:
raise ValueError('Supported for 1-D or 2-D arrays only.')
return a
评论列表
文章目录