lpc
线性预测滤波器的系数。
库::`工程师`
例子:
利用直接预测方法估计时间序列
Details
让我们使用三阶直接预测器评估一系列数据。 让我们将估计值与原始信号进行比较。
首先,我们将创建信号数据作为归一化白高斯噪声控制的自回归(AR)过程的输出。 我们使用最新的 4096 计数AR进程的输出数据,以避免启动过程中的瞬变。
import EngeeDSP.Functions: randn, filter, lpc, xcorr
noise = randn(50000,1)
x = filter(1,[1 1/2 1/3 1/4],noise)
x = x[end-4096+1:end]
计算预测器系数和估计信号。
a,g = lpc(x, 3)
est_x = filter([0; -a[2:end]], 1, x)
让我们通过绘制后者来比较预测信号与原始信号 100 每个信号的计数。
plot(1:100, x[end-99:end], label="Original signal", linewidth=1)
plot!(1:100, est_x[end-99:end], label="LPC estimate", linestyle=:dash, linewidth=1)
plot!(xlabel="Sample Number", ylabel="Amplitude")
plot!(grid=true)

计算预测误差和预测误差的自相关序列。 让我们绘制自相关图。 预测误差近似为白高斯噪声,如对于三阶自回归模型的输入过程所期望的。
e = x-est_x
acs,lags = xcorr(e,"coeff")
plot(lags', acs)
plot!(xlabel="Lags", ylabel="Normalized Autocorrelation")

算法
功能 lpc 确定直接线性预测器的系数,使用最小二乘法最小化预测误差。 它在滤波器设计和语音编码中得到应用.
功能 lpc 使用自相关自回归(AR)建模方法查找滤波器系数。 生成的滤波器可能不能准确地模拟过程,即使数据的序列确实是正确顺序的AR过程,因为自相关方法隐式地将数据包围在一个窗口中。 换句话说,该方法假设信号的样本超出长度 [参数:x] 平等 0.
功能 lpc 计算最小二乘解 ,在哪里
和
哪里 . Levinson-Durbin算法(见 `*莱文森)求解Yule-Walker方程