20 #include "../shell/Shell.h"
22 double doCorrel(
RollingMatrix& rm, vector< vector< double >> & kernel )
24 int nr = kernel.size();
25 vector< double > correlVec( nr, 0.0 );
26 for (
int i = 0; i < nr; ++i )
27 rm.
correl( correlVec, kernel[i], i );
28 double seqActivation = 0.0;
29 for (
int i = 0; i < nr; ++i )
30 seqActivation += correlVec[i];
34 void testRollingMatrix2()
39 vector< vector< double > > kernel( nr );
40 for (
int i = 0; i < nr; ++i ) {
41 kernel[i].resize( nr, 0.0 );
43 for (
int j = 0; j < nr; ++j ) {
44 kernel[i][j] = 16 - (i-j)*(i-j);
48 double ret1 = doCorrel( rm, kernel );
50 for (
int i = 0; i < nr; ++i ) {
52 kernel[i].resize( nr, 0.0 );
54 for (
int j = 0; j < nr; ++j ) {
56 kernel[i][j] = 16 - (k-j)*(k-j);
60 double ret2 = doCorrel( rm, kernel );
64 void testRollingMatrix()
71 for (
int i = 0; i < nr; ++i ) {
74 for (
int i = 0; i < nr; ++i ) {
75 for (
int j = 0; j < ncol; ++j ) {
76 assert( rm.
get( i, j ) == ( i == j ) * (i+1) );
83 for (
int i = 0; i < nr; ++i ) {
84 for (
int j = 0; j < ncol; ++j ) {
86 assert( rm.
get( i, j ) == ( i == j+1 ) * i );
97 vector< double > input( 10, 0.0 );
98 for (
int i = 0; i < nr; ++i )
114 vector< double > corr;
115 rm.
correl( corr, input, 4 );
120 assert(
doubleEq( corr[4], 20.0 ) );
121 assert(
doubleEq( corr[5], 16.0 ) );
122 assert(
doubleEq( corr[6], 12.0 ) );
127 corr.assign( corr.size(), 0 );
128 rm.
correl( corr, input, 0 );
131 assert(
doubleEq( corr[2], 14.0 ) );
132 assert(
doubleEq( corr[3], 26.0 ) );
133 assert(
doubleEq( corr[4], 40.0 ) );
134 assert(
doubleEq( corr[5], 55.0 ) );
135 assert(
doubleEq( corr[6], 40.0 ) );
136 assert(
doubleEq( corr[7], 26.0 ) );
137 assert(
doubleEq( corr[8], 14.0 ) );
140 cout <<
"." << flush;
144 void testSeqSynapse()
161 assert( ret.size() ==
static_cast< unsigned int > (5 * kernelWidth ) );
162 vector< double >::iterator k = ret.begin();
163 for (
int t = 0; t < 5; ++t ) {
164 for (
int x = 0; x < kernelWidth; ++x ) {
165 double val = (x == t)*5 + ((x+1)==t || (x-1)==t) * 2 - 1;
170 cout <<
"." << flush;
174 for (
int i = 0; i < numSyn; ++i ) {
180 Eref sheller(
Id().eref() );
181 Shell* shell =
reinterpret_cast< Shell*
>( sheller.data() );
182 Id sid = shell->
doCreate(
"SeqSynHandler",
Id(),
"sid", 1 );
191 for (
int i = 2; i < numSyn-2; ++i )
198 cout <<
"." << flush;
202 #endif // DO_UNIT_TESTS
209 testRollingMatrix2();
211 #endif // DO_UNIT_TESTS
vector< double > getKernel() const
void resize(unsigned int numRows, unsigned int numColumns)
double dotProduct(const vector< double > &input, unsigned int row, unsigned int startColumn) const
void sumIntoRow(const vector< double > &input, unsigned int row)
Element * element() const
Synonym for Id::operator()()
vector< double > getWeightScaleVec() const
void setPlasticityScale(double v)
void vProcess(const Eref &e, ProcPtr p)
void addSpike(unsigned int index, double time, double weight)
void setKernelEquation(string eq)
Id doCreate(string type, ObjId parent, string name, unsigned int numData, NodePolicy nodePolicy=MooseBlockBalance, unsigned int preferredNode=1)
void zeroOutRow(unsigned int row)
void setKernelWidth(unsigned int v)
bool doubleEq(double x, double y)
void testSynapseProcess()
void vSetNumSynapses(unsigned int num)
double getSeqActivation() const
void sumIntoEntry(double input, unsigned int row, unsigned int column)
void correl(vector< double > &ret, const vector< double > &input, unsigned int row) const
unsigned int vGetNumSynapses() const
void setBaseScale(double v)
void setHistoryTime(double v)
double get(unsigned int row, unsigned int column) const
const string & getName() const
void setSequenceScale(double v)