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);
}
相关推荐
ar01234 小时前
AR远程协助作用
人工智能·ar
一匹电信狗4 小时前
【LeetCode_547_990】并查集的应用——省份数量 + 等式方程的可满足性
c++·算法·leetcode·职场和发展·stl
北京青翼科技4 小时前
PCIe接口-高速模拟采集—高性能计算卡-青翼科技高品质军工级数据采集板-打造专业工业核心板
图像处理·人工智能·fpga开发·信号处理·智能硬件
软件聚导航4 小时前
马年、我用AI写了个“打工了马” 小程序
人工智能·ui·微信小程序
鱼跃鹰飞5 小时前
Leetcode会员尊享100题:270.最接近的二叉树值
数据结构·算法·leetcode
陈天伟教授5 小时前
人工智能应用-机器听觉:7. 统计合成法
人工智能·语音识别
梵刹古音5 小时前
【C语言】 函数基础与定义
c语言·开发语言·算法
笨蛋不要掉眼泪6 小时前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
昨夜见军贴06166 小时前
IACheck AI审核技术赋能消费认证:为智能宠物喂食器TELEC报告构筑智能合规防线
人工智能·宠物
DisonTangor6 小时前
阿里开源语音识别模型——Qwen3-ASR
人工智能·开源·语音识别