Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit48015d5

Browse files
committed
MAINT: _bode_defaults removed, fields moved in _freqplot_default
TST: tests in config_test modified to interpret omega in Hz if the option Hz is set to True
1 parent34c3826 commit48015d5

File tree

3 files changed

+46
-42
lines changed

3 files changed

+46
-42
lines changed

‎control/config.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ def reset_defaults():
4343
# System level defaults
4444
defaults.update(_control_defaults)
4545

46-
from .freqplotimport_bode_defaults,_freqplot_defaults,_nyquist_defaults
47-
defaults.update(_bode_defaults)
46+
from .freqplotimport_freqplot_defaults,_nyquist_defaults
4847
defaults.update(_freqplot_defaults)
4948
defaults.update(_nyquist_defaults)
5049

@@ -133,7 +132,7 @@ def use_matlab_defaults():
133132
* State space class and functions use Numpy matrix objects
134133
135134
"""
136-
set_defaults('bode',dB=True,deg=True,Hz=False,grid=True)
135+
set_defaults('freqplot',dB=True,deg=True,Hz=False,grid=True)
137136
set_defaults('statesp',use_numpy_matrix=True)
138137

139138

@@ -147,7 +146,7 @@ def use_fbs_defaults():
147146
* Nyquist plots use dashed lines for mirror image of Nyquist curve
148147
149148
"""
150-
set_defaults('bode',dB=False,deg=True,Hz=False,grid=False)
149+
set_defaults('freqplot',dB=False,deg=True,Hz=False,grid=False)
151150
set_defaults('nyquist',mirror_style='--')
152151

153152

@@ -179,6 +178,7 @@ class and functions. If flat is `False`, then matrices are
179178
stacklevel=2,category=DeprecationWarning)
180179
set_defaults('statesp',use_numpy_matrix=flag)
181180

