diff --git a/py/poisson_generator.py b/py/poisson_generator.py new file mode 100644 index 0000000..48db27d --- /dev/null +++ b/py/poisson_generator.py @@ -0,0 +1,37 @@ +#%% +import random +from math import log +import matplotlib.pyplot as plt + +class PoissonProcess(): + def __init__(self, **kwargs): + self.lam = kwargs.get("lam", 5) # rate + self.size = kwargs.get("size", 100) + + def generate(self): + _time = 0 + events = [] + for i in range(self.size): + p = random.random() + + _interval = - log(1-p) / self.lam + _time = _time + _interval + + events.append(_time) + return events + +#1 (events) +poi = PoissonProcess(lam = 5).generate() +print(poi) + +#matplotlib: x=index, y=poi[index] +plt.plot(range(100),poi) + + +#2 (points) +import numpy as np +poi = np.random.poisson(5,100) +plt.plot(poi) + +plt.show() +#%% diff --git a/py/poisson_generator.py b/py/poisson_generator.py new file mode 100644 index 0000000..48db27d --- /dev/null +++ b/py/poisson_generator.py @@ -0,0 +1,37 @@ +#%% +import random +from math import log +import matplotlib.pyplot as plt + +class PoissonProcess(): + def __init__(self, **kwargs): + self.lam = kwargs.get("lam", 5) # rate + self.size = kwargs.get("size", 100) + + def generate(self): + _time = 0 + events = [] + for i in range(self.size): + p = random.random() + + _interval = - log(1-p) / self.lam + _time = _time + _interval + + events.append(_time) + return events + +#1 (events) +poi = PoissonProcess(lam = 5).generate() +print(poi) + +#matplotlib: x=index, y=poi[index] +plt.plot(range(100),poi) + + +#2 (points) +import numpy as np +poi = np.random.poisson(5,100) +plt.plot(poi) + +plt.show() +#%% diff --git a/py/transmit.py b/py/transmit.py new file mode 100644 index 0000000..a1234b0 --- /dev/null +++ b/py/transmit.py @@ -0,0 +1,57 @@ + +class Sender(): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def encode(self): + pass + +class NBackSender(Sender): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + +class Receiver(): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def decode(self): + pass + +class NBackReceiver(Receiver): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + +class Channel(): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def transmit(self): + pass + + def add_noise(self): + pass + + +class Message(): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + +class CodeBook(): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + +class Transmission(): + def __init__(self, sender, channel, receiver, noise_lambda=2): + pass + + def run(self, times=100): + pass + + +if __name__ == "__main__": + sender = NBackSender() + receiver = NBackReceiver() + channel = Channel() + transmission = Transmission(sender, channel, receiver) + transmission.run(times=1000)