Module rpps.sync.costas

Classes

class Costas (alpha, beta, order=2)
Expand source code
class Costas:
    __slots__ = (
        "alpha", "beta", "err_func",
        "freq", "pha"
    )
    def __init__(self, alpha, beta, order=2):
        self.alpha = alpha
        self.beta = beta
        if order == 2:
            self.err_func = _o2
        elif order == 4:
            self.err_func = _o4

        self.pha = 0.0
        self.freq = 0.0

    def burst(self, meta: Meta):
        out = np.zeros(len(meta.obj), dtype=meta.obj.dtype)
        for i, sym in enumerate(meta.obj):
            out[i] = self.run(sym)
        meta.obj = out
        return meta

    def run(self, sym):
        out = sym * np.exp(-1j*self.pha)
        error = self.err_func(out)

        self.freq += (self.beta * error)
        self.pha += self.freq + (self.alpha * error)

        # while self.pha >= 2*np.pi:
        #     self.pha -= 2*np.pi
        # while self.pha < 0:
        #     self.pha += 2*np.pi
        return out

Instance variables

var alpha
Expand source code
class Costas:
    __slots__ = (
        "alpha", "beta", "err_func",
        "freq", "pha"
    )
    def __init__(self, alpha, beta, order=2):
        self.alpha = alpha
        self.beta = beta
        if order == 2:
            self.err_func = _o2
        elif order == 4:
            self.err_func = _o4

        self.pha = 0.0
        self.freq = 0.0

    def burst(self, meta: Meta):
        out = np.zeros(len(meta.obj), dtype=meta.obj.dtype)
        for i, sym in enumerate(meta.obj):
            out[i] = self.run(sym)
        meta.obj = out
        return meta

    def run(self, sym):
        out = sym * np.exp(-1j*self.pha)
        error = self.err_func(out)

        self.freq += (self.beta * error)
        self.pha += self.freq + (self.alpha * error)

        # while self.pha >= 2*np.pi:
        #     self.pha -= 2*np.pi
        # while self.pha < 0:
        #     self.pha += 2*np.pi
        return out
var beta
Expand source code
class Costas:
    __slots__ = (
        "alpha", "beta", "err_func",
        "freq", "pha"
    )
    def __init__(self, alpha, beta, order=2):
        self.alpha = alpha
        self.beta = beta
        if order == 2:
            self.err_func = _o2
        elif order == 4:
            self.err_func = _o4

        self.pha = 0.0
        self.freq = 0.0

    def burst(self, meta: Meta):
        out = np.zeros(len(meta.obj), dtype=meta.obj.dtype)
        for i, sym in enumerate(meta.obj):
            out[i] = self.run(sym)
        meta.obj = out
        return meta

    def run(self, sym):
        out = sym * np.exp(-1j*self.pha)
        error = self.err_func(out)

        self.freq += (self.beta * error)
        self.pha += self.freq + (self.alpha * error)

        # while self.pha >= 2*np.pi:
        #     self.pha -= 2*np.pi
        # while self.pha < 0:
        #     self.pha += 2*np.pi
        return out
var err_func
Expand source code
class Costas:
    __slots__ = (
        "alpha", "beta", "err_func",
        "freq", "pha"
    )
    def __init__(self, alpha, beta, order=2):
        self.alpha = alpha
        self.beta = beta
        if order == 2:
            self.err_func = _o2
        elif order == 4:
            self.err_func = _o4

        self.pha = 0.0
        self.freq = 0.0

    def burst(self, meta: Meta):
        out = np.zeros(len(meta.obj), dtype=meta.obj.dtype)
        for i, sym in enumerate(meta.obj):
            out[i] = self.run(sym)
        meta.obj = out
        return meta

    def run(self, sym):
        out = sym * np.exp(-1j*self.pha)
        error = self.err_func(out)

        self.freq += (self.beta * error)
        self.pha += self.freq + (self.alpha * error)

        # while self.pha >= 2*np.pi:
        #     self.pha -= 2*np.pi
        # while self.pha < 0:
        #     self.pha += 2*np.pi
        return out
var freq
Expand source code
class Costas:
    __slots__ = (
        "alpha", "beta", "err_func",
        "freq", "pha"
    )
    def __init__(self, alpha, beta, order=2):
        self.alpha = alpha
        self.beta = beta
        if order == 2:
            self.err_func = _o2
        elif order == 4:
            self.err_func = _o4

        self.pha = 0.0
        self.freq = 0.0

    def burst(self, meta: Meta):
        out = np.zeros(len(meta.obj), dtype=meta.obj.dtype)
        for i, sym in enumerate(meta.obj):
            out[i] = self.run(sym)
        meta.obj = out
        return meta

    def run(self, sym):
        out = sym * np.exp(-1j*self.pha)
        error = self.err_func(out)

        self.freq += (self.beta * error)
        self.pha += self.freq + (self.alpha * error)

        # while self.pha >= 2*np.pi:
        #     self.pha -= 2*np.pi
        # while self.pha < 0:
        #     self.pha += 2*np.pi
        return out
var pha
Expand source code
class Costas:
    __slots__ = (
        "alpha", "beta", "err_func",
        "freq", "pha"
    )
    def __init__(self, alpha, beta, order=2):
        self.alpha = alpha
        self.beta = beta
        if order == 2:
            self.err_func = _o2
        elif order == 4:
            self.err_func = _o4

        self.pha = 0.0
        self.freq = 0.0

    def burst(self, meta: Meta):
        out = np.zeros(len(meta.obj), dtype=meta.obj.dtype)
        for i, sym in enumerate(meta.obj):
            out[i] = self.run(sym)
        meta.obj = out
        return meta

    def run(self, sym):
        out = sym * np.exp(-1j*self.pha)
        error = self.err_func(out)

        self.freq += (self.beta * error)
        self.pha += self.freq + (self.alpha * error)

        # while self.pha >= 2*np.pi:
        #     self.pha -= 2*np.pi
        # while self.pha < 0:
        #     self.pha += 2*np.pi
        return out

Methods

def burst(self,
meta: Meta)
Expand source code
def burst(self, meta: Meta):
    out = np.zeros(len(meta.obj), dtype=meta.obj.dtype)
    for i, sym in enumerate(meta.obj):
        out[i] = self.run(sym)
    meta.obj = out
    return meta
def run(self, sym)
Expand source code
def run(self, sym):
    out = sym * np.exp(-1j*self.pha)
    error = self.err_func(out)

    self.freq += (self.beta * error)
    self.pha += self.freq + (self.alpha * error)

    # while self.pha >= 2*np.pi:
    #     self.pha -= 2*np.pi
    # while self.pha < 0:
    #     self.pha += 2*np.pi
    return out