00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "normlinker.h"
00021 #include <cmath>
00022
00023 namespace farsa {
00024
00025 NormLinker::NormLinker( Cluster* from, Cluster* to, QString name )
00026 : MatrixLinker(from, to, name), temp( from->numNeurons() ) {
00027 }
00028
00029 NormLinker::NormLinker( ConfigurationParameters& params, QString prefix )
00030 : MatrixLinker( params, prefix ) {
00031
00032 }
00033
00034 NormLinker::~NormLinker() {
00035 }
00036
00037 void NormLinker::update() {
00038
00039 if ( to()->needReset() ) {
00040 to()->resetInputs();
00041 }
00042 const DoubleVector& outs = fromVector();
00043 DoubleVector& ins = toVector();
00044 const DoubleMatrix& mat = matrix();
00045 temp.zeroing();
00046 for( unsigned int j=0; j<cols(); j++ ) {
00047 ins[j] += sqrt( sum( square( subtract( temp, outs, mat.column(j) ) ) ) );
00048 }
00049 return;
00050 }
00051
00052 void NormLinker::save(ConfigurationParameters& params, QString prefix) {
00053 MatrixLinker::save( params, prefix );
00054 params.startObjectParameters( prefix, "NormLinker", this );
00055 }
00056
00057 }