收藏 分享(赏)

C语言取整+滤波方法.docx

上传人:hyngb9260 文档编号:6356588 上传时间:2019-04-09 格式:DOCX 页数:5 大小:17.39KB
下载 相关 举报
C语言取整+滤波方法.docx_第1页
第1页 / 共5页
C语言取整+滤波方法.docx_第2页
第2页 / 共5页
C语言取整+滤波方法.docx_第3页
第3页 / 共5页
C语言取整+滤波方法.docx_第4页
第4页 / 共5页
C语言取整+滤波方法.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、C 语言有以下几种取整方法: 1、直接赋值给整数变量。如: int i = 2.5; 或 i = (int) 2.5; 这种方法采用的是舍去小数部分,可以用于你的问题。 2、C/C+中的整数除法运算符“/”本身就有取整功能(int / int),而下面介绍的取整函数返回值是 double。整数除法对正数的取整是舍去小数部分,可以用于你的问题。但是整数除法对负数的取整结果和使用的 C 编译器有关。 3、使用 floor 函数。floor(x)返回的是小于或等于 x 的最大整数。如: floor(2.5) = 2 floor(-2.5) = -3 4、使用 ceil 函数。ceil(x)返回的是大

2、于 x 的最小整数。如: ceil(2.5) = 3 ceil(-2.5) = -2 floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2。floor 函数可以用于你的问题。1、限副滤波A、方法:根据经验判断,确定两次采样允许的最大偏差值(设为 A) ,每次检测到新值时判断:如果本次值与上次值之差A, 则本次值无效, 放弃本次值, 用上次值代替本次值 B、优点:能有效克服因偶然因素引起的脉冲干扰。 C 、缺点:无法抑制那种周期性的干扰,平滑度差。 /* A 值可根据实际情况调整value 为有效值, new_value

3、为当前采样值 滤波程序返回有效的实际值 */#define A 10char value;char filter()char new_value;new_value = get_ad();if ( ( new_value - value A ) | ( value - new_value A )return value;return new_value;2、中位值滤波法A、方法:连续采样 N 次(N 取奇数) ,把 N 次采样值按大小排列,取中间值为本次有效值。B、优点:能有效克服因偶然因素引起的波动干扰,对温度、液位的变化缓慢的被测参数有良好的滤波效果。 C 、缺点:对流量、速度等快速变化的

4、参数不宜。 /* N 值可根据实际情况调整排序采用冒泡法*/#define N 11char filter()char value_bufN;char count,i,j,temp;for ( count=0;countvalue_bufi+1 )temp = value_bufi;value_bufi = value_bufi+1; value_bufi+1 = temp;return value_buf(N-1)/2; 3、算术平均滤波法A、方法:连续取 N 个采样值进行算术平均运算。N 值较大时:信号平滑度较高,但灵敏度较低;N 值较小时:信号平滑度较低,但灵敏度较高。N 值的选取:一般

5、流量,N=12;压力:N=4B、优点:适用于对一般具有随机干扰的信号进行滤波,这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动。 C 、缺点:对于测量速度较慢或要求数据计算速度较快的实时控制不适用,比较浪费RAM。#define N 12char filter()int sum = 0;for ( count=0;countvalue_bufi+1 )temp = value_bufi;value_bufi = value_bufi+1; value_bufi+1 = temp;for(count=1;count当前有效值,则计数器+1,并判断计数器是否=上限 N(溢出),如果计数

6、器溢出,则将本次值替换当前有效值,并清计数器 。 B、优点:对于变化缓慢的被测参数有较好的滤波效果,可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动。 C 、缺点:对于快速变化的参数不宜,如果在计数器溢出的那一次采样到的值恰好是干扰值, 则会将干扰值当作有效值导入系统。#define N 12char filter()char count=0;char new_value;new_value = get_ad();while (value !=new_value);count+;if (count=N) return new_value;delay();new_value = get_ad();return value; 10、限幅消抖滤波法A、方法:相当于“限幅滤波法”+“消抖滤波法” 先限幅 ,后消抖。 B、优点: 继承了“限幅”和“消抖”的优点改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统。 C 、缺点:对于快速变化的参数不宜。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报