Module rpps.sync.time.mm
Classes
class MM (mu, est, interp=32)-
Expand source code
class MM: __slots__ = ( "mu", "est", "interp", "_interp", "outs", "rail" ) def __init__(self, mu, est, interp=32): self.mu = mu self.est = est self.interp = up.Sinc(interp) self._interp = interp self.outs = np.zeros(3, dtype=np.complex64) # 0, -1, -2 self.rail = np.zeros(3, dtype=np.complex64) # 0, -1, -2 def run(self, meta: Meta): meta = meta + self.interp # Interpolate meta.obj opt_idx = int(self.est*self._interp) out = meta.obj[opt_idx] rail = int(np.real(out) > 0) + 1j*int(np.imag(out) > 0) self._clock(out, rail) x = (self.rail[0] - self.rail[2]) * np.conj(self.outs[1]) y = (self.outs[0] - self.outs[2]) * np.conj(self.rail[1]) mm_val = np.real(y-x) self.est += self.mu*mm_val return out def burst(self, meta: Meta): samples = np.copy(meta.obj) Fs = meta.Fs sym_out = int(len(samples)//meta.sps) out = np.zeros(sym_out, dtype=samples.dtype) i_in = meta.sps for i in range(1, sym_out, 1): meta.obj = samples[i_in-meta.sps:i_in] out[i] = self.run(meta) i_in += meta.sps + int(np.floor(self.est)) meta.obj = out meta.Fs = Fs / meta.sps meta.sps = 1 return meta def _clock(self, out, rail): self.outs = np.roll(self.outs, 1) self.outs[0] = out self.rail = np.roll(self.rail, 1) self.rail[0] = railInstance variables
var est-
Expand source code
class MM: __slots__ = ( "mu", "est", "interp", "_interp", "outs", "rail" ) def __init__(self, mu, est, interp=32): self.mu = mu self.est = est self.interp = up.Sinc(interp) self._interp = interp self.outs = np.zeros(3, dtype=np.complex64) # 0, -1, -2 self.rail = np.zeros(3, dtype=np.complex64) # 0, -1, -2 def run(self, meta: Meta): meta = meta + self.interp # Interpolate meta.obj opt_idx = int(self.est*self._interp) out = meta.obj[opt_idx] rail = int(np.real(out) > 0) + 1j*int(np.imag(out) > 0) self._clock(out, rail) x = (self.rail[0] - self.rail[2]) * np.conj(self.outs[1]) y = (self.outs[0] - self.outs[2]) * np.conj(self.rail[1]) mm_val = np.real(y-x) self.est += self.mu*mm_val return out def burst(self, meta: Meta): samples = np.copy(meta.obj) Fs = meta.Fs sym_out = int(len(samples)//meta.sps) out = np.zeros(sym_out, dtype=samples.dtype) i_in = meta.sps for i in range(1, sym_out, 1): meta.obj = samples[i_in-meta.sps:i_in] out[i] = self.run(meta) i_in += meta.sps + int(np.floor(self.est)) meta.obj = out meta.Fs = Fs / meta.sps meta.sps = 1 return meta def _clock(self, out, rail): self.outs = np.roll(self.outs, 1) self.outs[0] = out self.rail = np.roll(self.rail, 1) self.rail[0] = rail var interp-
Expand source code
class MM: __slots__ = ( "mu", "est", "interp", "_interp", "outs", "rail" ) def __init__(self, mu, est, interp=32): self.mu = mu self.est = est self.interp = up.Sinc(interp) self._interp = interp self.outs = np.zeros(3, dtype=np.complex64) # 0, -1, -2 self.rail = np.zeros(3, dtype=np.complex64) # 0, -1, -2 def run(self, meta: Meta): meta = meta + self.interp # Interpolate meta.obj opt_idx = int(self.est*self._interp) out = meta.obj[opt_idx] rail = int(np.real(out) > 0) + 1j*int(np.imag(out) > 0) self._clock(out, rail) x = (self.rail[0] - self.rail[2]) * np.conj(self.outs[1]) y = (self.outs[0] - self.outs[2]) * np.conj(self.rail[1]) mm_val = np.real(y-x) self.est += self.mu*mm_val return out def burst(self, meta: Meta): samples = np.copy(meta.obj) Fs = meta.Fs sym_out = int(len(samples)//meta.sps) out = np.zeros(sym_out, dtype=samples.dtype) i_in = meta.sps for i in range(1, sym_out, 1): meta.obj = samples[i_in-meta.sps:i_in] out[i] = self.run(meta) i_in += meta.sps + int(np.floor(self.est)) meta.obj = out meta.Fs = Fs / meta.sps meta.sps = 1 return meta def _clock(self, out, rail): self.outs = np.roll(self.outs, 1) self.outs[0] = out self.rail = np.roll(self.rail, 1) self.rail[0] = rail var mu-
Expand source code
class MM: __slots__ = ( "mu", "est", "interp", "_interp", "outs", "rail" ) def __init__(self, mu, est, interp=32): self.mu = mu self.est = est self.interp = up.Sinc(interp) self._interp = interp self.outs = np.zeros(3, dtype=np.complex64) # 0, -1, -2 self.rail = np.zeros(3, dtype=np.complex64) # 0, -1, -2 def run(self, meta: Meta): meta = meta + self.interp # Interpolate meta.obj opt_idx = int(self.est*self._interp) out = meta.obj[opt_idx] rail = int(np.real(out) > 0) + 1j*int(np.imag(out) > 0) self._clock(out, rail) x = (self.rail[0] - self.rail[2]) * np.conj(self.outs[1]) y = (self.outs[0] - self.outs[2]) * np.conj(self.rail[1]) mm_val = np.real(y-x) self.est += self.mu*mm_val return out def burst(self, meta: Meta): samples = np.copy(meta.obj) Fs = meta.Fs sym_out = int(len(samples)//meta.sps) out = np.zeros(sym_out, dtype=samples.dtype) i_in = meta.sps for i in range(1, sym_out, 1): meta.obj = samples[i_in-meta.sps:i_in] out[i] = self.run(meta) i_in += meta.sps + int(np.floor(self.est)) meta.obj = out meta.Fs = Fs / meta.sps meta.sps = 1 return meta def _clock(self, out, rail): self.outs = np.roll(self.outs, 1) self.outs[0] = out self.rail = np.roll(self.rail, 1) self.rail[0] = rail var outs-
Expand source code
class MM: __slots__ = ( "mu", "est", "interp", "_interp", "outs", "rail" ) def __init__(self, mu, est, interp=32): self.mu = mu self.est = est self.interp = up.Sinc(interp) self._interp = interp self.outs = np.zeros(3, dtype=np.complex64) # 0, -1, -2 self.rail = np.zeros(3, dtype=np.complex64) # 0, -1, -2 def run(self, meta: Meta): meta = meta + self.interp # Interpolate meta.obj opt_idx = int(self.est*self._interp) out = meta.obj[opt_idx] rail = int(np.real(out) > 0) + 1j*int(np.imag(out) > 0) self._clock(out, rail) x = (self.rail[0] - self.rail[2]) * np.conj(self.outs[1]) y = (self.outs[0] - self.outs[2]) * np.conj(self.rail[1]) mm_val = np.real(y-x) self.est += self.mu*mm_val return out def burst(self, meta: Meta): samples = np.copy(meta.obj) Fs = meta.Fs sym_out = int(len(samples)//meta.sps) out = np.zeros(sym_out, dtype=samples.dtype) i_in = meta.sps for i in range(1, sym_out, 1): meta.obj = samples[i_in-meta.sps:i_in] out[i] = self.run(meta) i_in += meta.sps + int(np.floor(self.est)) meta.obj = out meta.Fs = Fs / meta.sps meta.sps = 1 return meta def _clock(self, out, rail): self.outs = np.roll(self.outs, 1) self.outs[0] = out self.rail = np.roll(self.rail, 1) self.rail[0] = rail var rail-
Expand source code
class MM: __slots__ = ( "mu", "est", "interp", "_interp", "outs", "rail" ) def __init__(self, mu, est, interp=32): self.mu = mu self.est = est self.interp = up.Sinc(interp) self._interp = interp self.outs = np.zeros(3, dtype=np.complex64) # 0, -1, -2 self.rail = np.zeros(3, dtype=np.complex64) # 0, -1, -2 def run(self, meta: Meta): meta = meta + self.interp # Interpolate meta.obj opt_idx = int(self.est*self._interp) out = meta.obj[opt_idx] rail = int(np.real(out) > 0) + 1j*int(np.imag(out) > 0) self._clock(out, rail) x = (self.rail[0] - self.rail[2]) * np.conj(self.outs[1]) y = (self.outs[0] - self.outs[2]) * np.conj(self.rail[1]) mm_val = np.real(y-x) self.est += self.mu*mm_val return out def burst(self, meta: Meta): samples = np.copy(meta.obj) Fs = meta.Fs sym_out = int(len(samples)//meta.sps) out = np.zeros(sym_out, dtype=samples.dtype) i_in = meta.sps for i in range(1, sym_out, 1): meta.obj = samples[i_in-meta.sps:i_in] out[i] = self.run(meta) i_in += meta.sps + int(np.floor(self.est)) meta.obj = out meta.Fs = Fs / meta.sps meta.sps = 1 return meta def _clock(self, out, rail): self.outs = np.roll(self.outs, 1) self.outs[0] = out self.rail = np.roll(self.rail, 1) self.rail[0] = rail
Methods
def burst(self,
meta: Meta)-
Expand source code
def burst(self, meta: Meta): samples = np.copy(meta.obj) Fs = meta.Fs sym_out = int(len(samples)//meta.sps) out = np.zeros(sym_out, dtype=samples.dtype) i_in = meta.sps for i in range(1, sym_out, 1): meta.obj = samples[i_in-meta.sps:i_in] out[i] = self.run(meta) i_in += meta.sps + int(np.floor(self.est)) meta.obj = out meta.Fs = Fs / meta.sps meta.sps = 1 return meta def run(self,
meta: Meta)-
Expand source code
def run(self, meta: Meta): meta = meta + self.interp # Interpolate meta.obj opt_idx = int(self.est*self._interp) out = meta.obj[opt_idx] rail = int(np.real(out) > 0) + 1j*int(np.imag(out) > 0) self._clock(out, rail) x = (self.rail[0] - self.rail[2]) * np.conj(self.outs[1]) y = (self.outs[0] - self.outs[2]) * np.conj(self.rail[1]) mm_val = np.real(y-x) self.est += self.mu*mm_val return out