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开发需要学习哪些东西?
前端·人工智能·学习
长安er17 分钟前
LeetCode876/141/142/143 快慢指针应用:链表中间 / 环形 / 重排问题
数据结构·算法·leetcode·链表·双指针·环形链表
灵途科技17 分钟前
灵途科技当选中国电子商会智能传感器专委会副理事长单位
大数据·人工智能·科技
非著名架构师18 分钟前
“低空经济”的隐形护航者:AI驱动的秒级风场探测如何保障无人机物流与城市空管安全?
人工智能·数据分析·疾风气象大模型·高精度天气预报数据·galeweather.cn·高精度气象
Aaron158822 分钟前
电子战侦察干扰技术在反无人机领域的技术浅析
算法·fpga开发·硬件架构·硬件工程·无人机·基带工程
洁洁!33 分钟前
openEuler在WSL2中的GPU加速AI训练实战指南
人工智能·数据挖掘·数据分析
桂花饼35 分钟前
字节Seedream-4.5架构揭秘:当AI开始拥有“版式推理”能力,CISAN与DLE引擎如何重构多图生成?
人工智能·aigc·idea·sora2 api·gemini 3 pro·claude opus 4.5·doubao-seedream
zhglhy42 分钟前
Jaccard相似度算法原理及Java实现
java·开发语言·算法
whaosoft-14343 分钟前
51c视觉~合集55
人工智能
AI营销快线1 小时前
2025年AI营销内容生产革命:成本减半,效率倍增的关键
人工智能