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()
Ejemplo n.º 2
0
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'