00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "MathPower.h"
00020
00021 using std::ostringstream;
00022 using namespace Marsyas;
00023
00024 MathPower::MathPower(mrs_string name) : MarSystem("MathPower", name)
00025 {
00027 addControls();
00028 }
00029
00030 MathPower::MathPower(const MathPower& a) : MarSystem(a)
00031 {
00034 ctrl_exponent_ = getctrl("mrs_real/exponent");
00035 }
00036
00037
00038 MathPower::~MathPower()
00039 {
00040 }
00041
00042 MarSystem*
00043 MathPower::clone() const
00044 {
00045 return new MathPower(*this);
00046 }
00047
00048 void
00049 MathPower::addControls()
00050 {
00052
00053 addctrl("mrs_real/exponent", 1.0, ctrl_exponent_);
00054
00055 }
00056
00057 void
00058 MathPower::myUpdate(MarControlPtr sender)
00059 {
00060 MRSDIAG("MathPower.cpp - MathPower:myUpdate");
00061
00063 MarSystem::myUpdate(sender);
00064
00065
00066 mrs_string inObsNames = ctrl_inObsNames_->to<mrs_string>();
00067 ctrl_onObsNames_->setValue(obsNamesAddPrefix(inObsNames,
00068 "MathPower_"), NOUPDATE);
00069
00070 exponent_ = ctrl_exponent_->to<mrs_real>();
00071 }
00072
00073 void
00074 MathPower::myProcess(realvec& in, realvec& out)
00075 {
00076 mrs_natural t,o;
00077
00079 for (o = 0; o < inObservations_; o++)
00080 {
00081 for (t = 0; t < inSamples_; t++)
00082 {
00083 out(o, t) = pow(in(o, t), exponent_);
00084 }
00085 }
00086 }