当前位置: 首页 > news >正文

培训机构网站制作网站登记模板

培训机构网站制作,网站登记模板,艺术签名设计免费版,晋中企业网站建设一、功能概述 本示例实现两个滤波器: 中值滤波器(Median Filter):对短期异常值(如尖峰噪声)有良好的抑制能力;低通滤波器(Low-Pass Filter):对数据进行平滑…

一、功能概述

本示例实现两个滤波器:

  • 中值滤波器(Median Filter):对短期异常值(如尖峰噪声)有良好的抑制能力;
  • 低通滤波器(Low-Pass Filter):对数据进行平滑处理,适合去除高频抖动。

适用于如 ADC传感器数据处理、电子秤、电流电压读取等场景


二、代码结构说明

✅ 头文件 filter.h

#ifndef FILTER_H
#define FILTER_H#define WINDOW_SIZE 50typedef struct {int buffer[WINDOW_SIZE]; // 数据缓冲区int index;               // 当前写入索引(环形)int count;               // 当前已存数据个数
} MedianFilter;extern MedianFilter myMedianFilter;void medianInit(MedianFilter* filter);
int  medianFilter(MedianFilter* filter, int new_value);
int  lowPassFilter(int input);#endif

✅ 源文件 filter.c

🔹 中值滤波器实现
#include "filter.h"
#include <stdlib.h>// 冒泡排序用于求中值(可替换为更高效算法)
static void sort_array(int* src, int* dst, int size) {for (int i = 0; i < size; i++) dst[i] = src[i];for (int i = 0; i < size - 1; i++) {for (int j = i + 1; j < size; j++) {if (dst[i] > dst[j]) {int temp = dst[i];dst[i] = dst[j];dst[j] = temp;}}}
}// 初始化滤波器状态
void medianInit(MedianFilter* filter) {for (int i = 0; i < WINDOW_SIZE; i++)filter->buffer[i] = 0;filter->index = 0;filter->count = 0;
}// 中值滤波主函数
int medianFilter(MedianFilter* filter, int new_value) {filter->buffer[filter->index] = new_value;filter->index = (filter->index + 1) % WINDOW_SIZE;if (filter->count < WINDOW_SIZE)filter->count++;int sorted[WINDOW_SIZE];sort_array(filter->buffer, sorted, filter->count);if (filter->count % 2 == 1)return sorted[filter->count / 2];elsereturn (sorted[filter->count / 2 - 1] + sorted[filter->count / 2]) / 2;
}
🔹 低通滤波器实现
int lowPassFilter(int input) {static int prev_output = 0;uint8_t alpha_shift = 3;  // α = 1/8,越大越平滑prev_output = prev_output + ((input - prev_output) >> alpha_shift);return prev_output;
}

✅ 主函数测试示例

#include <stdio.h>
#include "filter.h"MedianFilter myMedianFilter;int mainTest() {medianInit(&myMedianFilter);int data[] = {100, 102, 98, 500, 101, 99, 97, 103};int len = sizeof(data) / sizeof(data[0]);for (int i = 0; i < len; i++) {int medFiltered = medianFilter(&myMedianFilter, data[i]);int lpFiltered = lowPassFilter(data[i]);printf("Raw: %d\tMedian: %d\tLowPass: %d\n", data[i], medFiltered, lpFiltered);}return 0;
}

三、使用说明

  • 可移植至 STM32 项目,适合 ADC 滤波等场景;
  • 中值滤波适合抗冲击干扰,低通滤波适合抑制小幅高频抖动;
  • WINDOW_SIZE 可根据实际采样频率和响应速度调整;
  • 建议中值窗口不宜过大,推荐 5~51 范围内奇数;
  • 实际效果图:
    在这里插入图片描述
http://www.yayakq.cn/news/699812/

相关文章:

  • 电商网站开发的难点在哪里台州关键词排名优化
  • 盱眙县住房和城乡建设局网站推广app佣金平台正规
  • 网站平台建设工作总结微信小程序开发app
  • 上海企业响应式网站建设推荐盐城网站app建设
  • 网站开发兼职网站承接网络推广外包业务
  • 做兼职推荐网站怎么在网站添加链接
  • 建设的网站太卡深圳牌申请网站空间
  • 郑州高端网站制作搞定设计官网
  • 成都网站建设众成联邦网站广告推广怎么做的
  • 学习做网页的网站中国那个公司的网站做的最好
  • 有建设网站的公司吗wordpress文章怎么输出
  • 网站的二级栏目怎么做北京互联网网站建设
  • wordpress 直播网站吗施工企业会计分录大全
  • 网站制作涉及的法律南京 百度 网站建设
  • 国内如何做国外网站的兼职项目贵金属交易平台
  • 电商网站设计公司力荐亿企邦相册网站开发
  • 丹江口网站开发网站设计遵循的原则
  • 专业网站建设广州wordpress 咨询插件
  • 外贸网站建设是什么网站哪个公司做的
  • 建站系统哪个比较好wordpress 交流
  • 招标网站建设招标方案可做分析图的地图网站
  • 网站界面用什么软件做关于做面包的网站
  • 雅安北京网站建设付费设计网站
  • 做网站建多大的画布湖南住房城乡建设厅网站
  • 集团网站下分网站 模板套别人的网站模板吗
  • 网站平台策划方案上海劳务派遣公司
  • 国外做问卷赚购物券等的网站织梦影视网站源码
  • 同一人做多个主体网站负责人免扣连线矢量图
  • 小贷做网站excel表如何做网站连接
  • 做网站的域名怎么申请意大利做包招工的网站