AnyMath 文档

保利2rc

预测滤波器多项式变换为反射系数。

库::`工程师`

语法

函数调用

争论

输入参数

# 一个 — 预测滤波器的系数

+ 向量资料

Details

预测滤波器的系数,设为矢量。

参数的值 a 它具有以下限制:

  • a[1] 它不能等于 0;

如果 a[1] 不等于 1,功能 *保利2rc 将预测滤波器的多项式归一化为 a[1].

数据类型

漂浮物32, 漂浮64</无翻译> 支持复数::是

# eFinal — 最终预测误差的功率

+ 0 (默认情况下)| 标量,标量

Details

最终预测误差的功率,作为标量给出。

数据类型

漂浮物32, 漂浮64</无翻译> 支持复数::是

输出参数

# k — 反射系数

+ 向量资料

Details

作为长度的列向量返回的反射系数列表 ,在哪里 -矢量元素的数量 [参数:a].

# r0 — 零延迟自相关

+ 标量,标量

Details

零延迟自相关,作为标量返回。

# 错误标记 — 逻辑错误标志

+ 逻辑价值

Details

作为布尔值返回的布尔错误标志。 此参数用于指示在函数执行期间发生错误或不正确的情况。

  • 错误标记=错误 —没有发现错误,计算正确执行。

  • errorFlag=真 -执行算法时发生错误。

例子:

通过预测滤波器多项式确定反射系数

Details

让预测滤波器多项式给出 a 和最终预测误差 伊菲纳尔,我们确定相应晶格结构的反射系数和零延迟自相关。

import EngeeDSP.Functions: poly2rc

a=[1.0000 0.6149 0.9899 0.0000 0.0031-0.0082]
efinal=0.2
k,r0,errorFlag=poly2rc(a,efinal)

println("k=",k,"\nr0=",r0)
k = [0.3090263579569403; 0.9800673984772592; 0.0031104252264590976; 0.008142727516998243; -0.0082;;]
r0 = 5.603228924655311

限制

如果 abs(k[i])==1 对于任何人 i 然后找到反射系数是一个不明确的任务。 功能 保利2rc 返回一些值 并在这种情况下发出警告。

建议

一个简单而快速的方法来检查一个数字的所有根是否都在说谎 a 在单位圆内部,这是检查向量的所有元素是否具有 k 小于的值 1.

stable = all(abs.(poly2rc(a)) .< 1)

算法

功能 保利2rc 实现以下递归关系:



这种关系基于Levinson的递归[1]。 要实现它,功能 保利2rc 循环沿着矢量运行 [参数:a] 以相反的顺序丢弃其第一元素之后。 对于每个迭代 i 循环功能:

  1. 等同于 k[i]a[i].

  2. 将上述第二比率应用于具有 1i 向量资料 a.

    a = (a - k[i] * reverse(a)) / (1 - k[i]^2)

文学作品

  1. Kay,Steven M. _Modern Spectral Estimation。_恩格尔伍悬崖,NJ:普伦蒂斯-霍尔,1988.