10种简单的数字滤波算法(C语言源程序)

 2024-02-01 01:05:02  阅读 0

假设从8位AD读取数据(如果是高位AD,数据类型可定义为int),子程序为();

1. 子限制过滤

/* 可以根据实际情况调整一个值

value为有效值,为当前采样值

过滤例程返回有效的实际值*/

# 10

字符值;

字符()

字符;

= ();

if ( ( - 值 > A ) || ( 值 - > A )

价值;

;

2、中值滤波法

/* N值可以根据实际情况调整

使用冒泡法排序*/

#N 11

字符()

字符[N];

字符数,i,j,temp;

对于(计数=0;计数{

[计数] = ();

延迟();

对于 (j=0;j {

对于 (i=0;i {

如果 ([i]>[i+1] )

温度=[i];

[i] = [i+1];

数字滤波器课设_c语言数字滤波器设计_数字滤波器c语言

[i+1] = 温度;

[(N-1)/2];

3、算术平均滤波法

/*

*/

#N12

字符()

整数总和=0;

对于(计数=0;计数{

总和 + = ();

延迟();

(字符)(总和/N);

4、递归平均滤波法(也称滑动平均滤波法)

/*

*/

#N12

字符[N];

字符 i = 0;

字符()

字符数;

整数总和=0;

[i++] = ();

如果 ( i == N ) i = 0;

for (计数=0;计数总和=[计数];

(字符)(总和/N);

5、中值平均滤波法(又称抗脉冲干扰平均滤波法)

/*

*/

c语言数字滤波器设计_数字滤波器课设_数字滤波器c语言

#N12

字符()

字符数,i,j;

字符[N];

整数总和=0;

对于(计数=0;计数{

[计数] = ();

延迟();

对于 (j=0;j {

对于 (i=0;i {

如果 ([i]>[i+1] )

温度=[i];

[i] = [i+1];

[i+1] = 温度;

for(count=1;计数总和+=值[计数];

(字符)(总和/(N-2));

6、极限平均滤波法

/*

*/

请参考子程序1和3。

7. 一阶滞后滤波方法

/* 为了加快程序处理速度,假设底数为100,a=0~100 */

# 50

字符值;

字符()

字符;

= ();

(100-a)*值+a*;

数字滤波器c语言_数字滤波器课设_c语言数字滤波器设计

8.加权递归平均滤波方法

/* coe数组是加权系数表,存在于程序存储区中。 */

#N12

字符代码 coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};

字符代码 = 1+2+3+4+5+6+7+8+9+10+11+12;

字符()

字符数;

字符[N];

整数总和=0;

对于(计数=0,计数{

[计数] = ();

延迟();

for (count=0,count sum += [count]*coe[count];

(字符)(总和/);

9. 防跳过滤法

#N12

字符()

字符数=0;

字符;

= ();

而(值!=);

计数++;

如果(计数>=N);

延迟();

= ();

价值;

10. 限制去抖滤波方法

/*

*/

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码