from com.cycling74.jitter import *
from org.ejml.simple import *
from org.ejml.ops import *
from java.util import Random
from jarray import zeros
jm = JitterMatrix()
res = JitterMatrix()
@_._matrix
def matrix(mname):
jm.frommatrix(mname)
res.frommatrix(mname)
dim = jm.getDim()
myvector0 = zeros(dim[1], 'd')
myvector1 = zeros(dim[1], 'd')
myvector2 = zeros(dim[1], 'd')
myvector3 = zeros(dim[1], 'd')
base = SimpleMatrix.random(dim[0],dim[1],0,255,Random())
basenorm = base.normF()
simple0 = SimpleMatrix(dim[0],dim[1])
simple1 = SimpleMatrix(dim[0],dim[1])
simple2 = SimpleMatrix(dim[0],dim[1])
simple3 = SimpleMatrix(dim[0],dim[1])
for i in range(0, dim[0]):
jm.copyVectorToArrayPlanar(0, 1, [i,0], myvector0, dim[1], 0)
jm.copyVectorToArrayPlanar(1, 1, [i,0], myvector1, dim[1], 0)
jm.copyVectorToArrayPlanar(2, 1, [i,0], myvector2, dim[1], 0)
jm.copyVectorToArrayPlanar(3, 1, [i,0], myvector3, dim[1], 0)
myrow0 = SimpleMatrix(1,dim[1],1,myvector0)
myrow1 = SimpleMatrix(1,dim[1],1,myvector1)
myrow2 = SimpleMatrix(1,dim[1],1,myvector2)
myrow3 = SimpleMatrix(1,dim[1],1,myvector3)
simple0 = simple0.combine(i,0,myrow0)
simple1 = simple1.combine(i,0,myrow1)
simple2 = simple2.combine(i,0,myrow2)
simple3 = simple3.combine(i,0,myrow3)
base0 = simple0.mult(base)
base1 = simple1.mult(base)
base2 = simple1.mult(base)
base3 = simple3.mult(base)
result0 = base1.divide(basenorm)
result1 = base1.divide(basenorm)
result2 = base2.divide(basenorm)
result3 = base3.divide(basenorm)
for i in range(0, dim[0]):
arrayback0 = result0.extractVector(1,i).getMatrix().getData()
res.copyArrayToVectorPlanar(0, 1, [i,0], arrayback0, dim[1], 0)
arrayback1 = result1.extractVector(1,i).getMatrix().getData()
res.copyArrayToVectorPlanar(1, 1, [i,0], arrayback1, dim[1], 0)
arrayback2 = result2.extractVector(1,i).getMatrix().getData()
res.copyArrayToVectorPlanar(2, 1, [i,0], arrayback2, dim[1], 0)
arrayback3 = result3.extractVector(1,i).getMatrix().getData()
res.copyArrayToVectorPlanar(3, 1, [i,0], arrayback3, dim[1], 0)
_.outlet(0, "jit_matrix", res.getName())
_.outlet(1,"planecount", res.getPlanecount())