当然N>=3.而且最好N>3为好.在N很大时就见其优点了.<br />例如: 3中取1,4中取2,5中取3...10中取8...252中取"二百五"~~~<br />全部只用这4个寄存器~~~,当然要考虑累加越界类型选择的问题.<br />注意: N最好取4, 6, 10, 34, 66, 130等等~~~!!!!!!!!!!!!!!<br /><br /><br />/*-----------------------------------------------------------<br />取ADC转换电压<br />------------------------------------------------------------*/<br />AdcResult = ADC & 0x3ff;//取ADC转换电压结果<br />/*-----------------------------------------------------------<br /> 求累加和<br />------------------------------------------------------------*/<br />AdcSum += AdcResult;//存累加和<br />/*-----------------------------------------------------------<br /> 求最大值<br />------------------------------------------------------------*/<br />if (AdcResult > AdcMax)<br />{<br /> AdcMax = AdcResult;//最大值<br />}<br />/*-----------------------------------------------------------<br /> 求最小值<br />------------------------------------------------------------*/<br />if (AdcResult < AdcMin)//注意:千万不敢写成else if ()...<br />{<br /> AdcMin = AdcResult;//存最小值<br />}<br />AdcCount ++;//计数1次<br />/*-----------------------------------------------------------<br /> 10中取8("跳水评分算法---去掉一个最高分,去掉...最后得分...")<br />------------------------------------------------------------*/<br />if (AdcCount >= 10)//每次滤波10点<br />{<br />/*-----------------------------------------------------------<br /> 求平均值<br />------------------------------------------------------------*/<br /> val = AdcSum - AdcMax - AdcMin;//自然做到了N-2,以下除法变移位<br /> val *= AdcGain;//乘增益(一定要先乘后除!!!否则精度丢失!!!)<br /> val >>= 13;//10中取8后除以1024.(直接得到10进制的mV值)<br /> AdcVal = val;//得到跳水队员分数~~~<br />/*-----------------------------------------------------------<br /> 下一轮初始化(也是ADC的初始化,这里原本是调用函数的~~~)<br />------------------------------------------------------------*/<br /> AdcSum = 0;//一定清0<br /> AdcMax = 0;//一定取最小值<br /> AdcMin = 0x3ff;//10位ADC,一定取最大值<br /> AdcCount = 0;//重新开始<br />}<br /><br />哈哈~~~有时间再灌灌它与排序的不同和优缺点~~~<br /><br />滤波曲线见下图~~~<br /> <br /> 相关链接:<a href='http://www.**/blog/hotpower/41054/message.aspx'>http://www.**/blog/hotpower/41054/message.aspx</a>
|