ss2zp
将滤波器参数从状态空间转换为具有零、极点和增益因子的形式。
库::`工程师`
争论
输入参数
# *B* 是输入状态矩阵
+
矩阵
Details
的输入状态矩阵。 如果系统有 入口及 输出和描述 态变量,则 B 有尺寸吗? 上 .
| 数据类型 |
|
# *C* 是输出状态矩阵
+
矩阵
Details
的输出状态矩阵。 如果系统有 入口及 输出和描述 态变量,则 C 有尺寸吗? 上 .
| 数据类型 |
|
# *D*是终点- 端传输矩阵
+
矩阵
Details
的端到端传输矩阵。 如果系统有 入口及 输出和描述 态变量,则 D 有尺寸吗? 上 .
| 数据类型 |
|
例子:
零、极点和离散系统的增益
Details
考虑由传递函数定义的离散系统
我们将直接从传递函数确定零点、极点和增益。 让我们向分子添加零,使其长度等于分母的长度。
import EngeeDSP.Functions: tf2zp
b = [2 3 0]
a = [1 0.4 1]
z, p, k = tf2zp(b, a)
println("z = ", z, "\np = ", p, "\nk = ", k)
z = [-1.5, 0.0]
p = ComplexF64[-0.20000000000000004 - 0.9797958971132713im, -0.20000000000000004 + 0.9797958971132713im]
k = 2.0
让我们以状态空间的形式想象系统,并使用函数定义零点,极点和增益 *ss2zp*.
import EngeeDSP.Functions: tf2ss, ss2zp
A, B, C, D = tf2ss(b, a)
z, p, k = ss2zp(A, B, C, D, 1)
println("z = ", z, "\np = ", p, "\nk = ", k)
z = [-1.4999999999999998; -2.1535571616345988e-16;;]
p = ComplexF64[-0.20000000000000004 + 0.9797958971132713im; -0.20000000000000004 - 0.9797958971132713im;;]
k = 2.0
算法
功能 *ss2zp* 通过矩阵的特征值找到极点 [参数:A]. 零表示广义特征值问题的最终解。:
using LinearAlgebra
eigvals([A B; C D], diagm([ones(n); 0]))
在许多情况下,该算法产生假大但有限的零。 功能 *ss2zp* 将这些大的零解释为无限。
功能 *ss2zp* 通过求解第一个非零马尔可夫参数的方程来查找增益因子。