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);
}
相关推荐
洛水水11 小时前
【力扣100题】18.随机链表的复制
算法·leetcode·链表
Raink老师11 小时前
【AI面试临阵磨枪-48】GraphRAG、多模态 RAG、自适应 RAG 原理
人工智能·ai 面试题
波动几何11 小时前
模式驱动的学术选题方法论——四种AI模式处理能力的系统建构与论证
人工智能
南宫萧幕12 小时前
规则基 EMS 仿真实战:SOC 区间划分与 Simulink 闭环建模全解
算法·matlab·控制
飞哥数智坊12 小时前
我为我的龙虾斩分身:OpenClaw 多智能体实操
人工智能·agent
七牛开发者12 小时前
HTML is the new Markdown:来自 Claude Code 团队的实践
前端·人工智能·语言模型·html
飞哥数智坊12 小时前
在二线城市做AI社群,我的五一节后到底有多疯狂?
人工智能
多加点辣也没关系12 小时前
数据结构与算法|第二十三章:高级数据结构
数据结构·算法
视***间12 小时前
智启边缘,魔盒藏锋——视程空间Pandora系列魔盒,解锁边缘计算普惠新范式
人工智能·区块链·边缘计算·ai算力·视程空间
蛐蛐蛐12 小时前
昇腾910B4上安装新版本CANN的正确流程
人工智能·python·昇腾