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