首页 > 编程知识 正文

c语言程序的基本组成部分,C语言程序设计

时间:2023-05-05 13:19:36 阅读:156752 作者:391

计算平均值滤波时,需要求出数组的和,然后求出平均值。 一般来说,首先放入数组,循环使用最后一个旧值循环使用新值

通常的做法

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

//*

每次处理* @param[in] data[3]维的数据集时,都需要对每个数据进行平均过滤

* fifo:中间存储数据的数组三维数组,使用前定义

* len: N个值的平均滤波,例如len=5,表示5个点取平均值

* output:平均滤波后的数据、三维的

* idx:平均值过滤后的值对应的下标

* @return

*

*

********************************。

voidavgfilter1(floatdata[3],float fifo[][FILTER_SIZE],int len,float output[][BUF_SIZE],int idx

{

浮体sum 1、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(I=0; I

可以修改为新的做法

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。

/** SIZE:相当于len、平均过滤的个数

* @ param [ in ] dealwithdataonebyoneandgettheaverage

* data: three axis' data

* FIFO : cacheintermediatedata

* len : thelengthofaverage ' sdata

* output : outputofaverage ' sdata

* @return

*

*

********************************。

voidavgfilter(floatdata[3],float fifo[][SIZE],float output[][BUF_SIZE],int idx ) )。

{

/* filter_buff,FILTER_SIZE */

static uint8_t data_index=0;

static float sum_x=0,sum_y=0,sum_z=0;

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 _ index1) % 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 );

}

这样,运算量大幅减少,将数据存储在由1个数组构成的环形buffer中,每次取现在的index的前一个value[index],从sum中减去value,加入新的数据后成为现在数组的数据和,平均值

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。