Source code for nengo.networks.oscillator

import nengo


[docs]def Oscillator(recurrent_tau, frequency, n_neurons, net=None): """A two-dimensional ensemble with interacting recurrent connections. The ensemble connects to itself in a manner similar to the integrator; however, here the two dimensions interact with each other to implement a cyclic oscillator. Parameters ---------- recurrent_tau : float Time constant on the recurrent connection. frequency : float Desired frequency, in Hz, of the cyclic oscillation. n_neurons : int Number of neurons in the recurrently connected ensemble. net : Network, optional (Default: None) A network in which the network components will be built. This is typically used to provide a custom set of Nengo object defaults through modifying ``net.config``. Returns ------- net : Network The newly built product network, or the provided ``net``. Attributes ---------- net.ensemble : Ensemble The recurrently connected oscillatory ensemble. net.input : Node Provides the input signal. """ if net is None: net = nengo.Network(label="Oscillator") with net: net.input = nengo.Node(label="In", size_in=2) net.ensemble = nengo.Ensemble( n_neurons, dimensions=2, label="Oscillator") tA = [[1, -frequency * recurrent_tau], [frequency * recurrent_tau, 1]] nengo.Connection(net.ensemble, net.ensemble, synapse=recurrent_tau, transform=tA) nengo.Connection(net.input, net.ensemble, synapse=None) return net