BlockWerk 文档
A-B-C-D (z)

Discrete State-Space

Discrete

离散状态空间方块(Discrete State-Space)实现了一个离散时间线性状态空间系统。在每个采样时刻,它利用递推方程推进内部状态向量,然后将当前状态和输入的线性组合计算为输出。该方块等效于 z 域矩阵传递函数 H(z) = C(zI - A)^-1 B + D。

典型用途包括实现离散时间被控对象模型、观测器/估计器动力学、以状态空间形式表示的预设计数字滤波器,以及通过零阶保持器(ZOH)或双线性变换(Tustin)方法从连续时间设计离散化的任何线性系统。

在 BlockWerk 中仿真

浏览器即开即用的交互式仿真环境 — 无需安装,由 WebAssembly 强力驱动。

在 BlockWerk 中仿真 →

数学模型

x[k+1]=Ax[k]+Bu[k]y[k]=Cx[k]+Du[k]\begin{aligned} x[k+1] &= Ax[k] + Bu[k] \\ y[k] &= Cx[k] + Du[k] \end{aligned}

其中:

  • x[k] — 步长 k 时的状态向量(长度为 n,即系统阶数)
  • u[k] — 步长 k 时的输入向量(与 B 的列数匹配)
  • y[k] — 步长 k 时的输出向量(与 C 的行数匹配)
  • A — n×n 状态转移矩阵
  • B — n×m 输入矩阵
  • C — p×n 输出矩阵
  • D — p×m 直接传递矩阵
  • k — 离散时间索引;实际时间 = k · sampleTime

输入与输出

Direction ID Label 类型 Status
→ In u Input(s) number Required
← Out y Output(s) number Output

参数

参数 Label 类型 默认值 描述
A A Matrix vector 0.9
B B Matrix vector 1
C C Matrix vector 1
D D Matrix vector 0
initialState Initial State vector 0
sampleTime Sample Time number 0.01

使用示例

100 Hz 下的一阶低通滤波器

极点位于 z = 0.9、单位直流增益的离散一阶低通系统:

Step → DiscreteStateSpace → Display
       A=0.9  B=0.1  C=1  D=0  T=0.01s

二阶系统(双重积分器,欧拉法)

采样时间 T = 0.01 s 的离散化双重积分器:

Force → DiscreteStateSpace → Position
        A=[1 0.01; 0 1]  B=[0.00005; 0.01]  C=[1 0]  D=0

说明与最佳实践

  • 矩阵尺寸:A 必须是方阵(n×n)。B 必须有 n 行。C 必须有 n 列。D 必须与 C 具有相同的行数,与 B 具有相同的列数。维度不匹配将产生仿真错误。
  • 多输入/多输出 (MIMO):对于 MIMO 系统,将多个信号连接到输入端口;该方块将按连接顺序将它们堆叠到 u 向量中。
  • 稳定性:仅当 A 的所有特征值严格位于单位圆内时,系统才稳定。不稳定的 A 矩阵将导致状态无界发散。
  • 离散状态:该方块在内部最多分配 32 个离散状态槽;请将系统阶数保持在 32 或以下。
  • 采样时间对齐:当此方块与其他离散方块混合使用时,请保持所有 sampleTime 值一致,或在边界处插入 Rate Transition 方块。

相关模块

  • RateTransition:在连接到以不同速率运行的子系统时跨越采样率边界。
  • TransferFunction:连续时间等效方块;在离散化之前于 s 域设计时使用。
  • Integrator:连续时间状态积分;当全局求解器处理积分时代替 DiscreteStateSpace 使用。