00001 00002 #include "AnalogInputNeuron.h" 00003 00004 #include <iostream> 00005 using std::cerr; 00006 using std::endl; 00007 00008 AnalogInputNeuron::AnalogInputNeuron() 00009 { 00010 current = 0; 00011 } 00012 00013 AnalogInputNeuron::AnalogInputNeuron(const vector<double> &values) 00014 { 00015 current = 0; 00016 this->values = values; 00017 } 00018 00019 AnalogInputNeuron::~AnalogInputNeuron() 00020 { 00021 } 00022 00023 void AnalogInputNeuron::setAnalogValues(const vector<double> &values) 00024 { 00025 this->values = values; 00026 } 00027 00028 void AnalogInputNeuron::addAnalogValue(double v) 00029 { 00030 values.push_back(v); 00031 } 00032 00033 const vector<double> & AnalogInputNeuron::getAnalogValues() const 00034 { 00035 return values; 00036 } 00037 00038 double AnalogInputNeuron::getAnalogOutput(analog_port_id_t port) const 00039 { 00040 if (current < port) return 0; 00041 //cerr << "Inputer " << this << " : get analog output port = " << port << " v=" << values[current-port] << endl; 00042 return values[current-port]; 00043 } 00044 00045 00046 int AnalogInputNeuron::advance(AdvanceInfo const &) 00047 { 00048 //cerr << " analog input neuron " << this << " advance " << endl; 00049 if ((unsigned)current >= values.size() - 1 ) 00050 return 0; 00051 00052 current++; 00053 00054 Vm = values[current]; 00055 return 0; 00056 } 00057 00058 int AnalogInputNeuron::reset( double dt ) 00059 { 00060 current = 0; 00061 Vm = values[0]; 00062 return 0; 00063 } 00064 00065 /* int AnalogInputNeuron::getFieldOffset(string fieldname) 00066 { 00067 if (fieldname == "Vm") 00068 return reinterpret_cast<char *>(&this->Vm) - reinterpret_cast<char *>(this); 00069 else { 00070 throw( PCSIM::ConstructionException("AnalogInputNeuron::getFieldOffset", "No field named \'" + fieldname + "\' in class " ) ); 00071 } 00072 } */ 00073 00074 void AnalogInputNeuron::printAnalogValues() const 00075 { 00076 for (unsigned i = 0 ; i < values.size() ; ++i) { 00077 cerr << values[i] << " "; 00078 } 00079 cerr << endl; 00080 00081 } 00082