Skip to content

Commit 9e408b9

Browse files
committed
instead of using omege to define a frequency interval oInstead of using omega to define a frequency interval a new argument omega_limits has
1 parent f07ef5a commit 9e408b9

File tree

2 files changed

+1561
-28
lines changed

2 files changed

+1561
-28
lines changed

control/freqplot.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959

6060
# Bode plot
6161
def bode_plot(syslist, omega=None, dB=None, Hz=None, deg=None,
62-
Plot=True, omega_num=None, *args, **kwargs):
62+
Plot=True, omega_limits=None, omega_num=None, *args, **kwargs):
6363
"""Bode plot for a system
6464
6565
Plots a Bode plot for the system over a (optional) frequency range.
@@ -69,7 +69,7 @@ def bode_plot(syslist, omega=None, dB=None, Hz=None, deg=None,
6969
syslist : linsys
7070
List of linear input/output systems (single system is OK)
7171
omega : freq_range
72-
Range of frequencies (list or bounds) in rad/sec
72+
Range of frequencies in rad/sec
7373
dB : boolean
7474
If True, plot result in dB
7575
Hz : boolean
@@ -78,6 +78,9 @@ def bode_plot(syslist, omega=None, dB=None, Hz=None, deg=None,
7878
If True, plot phase in degrees (else radians)
7979
Plot : boolean
8080
If True, plot magnitude and phase
81+
omega_limits: tuple, list, ... of two values
82+
Limits of the to generate frequency vector.
83+
If Hz=True the limits are in Hz otherwise in rad/s.
8184
omega_num: int
8285
number of samples
8386
*args, **kwargs:
@@ -119,13 +122,17 @@ def bode_plot(syslist, omega=None, dB=None, Hz=None, deg=None,
119122
syslist = (syslist,)
120123

121124
if omega is None:
122-
# Select a default range if none is provided
123-
omega = default_frequency_range(syslist, Hz=Hz)
124-
elif (isinstance(omega, tuple) or isinstance(omega, list)) and len(omega) == 2:
125-
if omega_num:
126-
omega = sp.logspace(np.log10(omega[0]), np.log10(omega[1]), num=omega_num, endpoint=True)
125+
if omega_limits is None:
126+
# Select a default range if none is provided
127+
omega = default_frequency_range(syslist, Hz=Hz, number_of_samples=omega_num)
127128
else:
128-
omega = sp.logspace(np.log10(omega[0]), np.log10(omega[1]), endpoint=True)
129+
omega_limits = np.array(omega_limits)
130+
if Hz:
131+
omega_limits *= 2.*np.pi
132+
if omega_num:
133+
omega = sp.logspace(np.log10(omega_limits[0]), np.log10(omega_limits[1]), num=omega_num, endpoint=True)
134+
else:
135+
omega = sp.logspace(np.log10(omega_limits[0]), np.log10(omega_limits[1]), endpoint=True)
129136

130137
mags, phases, omegas, nyquistfrqs = [], [], [], []
131138
for sys in syslist:

0 commit comments

Comments
 (0)