# How define Ensembles with Non-Zero value?

Hi,
I would like to represent a Quaternion (a 4D variable) with a 4-dimensional ensemble and use it in the subsequent calculations.
The variable which has been represented with this ensemble (A in my codes) is denominator in my calculations and because its value is zero in the first few iterations, a “Zero Division Error” is returned.
How the ensemble’s parameters could be adjusted to return a non-zero variable? This error could be eliminated if the ensemble’s parameters are properly adjusted, but which parameters are they?

A [[ 0. 0. 0. 0. ]
[ 0. 0. 0. 0. ]
[-0.00615827 0.00846977 0.00803852 0.01110903]

[-0.357 0.491 0.466 0.644 ]
[-0.357 0.491 0.466 0.644 ]
[-0.357 0.491 0.466 0.644 ]]

The codes are :

``````import nengo
from nengo.processes import Piecewise
import matplotlib.pyplot as plt
from pyquaternion import Quaternion

q1 = Quaternion(-0.357 ,0.491,0.466, 0.644)
v1=q1.elements

model = nengo.Network()
with model:
ndA = {0:[0,0,0,0], 0.2:v1}

inputA = nengo.Node(Piecewise(ndA))

inputA = nengo.Node(v1)

A = nengo.Ensemble(400, dimensions=4,neuron_type=nengo.Direct())

B =nengo.Ensemble(400, dimensions=4, neuron_type=nengo.Direct())

nengo.Connection(inputA, A)

def inverse(C):

q = Quaternion(a=C, b=C, c=C, d=C)
q_inv=q.inverse
inv= q_inv.elements

return inv

nengo.Connection(A,B, function=inverse)

A_probe = nengo.Probe(A, synapse=0.01)

B_probe = nengo.Probe(B, synapse=0.01)

sim_time = 1
sim = nengo.Simulator(model)
sim.run(sim_time)

plt.figure()
plt.plot(sim.trange(), sim.data[A_probe])
print("A", sim.data[A_probe])

plt.show()
plt.figure()
plt.plot(sim.trange(), sim.data[B_probe])
print("BB", sim.data[B_probe])
plt.show()

``````

You can write whatever code you want inside the `inverse` function, so I would just add an explicit check in there to guard against 0 denominators. Like `if q == 0: q_inv = 0` or something like that, however you want to handle that for your application.