181+
182182
defuse_legacy_defaults(version):
183183
""" Sets the defaults to whatever they were in a given release.
184184

‎control/freqplot.py

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@
6363
_freqplot_defaults= {
6464
'freqplot.feature_periphery_decades':1,
6565
'freqplot.number_of_samples':1000,
66+
'freqplot.dB':False,# Plot gain in dB
67+
'freqplot.deg':True,# Plot phase in degrees
68+
'freqplot.Hz':False,# Plot frequency in Hertz
69+
'freqplot.grid':True,# Turn on grid for gain and phase
70+
'freqplot.wrap_phase':False,# Wrap the phase plot at a given value
6671
}
6772

6873
#
@@ -76,15 +81,6 @@
7681
# Bode plot
7782
#
7883

79-
# Default values for Bode plot configuration variables
80-
_bode_defaults= {
81-
'bode.dB':False,# Plot gain in dB
82-
'bode.deg':True,# Plot phase in degrees
83-
'bode.Hz':False,# Plot frequency in Hertz
84-
'bode.grid':True,# Turn on grid for gain and phase
85-
'bode.wrap_phase':False,# Wrap the phase plot at a given value
86-
}
87-
8884

8985
defbode_plot(syslist,omega=None,
9086
plot=True,omega_limits=None,omega_num=None,
@@ -103,10 +99,10 @@ def bode_plot(syslist, omega=None,
10399
If True, plot result in dB. Default is false.
104100
Hz : bool
105101
If True, plot frequency in Hz (omega must be provided in rad/sec).
106-
Default value (False) set by config.defaults['bode.Hz']
102+
Default value (False) set by config.defaults['freqplot.Hz']
107103
deg : bool
108104
If True, plot phase in degrees (else radians). Default value (True)
109-
config.defaults['bode.deg']
105+
config.defaults['freqplot.deg']
110106
plot : bool
111107
If True (default), plot magnitude and phase
112108
omega_limits : array_like of two values
@@ -184,16 +180,21 @@ def bode_plot(syslist, omega=None,
184180
plot=kwargs.pop('Plot')
185181

186182
# Get values for params (and pop from list to allow keyword use in plot)
187-
dB=config._get_param('bode','dB',kwargs,_bode_defaults,pop=True)
188-
deg=config._get_param('bode','deg',kwargs,_bode_defaults,pop=True)
189-
Hz=config._get_param('bode','Hz',kwargs,_bode_defaults,pop=True)
190-
grid=config._get_param('bode','grid',kwargs,_bode_defaults,pop=True)
191-
plot=config._get_param('bode','plot',plot,True)
192-
margins=config._get_param('bode','margins',margins,False)
183+
dB=config._get_param(
184+
'freqplot','dB',kwargs,_freqplot_defaults,pop=True)
185+
deg=config._get_param(
186+
'freqplot','deg',kwargs,_freqplot_defaults,pop=True)
187+
Hz=config._get_param(
188+
'freqplot','Hz',kwargs,_freqplot_defaults,pop=True)
189+
grid=config._get_param(
190+
'freqplot','grid',kwargs,_freqplot_defaults,pop=True)
191+
plot=config._get_param('freqplot','plot',plot,True)
192+
margins=config._get_param(
193+
'freqplot','margins',margins,False)
193194
wrap_phase=config._get_param(
194-
'bode','wrap_phase',kwargs,_bode_defaults,pop=True)
195+
'freqplot','wrap_phase',kwargs,_freqplot_defaults,pop=True)
195196
initial_phase=config._get_param(
196-
'bode','initial_phase',kwargs,None,pop=True)
197+
'freqplot','initial_phase',kwargs,None,pop=True)
197198
omega_num=config._get_param('freqplot','number_of_samples',omega_num)
198199
# If argument was a singleton, turn it into a tuple
199200
ifnothasattr(syslist,'__iter__'):
@@ -937,9 +938,12 @@ def gangof4_plot(P, C, omega=None, **kwargs):
937938
"Gang of four is currently only implemented for SISO systems.")
938939

939940
# Get the default parameter values
940-
dB=config._get_param('bode','dB',kwargs,_bode_defaults,pop=True)
941-
Hz=config._get_param('bode','Hz',kwargs,_bode_defaults,pop=True)
942-
grid=config._get_param('bode','grid',kwargs,_bode_defaults,pop=True)
941+
dB=config._get_param(
942+
'freqplot','dB',kwargs,_freqplot_defaults,pop=True)
943+
Hz=config._get_param(
944+
'freqplot','Hz',kwargs,_freqplot_defaults,pop=True)
945+
grid=config._get_param(
946+
'freqplot','grid',kwargs,_freqplot_defaults,pop=True)
943947

944948
# Compute the senstivity functions
945949
L=P*C
@@ -1094,11 +1098,11 @@ def singular_values_plot(syslist, omega=None,
10941098

10951099
# Get values for params (and pop from list to allow keyword use in plot)
10961100
dB=config._get_param(
1097-
'singular_values_plot','dB',kwargs,_singular_values_plot_default,pop=True)
1101+
'freqplot','dB',kwargs,_singular_values_plot_default,pop=True)
10981102
Hz=config._get_param(
1099-
'singular_values_plot','Hz',kwargs,_singular_values_plot_default,pop=True)
1103+
'freqplot','Hz',kwargs,_singular_values_plot_default,pop=True)
11001104
grid=config._get_param(
1101-
'singular_values_plot','grid',kwargs,_singular_values_plot_default,pop=True)
1105+
'freqplot','grid',kwargs,_singular_values_plot_default,pop=True)
11021106
plot=config._get_param(
11031107
'singular_values_plot','plot',plot,True)
11041108
omega_num=config._get_param('freqplot','number_of_samples',omega_num)
@@ -1262,7 +1266,7 @@ def _determine_omega_vector(syslist, omega_in, omega_limits, omega_num, Hz):
12621266
np.log10(omega_limits[1]),
12631267
num=omega_num,endpoint=True)
12641268
else:
1265-
omega_out=np.asarray(omega_in)
1269+
omega_out=np.copy(omega_in)
12661270
ifHz:
12671271
omega_out*=2.*math.pi
12681272
returnomega_out,omega_range_given

‎control/tests/config_test.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ def test_set_defaults(self):
3030

3131
@mplcleanup
3232
deftest_get_param(self):
33-
assertct.config._get_param('bode','dB')\
34-
==ct.config.defaults['bode.dB']
35-
assertct.config._get_param('bode','dB',1)==1
33+
assertct.config._get_param('freqplot','dB')\
34+
==ct.config.defaults['freqplot.dB']
35+
assertct.config._get_param('freqplot','dB',1)==1
3636
ct.config.defaults['config.test1']=1
3737
assertct.config._get_param('config','test1',None)==1
3838
assertct.config._get_param('config','test1',None,1)==1
@@ -85,7 +85,7 @@ def test_fbs_bode(self):
8585
np.testing.assert_almost_equal(mag_y[0],20*log10(10),decimal=3)
8686

8787
plt.figure()
88-
ct.bode_plot(self.sys,omega,Hz=True)
88+
ct.bode_plot(self.sys,omega/2./pi,Hz=True)
8989
mag_x,mag_y= (((plt.gcf().axes[0]).get_lines())[0]).get_data()
9090
np.testing.assert_almost_equal(mag_x[0],0.001/ (2*pi),decimal=6)
9191

@@ -130,7 +130,7 @@ def test_matlab_bode(self):
130130
np.testing.assert_almost_equal(mag_y[0],20*log10(10),decimal=3)
131131

132132
plt.figure()
133-
ct.bode_plot(self.sys,omega,Hz=True)
133+
ct.bode_plot(self.sys,omega/2./pi,Hz=True)
134134
mag_x,mag_y= (((plt.gcf().axes[0]).get_lines())[0]).get_data()
135135
np.testing.assert_almost_equal(mag_x[0],0.001/ (2*pi),decimal=6)
136136

@@ -141,9 +141,9 @@ def test_matlab_bode(self):
141141

142142
@mplcleanup
143143
deftest_custom_bode_default(self):
144-
ct.config.defaults['bode.dB']=True
145-
ct.config.defaults['bode.deg']=True
146-
ct.config.defaults['bode.Hz']=True
144+
ct.config.defaults['freqplot.dB']=True
145+
ct.config.defaults['freqplot.deg']=True
146+
ct.config.defaults['freqplot.Hz']=True
147147

148148
# Generate a Bode plot
149149
plt.figure()
@@ -154,7 +154,7 @@ def test_custom_bode_default(self):
154154

155155
# Override defaults
156156
plt.figure()
157-
ct.bode_plot(self.sys,omega,Hz=True,deg=False,dB=True)
157+
ct.bode_plot(self.sys,omega/2./pi,Hz=True,deg=False,dB=True)
158158
mag_x,mag_y= (((plt.gcf().axes[0]).get_lines())[0]).get_data()
159159
phase_x,phase_y= (((plt.gcf().axes[1]).get_lines())[0]).get_data()
160160
np.testing.assert_almost_equal(mag_x[0],0.001/ (2*pi),decimal=6)
@@ -200,9 +200,9 @@ def test_bode_feature_periphery_decade(self):
200200
deftest_reset_defaults(self):
201201
ct.use_matlab_defaults()
202202
ct.reset_defaults()
203-
assertnotct.config.defaults['bode.dB']
204-
assertct.config.defaults['bode.deg']
205-
assertnotct.config.defaults['bode.Hz']
203+
assertnotct.config.defaults['freqplot.dB']
204+
assertct.config.defaults['freqplot.deg']
205+
assertnotct.config.defaults['freqplot.Hz']
206206
assertct.config.defaults['freqplot.number_of_samples']==1000
207207
assertct.config.defaults['freqplot.feature_periphery_decades']==1.0
208208

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp