@@ -23,20 +23,22 @@ Append systems in block diagonal form
23
23
function append (systems:: (ST where ST<:AbstractStateSpace) ...)
24
24
ST = promote_type (typeof .(systems)... )
25
25
timeevol = common_timeevol (systems... )
26
- A = blockdiag ([ s. A for s in systems] . .. )
27
- B = blockdiag ([ s. B for s in systems] . .. )
28
- C = blockdiag ([ s. C for s in systems] . .. )
29
- D = blockdiag ([ s. D for s in systems] . .. )
26
+ A = blockdiag (s. A for s in systems)
27
+ B = blockdiag (s. B for s in systems)
28
+ C = blockdiag (s. C for s in systems)
29
+ D = blockdiag (s. D for s in systems)
30
30
return ST (A, B, C, D, timeevol)
31
31
end
32
32
33
33
function append (systems:: TransferFunction... )
34
34
timeevol = common_timeevol (systems... )
35
- mat = blockdiag ([ s. matrix for s in systems] . .. )
35
+ mat = blockdiag (s. matrix for s in systems)
36
36
return TransferFunction (mat, timeevol)
37
37
end
38
38
39
- append (systems:: LTISystem... ) = append (promote (systems... )... )
39
+ append (systems:: LTISystem... ) = append (promote (systems... ))
40
+
41
+ append (systems:: Union{<:Tuple, <:Base.Generator} ) = append (systems... )
40
42
41
43
42
44
function Base. vcat (systems:: DelayLtiSystem... )
@@ -58,9 +60,9 @@ function Base.vcat(systems::ST...) where ST <: AbstractStateSpace
58
60
if ! all (s. nu == nu for s in systems)
59
61
error (" All systems must have same input dimension" )
60
62
end
61
- A = blockdiag ([ s. A for s in systems] . .. )
63
+ A = blockdiag (s. A for s in systems)
62
64
B = reduce (vcat, s. B for s in systems)
63
- C = blockdiag ([ s. C for s in systems] . .. )
65
+ C = blockdiag (s. C for s in systems)
64
66
D = reduce (vcat, s. D for s in systems)
65
67
timeevol = common_timeevol (systems... )
66
68
return ST (A, B, C, D, timeevol)
@@ -87,8 +89,8 @@ function Base.hcat(systems::ST...) where ST <: AbstractStateSpace
87
89
error (" All systems must have same output dimension" )
88
90
end
89
91
timeevol = common_timeevol (systems... )
90
- A = blockdiag ([ s. A for s in systems] . .. )
91
- B = blockdiag ([ s. B for s in systems] . .. )
92
+ A = blockdiag (s. A for s in systems)
93
+ B = blockdiag (s. B for s in systems)
92
94
C = reduce (hcat, s. C for s in systems)
93
95
D = reduce (hcat, s. D for s in systems)
94
96
133
135
134
136
135
137
blockdiag (anything... ) = cat (anything... , dims= (1 ,2 ))
138
+ blockdiag (anything:: Union{<:Tuple, <:Base.Generator} ) = cat (anything... , dims= (1 ,2 ))
136
139
137
140
138
141
"""
0 commit comments