Source code for nengo.networks.oscillator
import warnings
import nengo
[docs]def Oscillator(recurrent_tau, frequency, n_neurons, net=None, **kwargs):
"""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.
kwargs
Keyword arguments passed through to ``nengo.Network``.
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:
kwargs.setdefault('label', "Oscillator")
net = nengo.Network(**kwargs)
else:
warnings.warn("The 'net' argument is deprecated.", DeprecationWarning)
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)
net.output = net.ensemble
return net