网站建设服务开发,定制网站建设服务商,想学室内设计在哪里学比较好,百度新闻搜索计算均值滤波时#xff0c;需要每次求数组的和#xff0c;再求均值#xff0c;一般先放入一个数组#xff0c;循环移出最后一个旧的值循环移入新的值一般原来的做法/******************************************************************************//*** param[in] data[…计算均值滤波时需要每次求数组的和再求均值一般先放入一个数组循环移出最后一个旧的值循环移入新的值一般原来的做法/******************************************************************************//*** param[in] data[3] 每次处理一组三维的数据每个数据都需要均值滤波* fifo:中间存数据的数组三维数组在使用前定义* len: N个值的均值滤波比如len5,代表5个点取一个均值* output:均值滤波后的数据三维的* idx:均值滤波后的值对应的下标* return*********************************************************************************/void AvgFilter1(float data[3], float fifo[][FILTER_SIZE], int len, float output[][BUF_SIZE], int idx){float sum1, sum2, sum3;uint8_t i;//mexPrintf(%d, data[1]);for (i 1; i len; i){fifo[0][i - 1] fifo[0][i];fifo[1][i - 1] fifo[1][i];fifo[2][i - 1] fifo[2][i];}fifo[0][len - 1] data[0];fifo[1][len - 1] data[1];fifo[2][len - 1] data[2];sum1 0;sum2 0;sum3 0;for (i 0; i len; i){sum1 fifo[0][i];sum2 fifo[1][i];sum3 fifo[2][i];}output[0][idx] (sum1 / len);output[1][idx] (sum2 / len);output[2][idx] (sum3 / len);//mexPrintf(output:\n);if (idx BUF_SIZE){for (i0;i可以修改为新的做法/******************************************************************************//** SIZE: 相当于len, 均值滤波的个数* param[in] deal with data one by one and get the average* data: three axis data* fifo: Cache intermediate data* len: the length of averages data* output: output of averages data* return*********************************************************************************/void AvgFilter(float data[3], float fifo[][SIZE], float output[][BUF_SIZE], int idx){/* filter_buff, FILTER_SIZE */static uint8_t data_index 0;static float sum_x0, sum_y0, sum_z0;float fir_x, fir_y, fir_z;uint8_t fir_pos;/* find the index-9 data */fir_x fifo[0][data_index];fir_y fifo[1][data_index];fir_z fifo[2][data_index];fifo[0][data_index] data[0];fifo[1][data_index] data[1];fifo[2][data_index] data[2];data_index (data_index 1) % SIZE;sum_x data[0];sum_y data[1];sum_z data[2];sum_x - fir_x;sum_y - fir_y;sum_z - fir_z;output[0][idx] (sum_x / SIZE);output[1][idx] (sum_y / SIZE);output[2][idx] (sum_z / SIZE);}这样运算量大大减少将数据存放到一个数组组成的环形buffer中每次取当前index的前一个value[index]在sum和中减去value,再加上新的数据即为当前数组的数据和再求均值。