00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "Mean.h"
00020
00021 using std::ostringstream;
00022 using namespace Marsyas;
00023
00024 Mean::Mean(mrs_string name): MarSystem("Mean", name)
00025 {
00026 }
00027
00028
00029 Mean::~Mean()
00030 {
00031 }
00032
00033
00034 MarSystem*
00035 Mean::clone() const
00036 {
00037 return new Mean(*this);
00038 }
00039
00040 void
00041 Mean::myUpdate(MarControlPtr sender)
00042 {
00043 (void) sender;
00044 MRSDIAG("Mean.cpp - Mean:myUpdate");
00045
00046 ctrl_onSamples_->setValue((mrs_natural)1, NOUPDATE);
00047 ctrl_onObservations_->setValue(ctrl_inObservations_, NOUPDATE);
00048 ctrl_osrate_->setValue(ctrl_israte_, NOUPDATE);
00049
00050
00051 obsrow_.create(ctrl_inSamples_->to<mrs_natural>());
00052
00053
00054
00055 inObservations_ = ctrl_inObservations_->to<mrs_natural>();
00056
00057
00058 mrs_string inObsNames = ctrl_inObsNames_->to<mrs_string>();
00059 ctrl_onObsNames_->setValue(obsNamesAddPrefix(inObsNames, "Mean_"), NOUPDATE);
00060 }
00061
00062 void
00063 Mean::myProcess(realvec& in, realvec& out)
00064 {
00065 mrs_natural t,o;
00066 out.setval(0.0);
00067 for (o=0; o < inObservations_; o++)
00068 {
00069 for (t = 0; t < inSamples_; t++)
00070 {
00071
00072 obsrow_(t) = in(o,t);
00073 }
00074 out(o,0) = obsrow_.mean();
00075 }
00076
00077
00078 }