伊斯特布尔
确定过滤器是否稳定。
库::`工程师`
争论
输入参数
# *b,a*是 传递函数的系数
+
向量资料
Details
传递函数的系数,设为向量。 价值 b 和 a 它们分别表示分子和分母中多项式的系数。
| 数据类型 |
|
# *B,A*是 级联传递函数的系数
+
标量,标量 | 向量资料 | 矩阵
Details
级联传递函数的系数,指定为标量、矢量或矩阵。 在矩阵中 B 和 A 分别列出了级联传递函数的分子和分母的系数。
矩阵 B 必须有一个大小 上 ,和矩阵 A — 上 ,在哪里
-
-过滤段数;
-
-过滤器的分子的顺序;
-
-过滤器分母的顺序。
有关级联传递函数格式和系数矩阵的详细信息,请参阅以CTF格式设置数字滤波器。
如果矩阵的任何元素 A[:,1] 如果不等于一,则函数 isstable 通过归一化滤波器系数 A[:,1]. 在这种情况下 A[:,1] 它必须是非零。
|
| 数据类型 |
|
# sos — 二阶段的表示
+
矩阵
Details
二阶段的表示,定义为大小矩阵 ,在哪里 -二阶段的数量。 矩阵
它表示二阶函数的部分
| 数据类型 |
|
输出参数
# 旗帜 — 过滤器稳定性标志
+
真的 | 错误
Details
作为布尔值返回的过滤器稳定性标志。 如果极点位于圆上或圆外,则函数返回 错误. 如果极点在圆内,则函数返回 真的.
| 数据类型 |
|
例子:
过滤器稳定性
Details
让我们设计一个使用二阶段的六阶巴特沃斯高通滤波器。 设置归一化截止频率 0.7. 我们来判断滤波器是否稳定。
import EngeeDSP.Functions: butter, zp2sos, isstable
z,p,k = butter(6,0.7,"high", out=3)
SOS = zp2sos(z,p,k)
flag = isstable(SOS)
true
plt = plot(aspect_ratio=:equal, xlims=(-1.1, 1.1), ylims=(-1.1, 1.1),
title="Zero-Pole Plot", xlabel="Real", ylabel="Imag")
θ=范围(0,2π,长度=100)
阴谋!(cos.(theta),罪。(theta),color=:black,linestyle=:dash,label="单位圆")
散开!(real(z),imag(z),marker=:circle,color=:blue,label="Zeros",markersize=8)
散开!(real(p),imag(p),marker=:x,color=:red,label="Poles",markersize=8)

让我们创建一个过滤器,并确定其稳定性在双精度和单精度。
b = [1 -0.5]
a = [1 -0.999999999]
act_flag1 = isstable(b,a)
true
act_flag2 = isstable(Float32.(b),Float32.(a))
false
此外
以CTF格式设置数字滤波器
Details
过滤器的影响
形式设置系数时
假设滤波器被设置为
哪里
*如果
*如果
*如果
效应和放大
如果有一个共同的尺度增益或几个尺度增益因子在滤波器系数的值之外,则可以将系数和增益指定为元组。 (B,A,g). 在使用定点算术时,缩放滤波器部分尤其重要,以确保每个滤波器部分的输出信号具有相似的幅度水平,这有助于避免由于计算精度有限而导致滤波器频率响应的不准确性。
增益可以是标量总增益或区段增益系数的向量。
*如果增益是标量的,则其值均匀地应用于级联滤波器的所有部分。
*如果增益因子是矢量,则它必须包含比滤波器部分数多一个元素。
如果将滤波器系数矩阵和增益系数向量指定为
假设滤波器系统的传递函数具有形式