在ubuntu下将接受到的数据进行滑动平均滤波。
#include <iostream>
#include <stdlib.h>
#include<ros/ros.h>
#include <vector>
#include <numeric>
using namespace std;
std::vector<float> arrayA;
std::vector<float> arrayB;
int window=20;
int q=arrayB.size();
//滑动平均滤波
int main(int argc, char* argv[]){
ros::init(argc, argv,"lvbo_node");
ros::NodeHandle nh;
ros::Rate r(1);
while(ros::ok()){
int k=arrayA.size();
if(k<window){
arrayA.push_back(1);//传入的电压
}
else{
double sumValue = accumulate(begin(arrayA), end(arrayA), 0.0);
double averageValue = sumValue / arrayA.size();
arrayA.erase(arrayA.begin());
arrayA.push_back(2);//传入的电压
arrayB.push_back(averageValue);
ROS_INFO("%f%d",arrayB.back() ,q);
}
r.sleep();
}
}