def collect_scan(self, f_range_mat, npoints_v=[1601], navg_v=[999], power_v=[-50], wait_v=[1], BW_v=[1e3]): x = [] y = [] range_mat = np.array(f_range_mat) len_loop = len(range_mat[:, 0]) def vector_handling(vector): if len(vector) == 1: out = vector[0] * np.ones(len_loop) else: out = vector return out npoints = vector_handling(npoints_v) navg = vector_handling(npoints_v) power = vector_handling(power_v) wait = vector_handling(wait_v) BW = vector_handling(BW_v) for i in np.arange(len_loop): f_range = range_mat[i, :] dat_tmp = self.collect_single(f_range, npoints[i], navg[i], power[i], wait[i], BW[i]) x = np.hstack((x, dat_tmp.x)) y = np.hstack((y, dat_tmp.y)) dat = dm.data_2d() dat.load_var(x, y) return dat
def collect_single(self, f_range, npoints=1601, navg=999, power=-50, wait=1, BW=1e3): """This function reads S-parameter from the VNA using the specified setting: f_range: frequency range in form of a list [f_start, f_stop] npoints: the the number of frequency points to measure navg = number of averaging measurements (average coefficient) power = RF_out power in dB wait = data collection time in seconds BW = IF bandwidth""" self.IFBW(BW) self.freq_npoints(npoints) self.freq_start(f_range[0]) self.freq_stop(f_range[1]) self.power(power) if navg == 0: self.average_state(0) else: self.average_state(1) self.average_count(navg) self.average_reset() time.sleep(wait) # delay x = np.asarray(self.freq_read(), dtype="float") y = np.asarray(self.trace_read()[0], dtype="float") dat = dm.data_2d() dat.load_var(x, y) return dat
def VNA_read(fstart,fstop,power=-60,wait=60): x, y = vna_m.collect_sparam(fstart,fstop,power,wait) dat = d_m.data_2d() dat.load_var(x,y) return dat
def collect_single_ave(self,f_range,Name,Trace=1,Spar='S21',npoints=1601,navg = 100,power=-50,BW=1e3): '''This function reads S-parameter from the VNA using the specified setting: f_range: frequency range in form of a list [f_start, f_stop] npoints: the the number of frequency points to measure navg = number of averaging measurements (average coefficient) power = RF_out power in dB wait = data collection time in seconds BW = IF bandwidth''' self.IFBW(BW) self.freq_npoints(npoints) self.freq_start(f_range[0]) self.freq_stop(f_range[1]) self.power(power) if (navg==0): self.average_state(0) else: self.average_state(1) self.average_count(navg) self.average_reset() while(self.average_completed() == False): time.sleep(1) self.cmd('CALC'+str(Trace)+':PAR:EXT','\''+Name+'\', \''+Spar+'\'') x = np.array(self.freq_read(Name),dtype='float') y = np.asarray(self.trace_read(),dtype='float') dat = dm.data_2d() dat.load_var(x,y) return dat
def collect_scan_correct(self,f_range_mat,npoints_v=[1601],navg_v = [999],power_v=[-50],corr_power_v=[-10],wait_v=[10],corr_wait_v=[1],BW_v=[1e3]): dat_cor = self.collect_scan(f_range_mat,npoints_v,navg_v,corr_power_v,corr_wait_v,BW_v) dat_mes = self.collect_scan(f_range_mat,npoints_v,navg_v,power_v,wait_v,BW_v) dat = dm.data_2d() dat.load_var(dat_mes.x,dat_mes.y-dat_cor.y) return dat
def collect_single_correct( self, f_range, npoints=1601, navg=999, power=-50, corr_power=-10, wait=10, corr_wait=1, BW=1e3 ): dat_cor = self.collect_single(f_range, npoints, navg, corr_power, corr_wait, BW) dat_mes = self.collect_single(f_range, npoints, navg, power, wait, BW) dat = dm.data_2d() dat.load_var(dat_mes.x, dat_mes.y - dat_cor.y) return dat
def collect_single_correct_ave(self,f_range,name,npoints=1601,navg=100,power=-50,corr_power=-10,corr_wait=1,BW=1e3): dat_cor = self.collect_single(f_range,name,npoints=npoints,navg=999,power=corr_power,wait=corr_wait,BW=1e3) self.power(-70) time.sleep(2) dat_mes = self.collect_single_ave(f_range,name,npoints=npoints,navg=navg,power=power,BW=BW) dat = dm.data_2d() dat.load_var(dat_mes.x,dat_mes.y-dat_cor.y) return dat