ADC采样--中位值平均滤波

中位值平均滤波

1、方法

  • 采样N个值,去掉最大最小

  • 计算N-2的平均值

  • N= 3~14

2、优缺点

  1. 融合了中位值,平均值的优点

  2. 消除脉冲干扰

  3. 计算速度慢,RAM占用大

3.代码

char filter()

{

char count,i,j;

char Value_buf[N];

int sum=0;

for(count=0;count<N;count++)

Value_buf[count]= get_ad();

for(j=0;j<(N-1);j++)

for(i=0;i<(N-j);i++)

if(Value_buf[i]>Value_buf[i+1])

{

temp = Value_buf[i];

Value_buf[i]= Value_buf[i+1];

Value_buf[i+1]=temp;

}

for(count =1;count<N-1;count++)

sum += Value_buf[count];

return (char)(sum/(N-2));

}

4.移植代码到其他芯片

复制代码
/*******************************************************************************
* Function Name:GetAverADCValue()
* Description  :
* Arguments    : None
* Return Value : None
*******************************************************************************/
void GetAverADCValue(uint16_t *ADCValue)
{
	char count,i,j;
	char Value_buf[SampNum];
	uint16_t temp;
	int sum=0;
	for(count=0;count<SampNum;count++)
	Value_buf[count]= *ADCValue++;
	for(j=0;j<(SampNum-1);j++)
	for(i=0;i<(SampNum-j);i++)
	if(Value_buf[i]>Value_buf[i+1])
	{
		 temp = Value_buf[i];
		 Value_buf[i]= Value_buf[i+1];
		 Value_buf[i+1]=temp;
	}
	for(count =1;count<SampNum-1;count++)
	sum += Value_buf[count];
	return sum/(SampNum-2);
}
相关推荐
程序新视界几秒前
面对AI的飞速发展,我们的职业路径有什么变化?
人工智能·ai编程
Z1Jxxx4 分钟前
删除字符串2
开发语言·c++·算法
极客小云4 分钟前
【手搓神经网络:从零实现三层BP神经网络识别手写数字】
人工智能·深度学习·神经网络
墨北小七4 分钟前
从记忆到创作:LSTM如何赋能智能小说生成
人工智能·rnn·lstm
乾元5 分钟前
现场运维机器人的工程化落地——移动探针采集 + AI 诊断,在真实网络中的实现路径
运维·网络·人工智能·架构·机器人·自动化
踩坑记录5 分钟前
leetcode hot100 15. 三数之和 medium
算法·leetcode·职场和发展
AgentBuilder10 分钟前
768维的谎言:SOTA视觉模型为何输给7个数字?
人工智能·程序员
独自破碎E11 分钟前
【二分法】旋转数组的最小数字
数据结构·算法·排序算法
杭州龙立智能科技15 分钟前
专业的厂内运输车智能化厂家
大数据·人工智能·python
苦藤新鸡15 分钟前
9.找到字符串中所有字母异位词
数据结构·c++·算法·力扣