@@ -42,6 +42,16 @@ function freqresp!(R::Array{T,3}, sys::LTISystem, w_vec::AbstractVector{<:Real})
4242 PermutedDimsArray {T,3,(3,1,2),(2,3,1),Array{T,3}} (R)
4343end
4444
45+ function freqresp! (R:: Array{T,3} , sys:: TransferFunction , w_vec:: AbstractVector{<:Real} ) where T
46+ te = sys. timeevol
47+ ny,nu = noutputs (sys), ninputs (sys)
48+ @boundscheck size (R) == (ny,nu,length (w_vec))
49+ @inbounds for wi = eachindex (w_vec), ui = 1 : nu, yi = 1 : ny
50+ R[yi,ui,wi] = evalfr (sys. matrix[yi,ui], _freq (w_vec[wi], te))
51+ end
52+ PermutedDimsArray {T,3,(3,1,2),(2,3,1),Array{T,3}} (R)
53+ end
54+
4555@autovec () function freqresp (G:: AbstractMatrix , w_vec:: AbstractVector{<:Real} )
4656 repeat (G, 1 , 1 , length (w_vec))
4757end
5363_freq (w, :: Continuous ) = complex (0 , w)
5464_freq (w, te:: Discrete ) = cis (w* te. Ts)
5565
56- function freqresp (sys:: AbstractStateSpace , w_vec:: AbstractVector{W} ) where W <: Real
57- ny, nu = size (sys)
58- T = promote_type (Complex{real (eltype (sys. A))}, Complex{W})
59- R = Array {T, 3} (undef, ny, nu, length (w_vec))
60- freqresp! (R, sys, w_vec)
61- end
6266@autovec () function freqresp! (R:: Array{T,3} , sys:: AbstractStateSpace , w_vec:: AbstractVector{W} ) where {T, W <: Real }
6367 ny, nu = size (sys)
6468 @boundscheck size (R) == (ny,nu,length (w_vec))
0 commit comments