From 5d93290e61f3bdc5debbd6ce977d22f1450a888b Mon Sep 17 00:00:00 2001 From: Pascal <engelerp@phys.ethz.ch> Date: Fri, 30 Aug 2024 18:19:41 +0200 Subject: [PATCH] Added analysis function --- stitch_project/api/Stitch/Stitchtility.py | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/stitch_project/api/Stitch/Stitchtility.py b/stitch_project/api/Stitch/Stitchtility.py index c0b407d..501c330 100644 --- a/stitch_project/api/Stitch/Stitchtility.py +++ b/stitch_project/api/Stitch/Stitchtility.py @@ -1,3 +1,5 @@ +import numpy as np + def frequencyHzToDphi(frequency): dphi = int(frequency/0.18626451492) if dphi <= 1: @@ -24,3 +26,25 @@ def numPeriodsToNringup(numPeriods, frequencyHz): def numPeriodsToNmeas(numPeriods, frequencyHz): return int(numPeriods*100.0e6/frequencyHz) + +#this spits out nm and rad +def dataToAmpsPhase(data): + amps = [] + numdata = [int.from_bytes(x[0], byteorder='little') for x in data[0]] + cosdata = [int.from_bytes(x[0], byteorder='little') for x in data[1]] + sindata = [int.from_bytes(x[0], byteorder='little') for x in data[2]] + + for i in range(len(cosdata)): + if cosdata[i]&(2**63) != 0: + cosdata[i] = cosdata[i]-2**64 + for i in range(len(sindata)): + if sindata[i]&(2**63) != 0: + sindata[i] = sindata[i]-2**64 + + amps = [2**-15*np.sqrt(2.*cosdata[i]**2+2.*sindata[i]**2)/numdata[i] for i in range(len(numdata))] #probably pm + angles = [2.*np.arctan(sindata[i]/cosdata[i]) for i in range(len(numdata))] + angles = np.angle(np.array(cosdata)+1j*np.array(sindata)) + angles_unwr = np.unwrap(angles) + cosportion = [2**-15*np.abs(np.sqrt(2)*cosdata[i])/numdata[i] for i in range(len(amps))] + sinportion = [2**-15*np.abs(np.sqrt(2)*sindata[i])/numdata[i] for i in range(len(amps))] + return [amps,cosportion,sinportion], angles_unwr \ No newline at end of file -- GitLab