#include "gtl_math_rms.h" #include "gtl_math.h" namespace gtl { namespace math { rms::rms(gtl::analog_data *data) : analog_value(data) , _squared_sum_value(0.) { _name = "rms"; } void rms::before_copying_data(std::vector::iterator begin, std::vector::iterator end) { _squared_sum_value -= mathFunctions::squared_sum(begin, end); } void rms::after_copying_data(std::vector::iterator begin, std::vector::iterator end) { _squared_sum_value += mathFunctions::squared_sum(begin, end); } void rms::data_changed() { analog_value::data_changed(); if(_data.size() != 0) _value = qSqrt(_squared_sum_value/_data.size()); emit value_changed(); } } }