src/integrator.cpp

00001 #include "integrator.h"
00002 
00003 namespace  DiscreteTimeSystems {
00004 
00005   using namespace std;
00006   
00007   Integrator::Integrator(int n) : Block(), memory(n)
00008   {
00009     OutputPort *op = new OutputPort(1);
00010     InputPort *ip = new InputPort(1);
00011 
00012     _out_ports.push_back(op);
00013     _in_ports.push_back(ip);
00014     
00015     for (int i=0; i<n; ++i) 
00016       memory.push_back(0);
00017   }
00018 
00019   Integrator::~Integrator()
00020   {
00021     OutputPort *op = _out_ports[0];
00022     InputPort *ip = _in_ports[0];
00023     delete op;
00024     delete ip;
00025   }
00026 
00027   void Integrator::updateState()
00028   {
00029     vector<double> vd = _in_ports[0]->getData();
00030 
00031     memory.push_back(vd[0]);
00032 
00033     memory.pop_front();
00034   }
00035 
00036   void Integrator::updateOutput()
00037   {
00038     OutputPort *op = _out_ports[0];
00039 
00040     double data = 0;
00041     for (int i=0; i<memory.size(); ++i) 
00042       data += memory[i];
00043 
00044     data /= memory.size();
00045 
00046     vector<double> v; 
00047     v.push_back(data);
00048 
00049     op->setData(v);
00050   }
00051 
00052 }

Generated on Tue Dec 4 16:12:27 2007 for Project by  doxygen 1.5.1