import numpy as np import matplotlib.pyplot as plt import IQMixer.IQCalib as IQ import Analyse_PSD as PSD import FileReader as reader IQCorrectionfile = 'IQMixer_Calib/20160803_1M_BOX/EllipseFit_0dBm_2000MHz_8000MHz.csv' folder = '../../../MeasurementResult/' filename = 'Noise_19dBm_4000MHz_2000K_1S_2' freq = 4000 fs, num, I, Q = reader.ReadNoise(folder, filename) paras = IQ.IQ_GetPara(IQCorrectionfile, freq) Icrr, Qcrr = IQ.IQ_CorrtBarends(paras, I, Q) IQ = (Icrr + 1j * Qcrr) / np.sqrt(np.mean(Qcrr)**2 + np.mean(Icrr)**2) revisetheta = -np.arctan2(np.mean(IQ.imag), np.mean(IQ.real)) noisecompfinalrevised = IQ * np.exp(1j * revisetheta) fx, Pxx, fy, Pyy, fxy, Pxy = PSD.Full_Spectrum(IQ.real, IQ.imag, fs) fxr, Pxxr, fyr, Pyyr, fxyr, Pxyr = PSD.Full_Spectrum( noisecompfinalrevised.real, noisecompfinalrevised.imag, fs) plt.plot(fx, 10 * np.log10(Pxx), label='ONres Amplitude ') plt.plot(fy, 10 * np.log10(Pyy), label='ONres Phase') plt.plot(fxr, 10 * np.log10(Pxxr), label='Ir') plt.plot(fyr, 10 * np.log10(Pyyr), label='Qr') plt.xscale('log') plt.legend() plt.show()
noiselist = [] with open(data_folder + noiselist_file + '.txt', 'r') as f: for line in f: noiselist.append(line.replace("\n", "")) num = len(sweeplist) plt.figure(figsize=(18.5, 10.5)) for n in range(0, num): ### Get file name and resonance frequency sweepdata_file = sweeplist[n] noisedata_file = noiselist[n] resfreq = float(resfreqlist[n]) # Read data sweepfreq, sweepI, sweepQ = reader.ReadSweep(data_folder, sweepdata_file) fsample, number, noiseI, noiseQ = reader.ReadNoise(data_folder, noisedata_file) meastime = len(number) / float(fsample) # Get IQ Mixer calibration parameter resfreqinMHz = int(round(sweepfreq[len(sweepfreq) / 2] / 1e6)) paras = IQ.IQ_GetPara(IQCalibrationfile, resfreqinMHz) # Calibrate IQ data I_mixercalibrated, Q_mixercalibrated = IQ.IQ_CorrtBarends( paras, sweepI, sweepQ) noiseI_mixercalibrated, noiseQ_mixercalibrated = IQ.IQ_CorrtBarends( paras, noiseI, noiseQ) # Normalize calibrated IQ Sweep data to IQ reference data # Get complex IQ sweepIQ_normalized = IQ.IQ_Normalize_Sweep(sweepfreq, I_mixercalibrated,
compfinal = comptiltmove * np.exp(-1j * theta) / radius """ rotfile = open(data_folder + data_file + '_IQDelaycalibrated_rotated.csv', 'w') fwrite = csv.writer(rotfile) for i in range(0, len(compfinal)): fwrite.writerow([compfinal[i].real, compfinal[i].imag]) rotfile.close() """ ##### Noise ##### ### On resonance noise noise_folder = "../../../MeasurementResult/20160613_NbRRR48_Noise/" noise_file = 'Noise_19dBm_4993MHz_2000K_1S' noisefr = fr fs, num, noiseI, noiseQ = reader.ReadNoise(noise_folder, noise_file) noiseIcrr, noiseQcrr = IQ.IQ_CorrtBarends(paras, noiseI, noiseQ) noisecomp = np.asarray( [noiseIcrr[i] + noiseQcrr[i] * 1j for i in range(0, len(noiseIcrr))]) noisecomptilt = noisecomp * np.exp(2 * np.pi * 1j * noisefr * tau) noisecomptiltmove = noisecomptilt - (x_c + 1j * y_c) noisecompfinal = noisecomptiltmove * np.exp(-1j * theta) / radius #revisetheta = np.arctan2(np.max(noisecompfinal.real)-np.mean(noisecompfinal.real), np.max(noisecompfinal.imag)-np.mean(noisecompfinal.imag)) revisetheta = -np.arctan2(np.mean(noisecompfinal.imag), np.mean(noisecompfinal.real)) noisecompfinalrevised = noisecompfinal * np.exp(1j * revisetheta) ### Off resonance noise offnoise_file = 'Noise_19dBm_4995MHz_2000K_1S'