diff --git a/icom/encoder.py b/icom/encoder.py index 1887b8b..d080bbd 100644 --- a/icom/encoder.py +++ b/icom/encoder.py @@ -2,32 +2,36 @@ import numpy as np import matplotlib.pyplot as plt +import math + # encode a message using poisson rate coding def encode_message(symbol: str, - signal_rate: float, + signal_freq: float, duration: int, **kwargs): codebook = kwargs.get("codebook",None) - noise_rate = kwargs.get("noise_rate", 0) + noise_freq = kwargs.get("noise_rate", 0) if codebook is None: raise TypeError("Invalid code book.") - rate = signal_rate + noise_rate - + freq = signal_freq + noise_freq # generate spikes more than the required size. - isi = np.random.poisson(lam=rate, size= 2 * rate * duration) + size = math.ceil(2 * freq * duration) + + isi = np.random.exponential(scale = 1/freq, size=size) spikes = np.cumsum(isi) # convert intervals to a train - spikes = spikes * (2*duration/spikes[-1]) # normalize - # add leak spikes + # filter out-of-bound spikes + spikes = spikes[np.where(spikes