1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- import numpy as np
-
- class Calibration:
- def __init__(self):
- self.calibration_in_process = False
- self.calibrated = False
- self.phis = None
- self.magnitude_offsets = None
- self.current_feedback = None
- self.index = 0
- self.buffer_length = 100
-
- #self.new_calibration()
-
-
- def process_sample(self, sample):
- if self.calibration_in_process:
-
- if self.index < self.buffer_length:
- self.offsets[self.index, :] = sample
- self.index += 1
- else:
- self.offsets =np.mean(self.offsets, axis=0)
-
- self.update_arrays()
- print("-----Finished calibration")
- self.calibration_in_process = False
- self.index =0
- self.calibrated = True
-
- return None
- else:
- if self.calibrated:
-
- # sample = sample - self.offsets
- s_rotated = sample[0:20] * np.exp(-1j * self.phis)
- current_feedback_calibrated = sample[20] / self.current_feedback
- calibrated_sample = s_rotated - (current_feedback_calibrated * self.magnitude_offsets)
- return calibrated_sample
- else:
- return None
-
-
-
- def new_calibration(self):
-
- self.offsets = np.zeros((self.buffer_length, 21), dtype=np.complex)
- self.calibration_in_process = True
-
- def update_arrays(self):
-
- self.phis = np.angle(self.offsets[0:20], deg=False)
- self.magnitude_offsets = np.abs(self.offsets[0:20])
- self.current_feedback = self.offsets[20]
-
|