Skip to content

Commit

Permalink
Merge pull request #568 from bnavigator/discretesys2frd
Browse files Browse the repository at this point in the history
support discrete system as input for FRD
  • Loading branch information
sawyerbfuller committed Mar 12, 2021
2 parents 92de12d + fd80fc8 commit 0f951e1
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions control/frdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,14 @@ def __init__(self, *args, **kwargs):
# the frequency range
otherlti = args[0]
self.omega = sort(np.asarray(args[1], dtype=float))
numfreq = len(self.omega)
# calculate frequency response at my points
self.fresp = otherlti(1j * self.omega, squeeze=False)
if otherlti.isctime():
s = 1j * self.omega
self.fresp = otherlti(s, squeeze=False)
else:
z = np.exp(1j * self.omega * otherlti.dt)
self.fresp = otherlti(z, squeeze=False)

else:
# The user provided a response and a freq vector
self.fresp = array(args[0], dtype=complex)
Expand Down Expand Up @@ -538,7 +543,10 @@ def _convert_to_FRD(sys, omega, inputs=1, outputs=1):

elif isinstance(sys, LTI):
omega = np.sort(omega)
fresp = sys(1j * omega)
if sys.isctime():
fresp = sys(1j * omega)
else:
fresp = sys(np.exp(1j * omega * sys.dt))
if len(fresp.shape) == 1:
fresp = fresp[np.newaxis, np.newaxis, :]
return FRD(fresp, omega, smooth=True)
Expand Down

0 comments on commit 0f951e1

Please sign in to comment.