def get_att(hd5file, element, freq, group = GROUP_ATT, fsweeploc=FSWEEPLOC):
    fidx = get_fidx(hd5file, freq, fsweeploc) 
    
    att_target = []
    att_measured = []
    phase_measured = []

    for att in hd5file[element + group].keys():
        dset = element + group + '/' + att 
        att_measured = att_measured + [20*log10(abs(hd5file[dset][fidx]))]
        att_target = att_target + [int(hd5file[dset].attrs['att'])]
        phase_measured = phase_measured + [complex_2_degree(hd5file[dset][fidx]) % 360]
        
    att_measured = sort_by_array(att_target, att_measured)
    phase_measured = sort_by_array(att_target, phase_measured)
    att_target = sort(att_target)
    return {'att_measured':att_measured, 'att_target':att_target, 'phase_measured':phase_measured}
def get_phase(hd5file, element, freq, group = GROUP_PHASE, fsweeploc=FSWEEPLOC):
    fidx = get_fidx(hd5file, freq, fsweeploc)
    
    phase_target = []
    phase_measured = []
    att_measured = []

    for phase in hd5file[element + group].keys():
        dset = element + group + '/' + phase 
        phase_measured = phase_measured + [complex_2_degree(hd5file[dset][fidx])]
        phase_target = phase_target + [int(hd5file[dset].attrs['phase'])]
        att_measured = att_measured + [20*log10(abs(hd5file[dset][fidx]))]
 
    att_measured = sort_by_array(phase_target, att_measured)
    phase_measured = sort_by_array(phase_target, phase_measured)
    phase_target = sort(phase_target)

    return {'phase_measured':phase_measured, 'phase_target':phase_target, 'att_measured':att_measured} 
示例#3
0
 def test_complex_2_degree(self):
     """
     Test complex to degree conversion with:
         90 = angle(0 + 1j)
     """
     assert_almost_equal(rf.complex_2_degree(0 + 1j), 90.0)
示例#4
0
# example usage: grabs S21 and S11 from VNA and plots the magnitude and phase
if __name__ == "__main__":
    vna = vna_init()
    vna_setspan(vna, F_SPAN, F_CENTER, POINTS)
    f = vna_readspan(vna)

    # grabs s11 and s21, formatted as complex numbers
    s11 = vna_get_measurement(vna, 's11meas')
    s21 = vna_get_measurement(vna, 's21meas')

    subplot(2,1,1)
    plot(f/1e9, 20*log10(abs(s11)))
    plot(f/1e9, 20*log10(abs(s21)))
    title('amplitude of S11 (blue) and S21 (green)')
    xlabel('frequency (GHz)')
    ylabel('amplitude (dB)')
    xlim([f[0]/1e9, f[-1]/1e9])
    grid(True)

    subplot(2,1,2)
    plot(f/1e9, skrf.complex_2_degree(s11))
    plot(f/1e9, skrf.complex_2_degree(s21))
    title('phase of S11 (blue) and S21 (green)')
    xlabel('frequency (GHz)')
    ylabel('phase (degrees)')
    xlim([f[0]/1e9, f[-1]/1e9])
    grid(True)

    show()
示例#5
0
# example usage: grabs S21 and S11 from VNA and plots the magnitude and phase
if __name__ == "__main__":
    vna = vna_init()
    vna_setspan(vna, F_SPAN, F_CENTER, POINTS)
    f = vna_readspan(vna)

    # grabs s11 and s21, formatted as complex numbers
    s11 = vna_get_measurement(vna, 's11meas')
    s21 = vna_get_measurement(vna, 's21meas')

    subplot(2, 1, 1)
    plot(f / 1e9, 20 * log10(abs(s11)))
    plot(f / 1e9, 20 * log10(abs(s21)))
    title('amplitude of S11 (blue) and S21 (green)')
    xlabel('frequency (GHz)')
    ylabel('amplitude (dB)')
    xlim([f[0] / 1e9, f[-1] / 1e9])
    grid(True)

    subplot(2, 1, 2)
    plot(f / 1e9, skrf.complex_2_degree(s11))
    plot(f / 1e9, skrf.complex_2_degree(s21))
    title('phase of S11 (blue) and S21 (green)')
    xlabel('frequency (GHz)')
    ylabel('phase (degrees)')
    xlim([f[0] / 1e9, f[-1] / 1e9])
    grid(True)

    show()
def get_phase(vna, meas):
    time.sleep(.01)
    s = vna_get_measurement(vna, meas)
    return skrf.complex_2_degree(s)
def get_phase(vna, meas):
    time.sleep(.01)
    s = vna_get_measurement(vna, meas)
    return skrf.complex_2_degree(s)