20 #ifndef _SIGNAL_MANIPULATION_H_
21 #define _SIGNAL_MANIPULATION_H_
23 #include "mbsimControl/signal_.h"
24 #include <mbsim/functions/function.h>
26 namespace MBSimControl {
35 void initializeUsingXML(xercesc::DOMElement *element);
36 void init(InitStage stage);
37 void addSignal(
Signal * signal,
double factor=1.);
38 fmatvec::VecV getSignal();
40 std::vector<Signal *> signals;
41 std::vector<double> factors;
42 std::vector<std::string> signalString;
43 std::vector<double> factorsTmp;
52 SignalOffset(
const std::string &name=
"") :
Signal(name), signal(0), offset(0, fmatvec::NONINIT), signalString(
"") {}
53 void initializeUsingXML(xercesc::DOMElement *element);
54 void init(InitStage stage);
55 void setSignal(
Signal * s) {signal=s; }
56 void setOffset(fmatvec::VecV o) {offset=o; }
57 fmatvec::VecV getSignal();
61 std::string signalString;
71 void initializeUsingXML(xercesc::DOMElement *element);
72 void init(InitStage stage);
73 void addSignal(
Signal * signal,
double exp);
74 fmatvec::VecV getSignal();
76 std::vector<Signal *> signals;
77 std::vector<double> exponents;
78 std::vector<std::string> signalString;
79 std::vector<double> exponentsTmp;
90 void initializeUsingXML(xercesc::DOMElement *element);
91 void init(InitStage stage);
92 void addSignal(
Signal * signal) {signals.push_back(signal); }
93 fmatvec::VecV getSignal();
95 std::vector<Signal *> signals;
96 std::vector<std::string> signalString;
107 void initializeUsingXML(xercesc::DOMElement *element);
108 void init(InitStage stage);
109 void addSignal(
Signal * signal, fmatvec::VecInt index) {signals.push_back(signal); indizes.push_back(index); }
110 fmatvec::VecV getSignal();
112 std::vector<Signal *> signals;
113 std::vector<fmatvec::VecInt > indizes;
114 std::vector<fmatvec::Vec> indizesTmp;
115 std::vector<std::string> signalString;
126 SignalLimitation(
const std::string &name=
"") :
Signal(name), s(NULL), minValue(), maxValue(), signalString(
"") {}
127 void initializeUsingXML(xercesc::DOMElement *element);
128 void init(InitStage stage);
129 void setMinimalValue(fmatvec::VecV minValue_) {minValue=minValue_; }
130 void setMaximalValue(fmatvec::VecV maxValue_) {maxValue=maxValue_; }
131 void setSignal(
Signal * signal_) {s=signal_; }
132 fmatvec::VecV getSignal();
135 fmatvec::VecV minValue, maxValue;
136 std::string signalString;
147 void initializeUsingXML(xercesc::DOMElement *element);
148 void init(InitStage stage);
149 void setSignal(
Signal * signal_) {s=signal_; }
150 void updateg(
double t);
151 fmatvec::VecV getSignal();
156 std::string signalString;
166 SignalOperation(
const std::string &name=
"") :
Signal(name), s(NULL), s2(NULL), signalString(
""), signal2String(
""), op(0), s2values(0, fmatvec::NONINIT) {}
167 void initializeUsingXML(xercesc::DOMElement *element);
168 void init(InitStage stage);
169 void setSignal(
Signal * signal_) {s=signal_; }
170 void setSecondSignal(
Signal * signal_) {s2=signal_; }
171 void setSecondSignalValues(fmatvec::VecV s2_) {s2values=s2_; }
172 void setOperator(
unsigned int op_) {op=op_; };
173 fmatvec::VecV getSignal();
177 std::string signalString;
178 std::string signal2String;
180 fmatvec::VecV s2values;
190 SpecialSignalOperation(
const std::string &name=
"") :
Signal(name), s(NULL), s2(NULL), signalString(
""), signal2String(
""), op(0), s2values(0, fmatvec::NONINIT) {}
191 void initializeUsingXML(xercesc::DOMElement *element);
192 void init(InitStage stage);
193 void setSignal(
Signal * signal_) {s=signal_; }
194 void setSecondSignal(
Signal * signal_) {s2=signal_; }
195 void setSecondSignalValues(fmatvec::VecV s2_) {s2values=s2_; }
196 void setOperator(
unsigned int op_) {op=op_; };
197 fmatvec::VecV getSignal();
201 std::string signalString;
202 std::string signal2String;
204 fmatvec::VecV s2values;
215 void initializeUsingXML(xercesc::DOMElement * element);
217 void calcxSize() {xSize=getSignalMethod==&PIDController::getSignalPD?0:1;}
219 void init(InitStage stage);
221 void updatedx(
double t,
double dt);
222 void updatexd(
double t);
224 void plot(
double t,
double dt);
226 void setPID(
double P_,
double I_,
double D_);
227 void setInputSignal(
Signal *inputSignal_) {s=inputSignal_; }
228 void setDerivativeOfInputSignal(
Signal *inputSignal_) {sd=inputSignal_; }
230 fmatvec::VecV getSignal();
235 std::string sString, sdString;
237 fmatvec::VecV getSignalPD();
238 fmatvec::VecV getSignalPID();
248 void initializeUsingXML(xercesc::DOMElement *element);
249 void init(InitStage stage);
250 void setSignal(
Signal *signal_) {s=signal_; }
251 void setFunction(MBSim::Function<fmatvec::VecV(fmatvec::VecV)> *f_) {
254 f->setName(
"Function");
256 fmatvec::VecV getSignal();
259 std::string signalString;
260 MBSim::Function<fmatvec::VecV(fmatvec::VecV)> *f;
269 BinarySignalOperation(
const std::string &name=
"") :
Signal(name), s1(NULL), s2(NULL), signal1String(
""), signal2String(
""), f(0) {}
270 void initializeUsingXML(xercesc::DOMElement *element);
271 void init(InitStage stage);
272 void setSignal1(
Signal *signal_) {s1=signal_; }
273 void setSignal2(
Signal *signal_) {s2=signal_; }
274 void setFunction(MBSim::Function<fmatvec::VecV(fmatvec::VecV,fmatvec::VecV)> *f_) {
277 f->setName(
"Function");
279 fmatvec::VecV getSignal();
282 std::string signal1String, signal2String;
283 MBSim::Function<fmatvec::VecV(fmatvec::VecV,fmatvec::VecV)> *f;
SignalTimeDiscretization.
Definition: signal_manipulation.h:144
SignalAddition.
Definition: signal_manipulation.h:32
SignalMux.
Definition: signal_manipulation.h:87
BinarySignalOperation.
Definition: signal_manipulation.h:267
SignalOperation according <cmath>
Definition: signal_manipulation.h:164
Signal.
Definition: signal_.h:37
SignalLimitation.
Definition: signal_manipulation.h:124
SpecialSignalOperation with advanced functionality.
Definition: signal_manipulation.h:188
UnarySignalOperation.
Definition: signal_manipulation.h:245
SignalMultiplication.
Definition: signal_manipulation.h:68
SignalDemux.
Definition: signal_manipulation.h:104
SignalOffset.
Definition: signal_manipulation.h:50
PID controller.
Definition: signal_manipulation.h:211