/* * compute mat*vct' where vct' is a vector with one additional element * (1.0) at the beginning of vct. */ bool MLP::biasMultiply(const dmatrix& mat, const dvector& vct, dvector& res) const { int j; dmatrix::const_iterator it,eit; dvector::iterator rit; dvector::const_iterator vit,evit; res.resize(mat.rows(),0.0,false,false); it = mat.begin(); eit = mat.end(); rit = res.begin(); evit = vct.end(); for (j=0;j<mat.rows();++j,++rit) { *rit = *it; ++it; for (vit=vct.begin();vit!=evit;++it,++vit) { *rit += (*vit)*(*it); } } return true; }
inline void ROC(int window,dvector &input,dvector &output) { functors::ROC<double> _roc(window); output.reserve(input.size()); std::transform( input.begin(), input.end(), output.begin(), _roc); }
inline void MOMENTUM(int window,dvector &input,dvector &output) { functors::MOMENTUM<double> _momentum(window); output.reserve(input.size()); std::transform( input.begin(), input.end(), output.begin(), _momentum); }
inline void MAX(int window,dvector &input, dvector &output) { functors::MAX<double> _max(window); output.reserve(input.size()); std::transform( input.begin(), input.end(), output.begin(), _max); }
inline void SUBTRACT(dvector &input1, dvector &input2, dvector &output) {//1 - 2 functors::SUBTRACT<double> _subtract; output.reserve(input1.size()); std::transform(input1.begin(), input1.end(),input2.begin(),output.begin(), _subtract); }
inline void EMA(int window,dvector &input, dvector &output) { functors::EMA<double> _ema(window); output.reserve(input.size()); std::transform( input.begin(), input.end(), output.begin(), _ema); }