In [7]:
%matplotlib inline
import numpy as np
import nengo
import nengo.utils.function_space as fs
In [65]:
def gaussian(points, mean, sd):
return np.exp(-(points-mean)**2/(2*sd**2))
n_neurons = 100
domain = fs.uniform_cube(1, d=0.01)
fns = fs.gen_funcs(gaussian, fs.gen_args(n_neurons, nengo.dists.Uniform(-1,1), nengo.dists.Uniform(0.1,0.7)),
domain)
In [29]:
fns.shape
Out[29]:
In [31]:
import pylab
pylab.plot(domain, fns.T)
pylab.show()
In [27]:
obj = fs.SVD_FS(fns, d=0.01, domain_dim=1, n_basis=20)
In [44]:
input_func = fs.sample_comb(gaussian, 4, domain, nengo.dists.Uniform(-1, 1), nengo.dists.Uniform(0.1, 0.1))
In [45]:
pylab.plot(domain, input_func)
Out[45]:
In [48]:
n_eval_points = 2000
eval_points = fs.sample_eval_points(gaussian, obj, n_eval_points, 4, domain,
nengo.dists.Uniform(-1,1), nengo.dists.Uniform(0.1, 0.2))
In [62]:
input_func = fs.sample_comb(gaussian, 4, domain, nengo.dists.Uniform(-1, 1), nengo.dists.Uniform(0.1, 0.1))
signal_coeffs = obj.project(input_func)
print signal_coeffs
In [51]:
print signal_coeffs
In [67]:
model = nengo.Network()
with model:
ens = nengo.Ensemble(n_neurons=n_neurons, dimensions=obj.n_basis,
encoders = obj.encoders(), radius=np.linalg.norm(signal_coeffs),
eval_points=eval_points)
stim = nengo.Node(signal_coeffs)
nengo.Connection(stim, ens)
p = nengo.Probe(ens, synapse=0.1)
In [68]:
sim = nengo.Simulator(model)
sim.run(0.2)
In [70]:
pylab.plot(domain, obj.reconstruct(sim.data[p][-1]))
pylab.plot(domain, input_func)
Out[70]:
In [ ]: