#include #include "factfir.h" using namespace std; // source vector is void factfir(double b, vector &a, int k, vector &source, vector &dest){ //dest.clear(); for (int slice =0; slice < (int)source.size(); slice++) { float currentval = 0; for (int i=0; i < k ; i++){ currentval += a[i] * source[ (slice - i + source.size()) % source.size() ]; } dest[slice] = currentval / b; } } void sliding_avg(vector &source, vector &dest, unsigned int HalfWidth){ // make local copy of source, in case source and dest are the same deque local; local.insert(local.end(), source.begin(), source.end()); // edge treatment. local.insert(local.begin(), HalfWidth, source[0]); local.insert(local.end(), HalfWidth, source[source.size()-1]); deque::iterator it; dest.clear(); float x; for (it=local.begin()+HalfWidth; it