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 }
1.5.1