Skip to content

Commit a01ac33

Browse files
committed
only simplify small systems automatically
1 parent 2337475 commit a01ac33

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

Project.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "SymbolicControlSystems"
22
uuid = "886cb795-8fd3-4b11-92f6-8071e46f71c5"
33
authors = ["Fredrik Bagge Carlson"]
4-
version = "0.1.1"
4+
version = "0.1.2"
55

66
[deps]
77
ControlSystems = "a6e380b2-a6ca-5380-bf3e-84a91bcd477e"

src/SymbolicControlSystems.jl

+19-4
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,15 @@ end
3737

3838
function SymPy.Sym(sys::StateSpace{<:Any,Sym})
3939
A, B, C, D = ControlSystems.ssdata(sys)
40-
if isdiscrete(sys)
41-
(C*inv(z * I(size(A, 1)) - A)*B+D)[1]
40+
expr = if isdiscrete(sys)
41+
(C*inv(z * I(size(A, 1)) - A)*B+D)
42+
else
43+
(C*inv(s * I(size(A, 1)) - A)*B+D)
44+
end
45+
if size(expr) == (1,1)
46+
return expr[]
4247
else
43-
(C*inv(s * I(size(A, 1)) - A)*B+D)[1]
48+
return expr
4449
end
4550
end
4651

@@ -56,7 +61,11 @@ function Num(sys::StateSpace{<:Any,Num})
5661
A, B, C, D = ControlSystems.ssdata(sys)
5762
λ = isdiscrete(sys) ? Symb.@variables(z) : Symb.@variables(s)
5863
λ = λ[]
59-
Symb.simplify((C*inv* I(size(A, 1)) - A)*B+D)[1])
64+
ex = (C*inv* I(size(A, 1)) - A)*B+D)[1]
65+
if sys.nx < 4
66+
ex = Symb.simplify(ex)
67+
end
68+
ex
6069
end
6170

6271
function Num(sys::TransferFunction)
@@ -120,6 +129,12 @@ function ControlSystems.minreal(sys::StateSpace{<:Any,NumOrDiv})
120129
nsys = Symb.simplify_fractions.(nsys)
121130
end
122131

132+
function ControlSystems.minreal(sys::StateSpace{<:Any,Sym})
133+
# sys |> Symb.Num .|> Symb.symbolics_to_sympy .|> sp.simplify
134+
nsys = Sym(sys)
135+
nsys = sp.simplify.(nsys)
136+
end
137+
123138
function Num(x::Sym)
124139
try
125140
return Float64(x)

0 commit comments

Comments
 (0)