AnyMath 文档

zp2sos系列

将具有零、极点和增益的滤波器参数转换为二阶段的形式。

库::`工程师`

语法

函数调用

* [参数:sos],<参数:g>>=zp2sos(<参数:z>>,<参数:p>>,<参数:k>>) -找到二阶段的矩阵 [参数:sos] 具有增益因子 [参数:g],相当于传递函数 , 零, 极点和标量增益在参数中指定 [参数:z], [参数:p][参数:k]:

+

* [参数:sos],<参数:g>>=zp2sos(<参数:z>>,<参数:p>>,<参数:k>>,<参数:direction_flag>>) -设置参数中行的顺序 [参数:sos].

* [参数:sos],<参数:g>>=zp2sos(<参数:z>>,<参数:p>>,<参数:k>>,<参数:direction_flag>>,<参数:scale>>) -设置增益系数的缩放和所有二阶部分的分子。

* [参数:sos],[参数:g]=zp2sos(z,p,k,direction_flag,scale,zeroflag) -设置彼此相反的实零的处理。

* [参数:sos]=zp2sos(___,[参数:gain_out]) -将系统的整体增益集成到第一部分。

争论

输入参数

# *z* — 零

+ 向量资料

Details

系统的零,设置为向量。 零必须是实数或表示复共轭对。

数据类型

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

# *p* — 电线杆

+ 向量资料

Details

系统的极点,定义为矢量。 极点必须是实数或表示复共轭对。

数据类型

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

# *k*是 标量增益

+ 标量,标量

Details

系统的标量增益,设置为标量。

数据类型

漂浮64</无翻译>

# *方向_flag* — 行顺序

+ "向上" (默认情况下)| "向下"

Details

使用以下方法之一设置行顺序:

* "向上" -安排部分,以便论证的第一行 [参数:sos] 它包含了离单位圆最远的两极;

* "向下" -安排部分,以便论证的第一行 [参数:sos] 它包含最接近单位圆的极点。

数据类型

字符串</无翻译>

# *比例尺* — 增益和分子的缩放

+ "没有" (默认)| "inf" | "二"

Details

增益系数和分子的缩放,使用以下方法之一设置:

* "没有" -不应用缩放;

* "inf" -无限速率缩放;

* "二" —根据第二范数缩放。

使用带顺序的无限范数缩放 "向上" 实现中最大限度地减少溢出的机会。 使用根据具有顺序的第二范数的缩放 "向下" 最大限度地减少峰值舍入噪声。

按无限范数和按第二范数缩放仅适用于直接形式II的实现。
数据类型

字符串</无翻译>

# *零氟* — 实零排序

+ 错误 (默认情况下)| 真的

Details

彼此相反的实数零的排序,作为逻辑标量给出:

* 错误 -该函数将根据它们与极点的接近程度排列这些零;

* 真的 -该功能将保持这些零在一起。 此选项导致分子的平均系数为零。

数据类型

布尔</无翻译>

# *gain_out* — 输出变量数

+ 错误 (默认情况下)| 真的

Details

输出变量的个数,设置为:

* 错误 -函数返回单个变量 [参数:sos];

* 真的 -函数返回两个变量的元组 ([参数:sos],[参数:g]).

数据类型

布尔</无翻译>

输出参数

# *sos* — 二阶段的表示

+ 矩阵

Details

二阶段的表示,作为矩阵返回。 论点 sos —这是一个大小矩阵

其中的行包含分子和分母的系数 函数的二阶段 :

如果传递函数具有 零和 那么,波兰人呢? -最接近的整数大于或等于 .

# *g*是 系统的总增益

+ 标量,标量

Details

系统的总增益,作为真正的标量返回。

如果调用函数 *zp2sos* 使用一个输出参数,该函数将系统的总增益嵌入到第一部分。 所以,

不建议在缩放直形II结构时将增益嵌入第一部分,并可能导致不稳定的缩放。 为了避免嵌入增益因子,使用 *zp2sos* 有两个输出参数。

例子:

基于零、极点和增益形成二阶段

Details

让我们使用函数开发一个5阶巴特沃斯低通滤波器 *黄油*,输出数据以零、极点和增益因子的形式表示。 让我们将截止频率设置为奈奎斯特频率的五分之一。 我们将结果转换为二阶部分。 可视化频率响应。

import EngeeDSP.Functions: butter, zp2sos

z, p, k = butter(5, 0.2, out = 3)
sos = zp2sos(z, p, k)
3×6 Matrix{Float64}:
 0.00128258  0.00128258  0.0  1.0  -0.509525  0.0
 1.0         2.0         1.0  1.0  -1.09658   0.355447
 1.0         2.0         1.0  1.0  -1.36932   0.692569
import EngeeDSP.Functions: freqz

freqz(sos, out = :plot)

zp2sos

算法

功能 *zp2sos* 使用四步算法确定具有零、极点和增益的输入系统的二阶部分的表示:

  1. 它使用函数将零和极点分组为元素的复共轭对 *cplxpair*.

  2. 通过按照以下规则匹配成对的极点和零点来形成第二部分:

    1. 将最接近单位圆的极点与最接近这些极点的零点匹配。

    2. 将最接近单位圆的极点与最接近这些极点的零点匹配。

    3. 继续,直到所有极点和零点都匹配。

    功能 *zp2sos* 将实极点分组成实极点在绝对值上彼此最接近的部分。 同样的规则适用于真正的零。

  3. 根据所述成对极与所述单位圆的接近度排列所述区段。 通常情况下 *zp2sos* 用最接近单位圆的极点排列部分,这是级联中的最后一个。 您可以指定函数 *zp2sos* 以便它使用参数以相反的顺序对部分进行排序 [参数:direction_flag].

  4. 功能 *zp2sos* 根据参数中指定的规范缩放部分 [参数:比例]. 对于任意函数 缩放定义如下:

    哪里 它可以是无限的,也可以是 2. 这种缩放是在定点滤波器实现中尽量减少溢出或峰值舍入噪声的尝试。

文学作品

  1. Jackson,L.B. _Digital Filters and Signal Processing._第3版。 波士顿:Kluwer Academic Publishers,1996。

  2. 米特拉桑吉特库马尔 数字信号处理:一种基于计算机的方法。_第3版。 纽约:麦格劳-希尔高等教育,2006年。

  3. Vaidyanathan,P.P."稳健的数字滤波器结构。"handbook For Digital Signal Processing(S.K.Mitra and J.F.Kaiser,eds.). 繝シ繝ォ縺ァ縺呐