首页 > 解决方案 > 如何在 MATLAB 中从 MNA 方程组到状态空间 [A,B,C,D] mimo?

问题描述

我想从生成的 MNA(修改节点分析)方程系统中以编程方式生成状态空间 [ABCD] 系统。我不知道要调用哪些 MATLAB 函数。

我使用 Erik Cheever 的 SCAM链接脚本来生成方程组。

我制作了文件 example3.cir链接,这是一个带有输入源 Vs 的香料 RLC 电路。

我还尝试了 netlist2linss链接github,但它不在 laplace 域中,并且无法正常工作。

example3.cir:
R1 2 1 R
C1 3 0 C
L1 2 3 L
Vs 1 0 V

>> fname = 'example3.cir'; scam; system_of_eqns = [Z == A*X]
Solved variables:
v_1
v_2
v_3
I_Vs

system_of_eqns =
                      0 == I_Vs + v_1/R1 - v_2/R1
 0 == v_2*(1/R1 + 1/(L1*s)) - v_1/R1 - v_3/(L1*s)
          0 == v_3*(C1*s + 1/(L1*s)) - v_2/(L1*s)
                                        Vs == v_1

>> [A_,b_] = equationsToMatrix(system_of_eqns, X)

A_ =
[ -1/R1,              1/R1,                 0, -1]
[  1/R1, - 1/R1 - 1/(L1*s),          1/(L1*s),  0]
[     0,          1/(L1*s), - C1*s - 1/(L1*s),  0]
[    -1,                 0,                 0,  0]

b_ =
0
0
0
-Vs

预期(电容器电压作为输出):

A =
[     0,  1/C1 ]
[ -1/L1, -R/L1 ]

B =
[ 0, 1/L1 ]

C =
[ 1, 0 ]

D = 
[ 0 ]

states = [sVC1 sIL1]

input =  [ Vs ]

标签: matlabsymbolic-mathstate-space

解决方案


我在 python 中找到了一个名为 lcapy 的解决方案: https ://github.com/mph-/lcapy


推荐阅读