AnyMath 文档

保利2rc

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

库::`工程师`

语法

函数调用

* [参数:k],[参数:r0],[参数:errorFlag]=pol2rc(<参数:a>>) -返回向量 [参数:k] 矢量得到的晶格结构的反射系数 [参数:a] 预测滤波器的系数。

* [参数:k],[参数:r0],[参数:errorFlag]=pol2rc(<参数:a>>,[参数:eFinal]) -还返回零延迟的自相关 [参数:r0] 基于最终预测的误差 [参数:eFinal],以及逻辑错误标志 [参数:errorFlag],执行功能时可能。

争论

输入参数

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

+ 向量资料

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] &ast; reverse(a)) / (1 - k[i]^2)

文学作品

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