Skip to content

Commit f435a3e

Browse files
committed
Add handling for pure D systems in lsim function
1 parent 8621ce9 commit f435a3e

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/timeresp.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,18 @@ function lsim(sys::AbstractStateSpace{Continuous}, u::Function, t::AbstractVecto
3737

3838
dt = t[2] - t[1]
3939

40+
# Handle pure D system (no state)
41+
if nx == 0
42+
uout = Matrix{T}(undef, nu, length(t))
43+
for i = 1:length(t)
44+
uout[:, i] = u(T[], t[i])
45+
end
46+
x = Matrix{T}(undef, 0, length(t)) # no states
47+
y = sys.D * uout
48+
simsys = sys
49+
return SimResult(y, t, x, uout, simsys)
50+
end
51+
4052
if method === :zoh
4153
simsys = c2d(sys, dt, :zoh)
4254
x,uout = ControlSystemsBase.ltitr(simsys.A, simsys.B, u, t, T.(x0))

0 commit comments

Comments
 (0)