Added support to plot measurement data
Added support to plot measurement results, as well as some updates to the default style.
This commit is contained in:
parent
910f7743b1
commit
852f4cad1d
7 changed files with 176 additions and 30 deletions
|
@ -12,6 +12,9 @@ import re
|
||||||
from matplotlib import rcParams, pyplot as pp
|
from matplotlib import rcParams, pyplot as pp
|
||||||
from cycler import cycler
|
from cycler import cycler
|
||||||
|
|
||||||
|
POLAR_YLIM_CONST=(-18,-6)
|
||||||
|
POLAR_YLIM_CONST_ALT=(-32,-6)
|
||||||
|
|
||||||
fcFontList = FM.get_fontconfig_fonts()
|
fcFontList = FM.get_fontconfig_fonts()
|
||||||
# Search only for fonts that have name matches similar to this
|
# Search only for fonts that have name matches similar to this
|
||||||
# note this is ALSO a priority list
|
# note this is ALSO a priority list
|
||||||
|
@ -50,6 +53,7 @@ rcParams['mathtext.it'] = 'serif:italic'
|
||||||
rcParams['mathtext.bf'] = 'serif:bold'
|
rcParams['mathtext.bf'] = 'serif:bold'
|
||||||
rcParams['mathtext.sf'] = 'serif'
|
rcParams['mathtext.sf'] = 'serif'
|
||||||
rcParams['mathtext.tt'] = 'monospace'
|
rcParams['mathtext.tt'] = 'monospace'
|
||||||
|
rcParams['lines.linewidth'] = 1.0
|
||||||
|
|
||||||
# axes.prop_cycle
|
# axes.prop_cycle
|
||||||
COLOR_CYCLE_LIST = [
|
COLOR_CYCLE_LIST = [
|
||||||
|
|
|
@ -38,7 +38,7 @@ class ampSystem:
|
||||||
self.q1_L = 25
|
self.q1_L = 25
|
||||||
self.q1_C = 8
|
self.q1_C = 8
|
||||||
self.l1 = 140e-3 # nH
|
self.l1 = 140e-3 # nH
|
||||||
self.gm1 = 25e-3 # S
|
self.gm1 = 2.5e-3 # S
|
||||||
|
|
||||||
self._gamma_steps=8
|
self._gamma_steps=8
|
||||||
self._gamma_cap_ratio = 0.997
|
self._gamma_cap_ratio = 0.997
|
||||||
|
@ -190,10 +190,10 @@ class bufferSystem:
|
||||||
|
|
||||||
# Configuration Of Hardware
|
# Configuration Of Hardware
|
||||||
#####
|
#####
|
||||||
self.q2_L = 25
|
self.q2_L = 15
|
||||||
self.q2_C = 50
|
self.q2_C = 30
|
||||||
self.l2 = 140e-3 # nH
|
self.l2 = 140e-3 # nH
|
||||||
self.gm2 = 5e-3 # S
|
self.gm2 = 4e-3 # S
|
||||||
|
|
||||||
if not quiet:
|
if not quiet:
|
||||||
## Report System Descrption
|
## Report System Descrption
|
||||||
|
|
|
@ -41,6 +41,8 @@ default_window_position=['+20+80', '+120+80']
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
search_curves = (
|
search_curves = (
|
||||||
|
['2018-05-15',3.13],
|
||||||
|
['2018-05-16',3.18],
|
||||||
['2018-05-21',3.19],
|
['2018-05-21',3.19],
|
||||||
['2018-05-25',3.13]
|
['2018-05-25',3.13]
|
||||||
)
|
)
|
||||||
|
@ -78,7 +80,7 @@ for ind in inds:
|
||||||
GP=np.polyfit(buffer_freq, buffer_gain[:,ind], 2)
|
GP=np.polyfit(buffer_freq, buffer_gain[:,ind], 2)
|
||||||
PP=np.polyfit(buffer_freq, buffer_phase[:,ind], 2)
|
PP=np.polyfit(buffer_freq, buffer_phase[:,ind], 2)
|
||||||
#print(" %.2fe-3 x^2 + %.2fe-3 x + %.2fe-3 " % tuple(1e3*P))
|
#print(" %.2fe-3 x^2 + %.2fe-3 x + %.2fe-3 " % tuple(1e3*P))
|
||||||
print(ind)
|
print(ind, bias_t_mA[ind])
|
||||||
print(GP)
|
print(GP)
|
||||||
print(PP)
|
print(PP)
|
||||||
ax[1].plot(freq_synthetic, np.polyval(GP,freq_synthetic))
|
ax[1].plot(freq_synthetic, np.polyval(GP,freq_synthetic))
|
||||||
|
|
153
parsePy.py
Normal file → Executable file
153
parsePy.py
Normal file → Executable file
|
@ -5,16 +5,18 @@ import numpy as np
|
||||||
import matplotlib
|
import matplotlib
|
||||||
################################################################################
|
################################################################################
|
||||||
args_parser = argparse.ArgumentParser()
|
args_parser = argparse.ArgumentParser()
|
||||||
args_parser.add_argument('-n', type=int, default=1,
|
|
||||||
help='plot testing number')
|
|
||||||
args_parser.add_argument('--save','-s', action='store_true',
|
args_parser.add_argument('--save','-s', action='store_true',
|
||||||
help='save to files')
|
help='save to files')
|
||||||
args_parser.add_argument('--raster','-r', action='store_true',
|
args_parser.add_argument('--raster','-r', action='store_true',
|
||||||
help='save as raster')
|
help='save as raster')
|
||||||
args_parser.add_argument('--debug','-d', action='store_true',
|
args_parser.add_argument('--debug','-d', action='store_true',
|
||||||
help='hold for debugging')
|
help='hold for debugging')
|
||||||
|
args_parser.add_argument('--polar','-p', action='store_true',
|
||||||
|
help='do polar plotting (wide bandwidth)')
|
||||||
args_parser.add_argument('--headless','-q', action='store_true',
|
args_parser.add_argument('--headless','-q', action='store_true',
|
||||||
help='Remain neadless even if we aren\'t saving files.')
|
help='Remain neadless even if we aren\'t saving files.')
|
||||||
|
args_parser.add_argument('-n', type=int, default=3,
|
||||||
|
help='plot testing number')
|
||||||
args = args_parser.parse_args()
|
args = args_parser.parse_args()
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -34,6 +36,8 @@ import skrf as rf
|
||||||
from scipy.io import loadmat
|
from scipy.io import loadmat
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
import LPRDefaultPlotting
|
import LPRDefaultPlotting
|
||||||
|
import re
|
||||||
|
import json
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
# Override the defaults for this script
|
# Override the defaults for this script
|
||||||
|
@ -48,12 +52,17 @@ SRC_DATA_NAMES = [\
|
||||||
'Data_2018-05-16-clean',
|
'Data_2018-05-16-clean',
|
||||||
'Data_2018-05-21-clean',
|
'Data_2018-05-21-clean',
|
||||||
'Data_2018-05-25-clean']
|
'Data_2018-05-25-clean']
|
||||||
SRC_DATA_INDEX = 2
|
SRC_DATA_INDEX = args.n-1
|
||||||
SRC_DATA_NAME = SRC_DATA_NAMES[SRC_DATA_INDEX]
|
SRC_DATA_NAME = SRC_DATA_NAMES[SRC_DATA_INDEX]
|
||||||
|
#SRC_DATA_DATESTR = '-'.join(SRC_DATA_NAME.split('_')[1].split('-')[:-1])
|
||||||
SRC_DATA_LOC = '/media/ramdisk/' + SRC_DATA_NAME + '/';
|
SRC_DATA_LOC = '/media/ramdisk/' + SRC_DATA_NAME + '/';
|
||||||
SRC_DATA_SUMMARY = 'dat_clean/' + SRC_DATA_NAME + '_sum.json';
|
SRC_DATA_SUMMARY = '/home/luke/Dropbox/Grad School/1801_PS/' \
|
||||||
|
'2018-05_Testing/results_plot/dat_clean/' + SRC_DATA_NAME + '_sum.json';
|
||||||
|
|
||||||
|
if args.polar:
|
||||||
FILE_PAT = '%s-trunk2.s2p';
|
FILE_PAT = '%s-trunk2.s2p';
|
||||||
|
else:
|
||||||
|
FILE_PAT = '%s-trunk.s2p';
|
||||||
figdir = 'figures-measured'
|
figdir = 'figures-measured'
|
||||||
|
|
||||||
class MeasurementConfig(namedtuple('config', ['r','c','inv','bias'])):
|
class MeasurementConfig(namedtuple('config', ['r','c','inv','bias'])):
|
||||||
|
@ -61,7 +70,10 @@ class MeasurementConfig(namedtuple('config', ['r','c','inv','bias'])):
|
||||||
@property
|
@property
|
||||||
def fn_str(self):
|
def fn_str(self):
|
||||||
return "C%02d_R%1d_I%1d_B%0.4f" % (self.c, self.r, self.inv, self.bias)
|
return "C%02d_R%1d_I%1d_B%0.4f" % (self.c, self.r, self.inv, self.bias)
|
||||||
Measurement = namedtuple('measurement', ['cfg','gain','phase','f','s21'])
|
Measurement = namedtuple('measurement', ['cfg','gain','phase','f','s21', 'slope'])
|
||||||
|
|
||||||
|
slopeBandwidthMax = 1
|
||||||
|
slopeBandwidthFreq = 28+np.array([-1,1])*0.5*slopeBandwidthMax
|
||||||
|
|
||||||
def dB20(x):
|
def dB20(x):
|
||||||
return 20*np.log10(np.abs(x))
|
return 20*np.log10(np.abs(x))
|
||||||
|
@ -70,20 +82,64 @@ def ang_deg(x):
|
||||||
def ang(x):
|
def ang(x):
|
||||||
return np.angle(x)
|
return np.angle(x)
|
||||||
|
|
||||||
|
BDE=namedtuple('BufferDeEmbed',['mstr','PolyGain','PolyPhase','PhiFix','test'])
|
||||||
|
BDE_list=[]
|
||||||
|
# 2018-05-15
|
||||||
|
BDE_list.append(BDE(
|
||||||
|
'2018-05-15',
|
||||||
|
np.array([ 4.06488853e-03, -5.11527396e-01, 2.53053550e+01]),
|
||||||
|
np.array([-1.62202706e-03, 6.94343608e-01, -1.80381551e+02]),
|
||||||
|
-60,
|
||||||
|
'S02bB_C+02dB_M0'
|
||||||
|
))
|
||||||
|
# 2018-05-16
|
||||||
|
BDE_list.append(BDE(
|
||||||
|
'2018-05-16',
|
||||||
|
np.array([ 4.08875413e-03, -5.13017311e-01, 2.54047949e+01]),
|
||||||
|
np.array([-1.29541398e-03, 6.74431785e-01, -1.80127388e+02]),
|
||||||
|
-60,
|
||||||
|
'S02bB_C+02dB_M0'
|
||||||
|
))
|
||||||
# 2018-05-21
|
# 2018-05-21
|
||||||
PolyGain=np.array( [ 4.08875413e-03, -5.13017311e-01, 2.54047949e+01])
|
#PolyGain=np.array( [ 4.08875413e-03, -5.13017311e-01, 2.54047949e+01])
|
||||||
PolyPhase=np.array([-1.29541398e-03, 6.74431785e-01, -1.80127388e+02])
|
#PolyPhase=np.array([-1.29541398e-03, 6.74431785e-01, -1.80127388e+02])
|
||||||
|
BDE_list.append(BDE(
|
||||||
|
'2018-05-21',
|
||||||
|
np.array([ 4.08875413e-03, -5.13017311e-01, 2.54047949e+01]),
|
||||||
|
np.array([-1.29541398e-03, 6.74431785e-01, -1.80127388e+02]),
|
||||||
|
-60,
|
||||||
|
'S02bB_C+02dB_M0'
|
||||||
|
))
|
||||||
# 2018-05-25
|
# 2018-05-25
|
||||||
#PolyGain=np.array( [ 4.06488853e-03, -5.11527396e-01, 2.53053550e+01])
|
#PolyGain=np.array( [ 4.06488853e-03, -5.11527396e-01, 2.53053550e+01])
|
||||||
#PolyPhase=np.array([-1.62202706e-03, 6.94343608e-01, -1.80381551e+02])
|
#PolyPhase=np.array([-1.62202706e-03, 6.94343608e-01, -1.80381551e+02])
|
||||||
|
BDE_list.append(BDE(
|
||||||
|
'2018-05-25',
|
||||||
|
np.array([ 4.06488853e-03, -5.11527396e-01, 2.53053550e+01]),
|
||||||
|
np.array([-1.62202706e-03, 6.94343608e-01, -1.80381551e+02]),
|
||||||
|
-70,
|
||||||
|
'S02bB_C+06dB_M0'
|
||||||
|
))
|
||||||
|
|
||||||
|
source_directory='fromMat/%s_mat/' % SRC_DATA_NAME
|
||||||
|
for BDEx in BDE_list:
|
||||||
|
if re.search(BDEx.mstr, source_directory) != None:
|
||||||
|
PolyGain=BDEx.PolyGain
|
||||||
|
PolyPhase=BDEx.PolyPhase
|
||||||
|
PhaseFixedRotationFactor=BDEx.PhiFix
|
||||||
|
StopTestString=BDEx.test
|
||||||
|
FamStr=BDEx.mstr
|
||||||
|
break
|
||||||
|
|
||||||
source_directory='fromMat/Data_2018-05-21-clean_mat/'
|
|
||||||
source_data_list=['fromMat/Data_2018-05-21-clean_mat/S02bB_C+01dB_M0.mat']
|
|
||||||
for filename in os.listdir(source_directory):
|
for filename in os.listdir(source_directory):
|
||||||
filename=source_directory+filename
|
filename=source_directory+filename
|
||||||
group_filename_string = filename.split('/')[-1][:-4]
|
group_filename_string = filename.split('/')[-1][:-4]
|
||||||
src = loadmat(filename, struct_as_record=False)
|
src = loadmat(filename, struct_as_record=False)
|
||||||
|
|
||||||
|
if not HEADLESS and group_filename_string != StopTestString:
|
||||||
|
# skip until we hit some aribitrary targets
|
||||||
|
continue
|
||||||
|
|
||||||
collectedData=[]
|
collectedData=[]
|
||||||
for sample in src['data'][0]:
|
for sample in src['data'][0]:
|
||||||
tmp = [sample.__getattribute__(key)[0,0] for key in ['r', 'c', 'inv', 'bias_dp_set']]
|
tmp = [sample.__getattribute__(key)[0,0] for key in ['r', 'c', 'inv', 'bias_dp_set']]
|
||||||
|
@ -93,37 +149,96 @@ for filename in os.listdir(source_directory):
|
||||||
freq = np.squeeze(s2p_file.f*1e-9)
|
freq = np.squeeze(s2p_file.f*1e-9)
|
||||||
buffer_gain = np.polyval(PolyGain,freq)
|
buffer_gain = np.polyval(PolyGain,freq)
|
||||||
buffer_phase = np.polyval(PolyPhase,freq)
|
buffer_phase = np.polyval(PolyPhase,freq)
|
||||||
buffer_phase = buffer_phase - np.mean(buffer_phase)
|
buffer_phase = buffer_phase - np.mean(buffer_phase) + \
|
||||||
sdat = np.squeeze(s2p_file.s21.s)
|
PhaseFixedRotationFactor*np.pi/180
|
||||||
|
buffer_sdat = np.power(10,buffer_gain/20)*np.exp(1j*buffer_phase)
|
||||||
|
|
||||||
|
sdat = np.squeeze(s2p_file.s21.s)/buffer_sdat
|
||||||
|
|
||||||
|
slope_valid_inds = np.where(np.all((freq >= slopeBandwidthFreq[0],
|
||||||
|
freq <= slopeBandwidthFreq[1]),0))
|
||||||
|
sub_angles = np.unwrap(np.angle(sdat[slope_valid_inds]))*180/np.pi
|
||||||
|
sub_freq = freq[slope_valid_inds]-np.mean(freq[slope_valid_inds])
|
||||||
|
slope = np.polyfit(sub_freq,sub_angles-np.mean(sub_angles),1)[0]
|
||||||
index = np.squeeze(np.argwhere(freq==28))
|
index = np.squeeze(np.argwhere(freq==28))
|
||||||
collectedData.append(Measurement(pt,
|
collectedData.append(Measurement(pt,
|
||||||
dB20(sdat[index])-buffer_gain[index],
|
dB20(sdat[index]),
|
||||||
ang_deg(sdat[index])-buffer_phase[index],
|
ang_deg(sdat[index]),
|
||||||
freq, sdat))
|
freq, sdat, slope))
|
||||||
|
|
||||||
|
# Find the indicies close to 0 and 180 as my reference curves
|
||||||
|
phis = np.array([s.phase for s in collectedData])
|
||||||
|
best_slopes = np.argsort(np.abs(np.mod(phis+90,180)-90))[0:6]
|
||||||
|
slope_list = np.array([s.slope for s in collectedData])
|
||||||
|
slope_avg = np.mean(slope_list[best_slopes])
|
||||||
|
|
||||||
h=pp.figure()
|
h=pp.figure()
|
||||||
|
if args.polar:
|
||||||
ax=h.add_subplot(1,1,1, projection='polar')
|
ax=h.add_subplot(1,1,1, projection='polar')
|
||||||
|
else:
|
||||||
|
h2=pp.figure()
|
||||||
|
ax=h.subplots(2,1)
|
||||||
|
ax = np.append(ax, h2.subplots(1,1))
|
||||||
print("---------------------||------------------------------")
|
print("---------------------||------------------------------")
|
||||||
print(" _C R I _Bias_ || Gain Phase ")
|
print(" _C R I _Bias_ || Gain Phase ")
|
||||||
print("---------------------||------------------------------")
|
print("---------------------||------------------------------")
|
||||||
for imeas in collectedData:
|
for imeas in collectedData:
|
||||||
ax.plot(ang(imeas.s21)-buffer_phase, dB20(imeas.s21)-buffer_gain)
|
if args.polar:
|
||||||
|
#ax.plot(ang(imeas.s21)-buffer_phase, dB20(imeas.s21)-buffer_gain)
|
||||||
|
ax.plot(ang(imeas.s21), dB20(imeas.s21))
|
||||||
|
else:
|
||||||
|
#ax[0].plot(imeas.f, dB20(imeas.s21)-buffer_gain)
|
||||||
|
ax[0].plot(imeas.f, dB20(imeas.s21))
|
||||||
|
#unwrapped_phase = 180/np.pi*np.unwrap(ang(imeas.s21)-buffer_phase)
|
||||||
|
#ax[1].plot(imeas.f, unwrapped_phase)
|
||||||
|
unwrapped_phase = 180/np.pi*np.unwrap(ang(imeas.s21))
|
||||||
|
ax[1].plot(imeas.f, unwrapped_phase)
|
||||||
|
slope_relative = (imeas.f-28)*slope_avg
|
||||||
|
ax[2].plot(imeas.f, unwrapped_phase-slope_relative)
|
||||||
print(" %2d %d %d %.4f || %+7.1f dB %+9.2f deg" % \
|
print(" %2d %d %d %.4f || %+7.1f dB %+9.2f deg" % \
|
||||||
(imeas.cfg.c, imeas.cfg.r, imeas.cfg.inv, imeas.cfg.bias, \
|
(imeas.cfg.c, imeas.cfg.r, imeas.cfg.inv, imeas.cfg.bias, \
|
||||||
imeas.gain, imeas.phase))
|
imeas.gain, imeas.phase))
|
||||||
print("---------------------||------------------------------")
|
print("---------------------||------------------------------")
|
||||||
ax.set_ylim(-20,-6)
|
if args.polar:
|
||||||
ax.set_title('Measured Performance')
|
ax.set_ylim(LPRDefaultPlotting.POLAR_YLIM_CONST)
|
||||||
|
|
||||||
|
if args.polar:
|
||||||
|
ax.set_title('Measured Performance')
|
||||||
|
else:
|
||||||
|
ax[0].set_title('Measured Performance')
|
||||||
|
ax[0].set_ylabel('Gain (dB)');
|
||||||
|
ax[1].set_ylabel('Phase (deg)');
|
||||||
|
ax[2].set_ylabel('Phase (deg)');
|
||||||
|
ax[2].set_title('Relative Phase')
|
||||||
|
for aT in ax:
|
||||||
|
aT.set_xlabel('Frequency (GHz)')
|
||||||
|
aT.grid()
|
||||||
|
#aT.set_xlim((np.min(imeas.f), np.max(imeas.f)))
|
||||||
|
aT.set_xlim((28-1.0, 28+1.0))
|
||||||
|
|
||||||
|
if args.polar:
|
||||||
old_pos = ax.title.get_position()
|
old_pos = ax.title.get_position()
|
||||||
ax.title.set_position((old_pos[0], 1.1))
|
ax.title.set_position((old_pos[0], 1.1))
|
||||||
|
|
||||||
|
|
||||||
h.tight_layout()
|
h.tight_layout()
|
||||||
|
if not args.polar:
|
||||||
|
h2.tight_layout()
|
||||||
if args.save:
|
if args.save:
|
||||||
h.savefig('%s/%s.%s' % (figdir,
|
if args.polar:
|
||||||
'PolarGain-%s' % group_filename_string, fig_ext))
|
h.savefig('%s/PolarGain-%s-%s.%s' % (figdir, FamStr,
|
||||||
|
group_filename_string, fig_ext))
|
||||||
|
else:
|
||||||
|
h.savefig('%s/StdPlots-%s-%s.%s' % (figdir, FamStr,
|
||||||
|
group_filename_string, fig_ext))
|
||||||
|
h2.savefig('%s/RelStdPlots-%s-%s.%s' % (figdir, FamStr,
|
||||||
|
group_filename_string, fig_ext))
|
||||||
if HEADLESS:
|
if HEADLESS:
|
||||||
|
if not args.polar:
|
||||||
|
pp.close()
|
||||||
pp.close()
|
pp.close()
|
||||||
else:
|
else:
|
||||||
|
if not args.polar:
|
||||||
|
h2.show()
|
||||||
h.show()
|
h.show()
|
||||||
break
|
break
|
||||||
|
|
|
@ -36,6 +36,7 @@ for n in 1 2 3 4 11 12 13 14; do
|
||||||
) &
|
) &
|
||||||
done
|
done
|
||||||
|
|
||||||
|
#bash ./runParse.sh &
|
||||||
|
|
||||||
while [[ $(jobs -lr | wc -l) -gt 0 ]]; do sleep 0.1; done
|
while [[ $(jobs -lr | wc -l) -gt 0 ]]; do sleep 0.1; done
|
||||||
mkdir -p figures-png
|
mkdir -p figures-png
|
||||||
|
|
20
runParse.sh
Executable file
20
runParse.sh
Executable file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
MAX_JOBS=4
|
||||||
|
|
||||||
|
for n in $(seq 1 4); do
|
||||||
|
while [[ $MAX_JOBS -le $(jobs -l | wc -l) ]]; do sleep 0.1; done
|
||||||
|
echo " start $n →"
|
||||||
|
( ./parsePy.py -rq -n $n 1>/dev/null ) &
|
||||||
|
while [[ $MAX_JOBS -le $(jobs -l | wc -l) ]]; do sleep 0.1; done
|
||||||
|
( ./parsePy.py -rpq -n $n 1>/dev/null ) &
|
||||||
|
while [[ $MAX_JOBS -le $(jobs -l | wc -l) ]]; do sleep 0.1; done
|
||||||
|
( ./parsePy.py -sq -n $n 1>/dev/null ) &
|
||||||
|
while [[ $MAX_JOBS -le $(jobs -l | wc -l) ]]; do sleep 0.1; done
|
||||||
|
( ./parsePy.py -spq -n $n 1>/dev/null ) &
|
||||||
|
done
|
||||||
|
|
||||||
|
while [[ $(jobs -lr | wc -l) -gt 0 ]]; do sleep 0.1; done
|
||||||
|
SELECT_STRING="S02bB_C+03dB"
|
||||||
|
rsync -aPv "figures-measured/"*"${SELECT_STRING}"* ../tex/figures-measured/
|
||||||
|
|
|
@ -103,8 +103,12 @@ print(' Max G1 boost %.2fmS (%.1f%% of gm1)' % \
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Extract the computed tank conductanec, and the transfer functions.
|
# Extract the computed tank conductanec, and the transfer functions.
|
||||||
|
(y_buf, tf_buf) = B.compute_ref(f)
|
||||||
|
|
||||||
(y_tank, tf) = S.compute_block(f)
|
(y_tank, tf) = S.compute_block(f)
|
||||||
(_, tf_ref) = S.compute_ref(f)
|
(_, tf_ref) = S.compute_ref(f)
|
||||||
|
tf = tf*(tf_buf*np.ones((tf.shape[1],1))).T
|
||||||
|
tf_ref = tf_ref*tf_buf
|
||||||
|
|
||||||
# To produce full 360 dgree plots, double the two transfer functions by
|
# To produce full 360 dgree plots, double the two transfer functions by
|
||||||
# considering inversion.
|
# considering inversion.
|
||||||
|
@ -126,8 +130,6 @@ y_tank = y_tank.T
|
||||||
(bw_ang, rms_ang_swp)=rms_v_bw(tf_r_ang-tf_r_ang_ideal, S.bw_plt)
|
(bw_ang, rms_ang_swp)=rms_v_bw(tf_r_ang-tf_r_ang_ideal, S.bw_plt)
|
||||||
(bw_mag, rms_gain_swp)=rms_v_bw(tf_r, S.bw_plt)
|
(bw_mag, rms_gain_swp)=rms_v_bw(tf_r, S.bw_plt)
|
||||||
|
|
||||||
(y_buf, tf_buf) = B.compute_ref(f)
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
################################################################################
|
################################################################################
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -231,6 +233,7 @@ if 4 in plot_list or 14 in plot_list:
|
||||||
|
|
||||||
ax4[0].set_title('Tank Impedance')
|
ax4[0].set_title('Tank Impedance')
|
||||||
ax4[1].set_title('Transfer Function')
|
ax4[1].set_title('Transfer Function')
|
||||||
|
ax4[1].set_ylim(LPRDefaultPlotting.POLAR_YLIM_CONST)
|
||||||
|
|
||||||
# Adjust placement of smith plot
|
# Adjust placement of smith plot
|
||||||
old_pos = ax4[0].title.get_position()
|
old_pos = ax4[0].title.get_position()
|
||||||
|
@ -276,6 +279,7 @@ if 5 in plot_list:
|
||||||
|
|
||||||
ax5[0].set_title('Tank Impedance')
|
ax5[0].set_title('Tank Impedance')
|
||||||
ax5[1].set_title('Transfer Function')
|
ax5[1].set_title('Transfer Function')
|
||||||
|
ax5[1].set_ylim(LPRDefaultPlotting.POLAR_YLIM_CONST_ALT)
|
||||||
|
|
||||||
# Adjust placement of smith plot
|
# Adjust placement of smith plot
|
||||||
old_pos = ax5[0].title.get_position()
|
old_pos = ax5[0].title.get_position()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue