雷文森
Levinson-Durbin逆递归。
库::`工程师`
语法
函数调用
-
[参数:r],[参数:u],[参数:k],[参数:eEvolution]=rlevinson([参数:a],[参数:eFinal])-返回自相关序列[参数:r]对于具有参数中指定的系数的预测滤波器[参数:a],以及最终预测误差的功率[参数:eFinal]. 它还返回一个多项式矩阵[参数:u]递归预测滤波器,反射系数[参数:k]和预测误差[参数:eFinal]从Levinson-Durbin逆递归的每次迭代。
例子:
自回归模型的最优阶数
Details
让我们使用自回归模型估计具有附加噪声的两个正弦波的频谱。 让我们从Levinson—Durbin逆递归返回的模型组中选择最佳模型顺序。
产生具有频率的信号 50000 数数。 设置采样频率 1 kHz和信号持续时间 50 几秒钟。 正弦波有频率 50 Hz和 55 赫兹。 噪声色散为 (0.2)2.
import EngeeDSP.Functions: rlevinson
using Random
Random.seed!(42)
Ns = 50_000
Fs = 1000
t = range(0, step=1/Fs, length=Ns)
x = sin.(2π * 50 * t) + sin.(2π * 55 * t) + 0.2 * randn(Ns)
让我们使用具有阶数的模型来估计自回归模型的参数 100.
ar,eFinal = arcov(x,100)
我们使用Levinson—Durbin逆递归求解模型来估计自相关序列,递归预测滤波器,反射系数和预测误差。
r,u,k,eEvol=rlevinson(ar,eFinal)
让我们绘制预测误差。 为最终误差的功率添加水平线。 误差随着滤波器阶数的增加而减小,直到达到最终误差的功率。

让我们估计几个数量级的频谱功率密度(SPM) 1, 5, 25, 50 和 100. 让我们估计初始自回归参数的SPM。
N = [1, 5, 25, 50, 100]
nFFT = 8096
psdARpred = zeros(nFFT, 5)
for idx in 1:length(N)
order = N[idx]
ARpred = reverse(u[:, order], dims=1)
psdARpred[:, idx] = 1 ./ abs.(fft(ARpred, nFFT)).^2
end
psdAR = 1 ./ abs.(fft(ar, nFFT)).^2
让我们建立一个SPM估计图。 随着滤波器阶数的增加,预测滤波器的SPM估计值逐渐接近初始自回归参数。
F = (0:1/nFFT:1/2-1/nFFT) * Fs
pow2db(x) = 10 * log10.(x)
plot(F, pow2db.(psdARpred[1:end÷2, :]),
xlabel = "Frequency (Hz)",
ylabel = "Power (dB/Hz)",
grid = true,
legend = :best,
xlims = (35, 70))
plot!(F, pow2db.(psdAR[1:end÷2]),
linestyle = :dash,
linecolor = :black,
label = "Original AR")
order_labels = ["Order = $n" for n in N]
push!(order_labels, "Original AR")
plot!(serieslegend = order_labels)
display(current())

算法
Levinson-Durbin逆递归实现了一种分步算法,用于求解线性Toeplitz方程的对称系统。
哪里
在线性预测应用中:
*向量
+
*向量
*标量值
该图显示了这种类型的典型滤波器,其中
功能 雷文森 求解该方程组以计算自相关序列 [参数:r],具有向量 [参数:a] 用预测滤波器的系数。 滤波器必须是最小相位才能生成有效的自相关序列。 标量,标量 [参数:eFinal] 表示最终预测误差的功率 雷文森.
来获取输出数据 [参数:u], [参数:k] 和 [参数:eEvolution] 功能 雷文森 它还执行分解
输出参数 [参数:u] 返回矩阵
每个向量 a5=u[5:-1:1,5],而这个向量是多项式 [参数:a],其可以使用获得 (u[p+1:-1:1,p+1])'.
输出参数 [参数:eEvolution] 返回具有从矩阵对角线获得的递归预测误差的向量字符串
每个元素 e5=eEvolution(4) 这是使用多项式时的预测错误
*对角线上的第一个元素
-
-对角线上的第个元素 , ,也是最后一个元素[参数:eEvolution]-与最终预测误差的功率相吻合[参数:eFinal].