⑴ 数字滤波常用方法有几种,维纳、卡尔曼、自适应滤波是非线性滤波方法,线性的有FIR和IIR滤波结构吗
现在滤波方法主要该算是维纳和卡尔曼,自适应滤波中LMS其实就是变系数的维纳滤波,维纳滤波本身也是线性滤波,FIR和IIR是传统的频率域的滤波方式,和维纳卡尔曼这种现代滤波出发点不是一回事儿
⑵ 中学生计算机三级考试内容
计算机三级考试(A)笔试试题
一. 选择题:((1))~(40)题每题1分,(41)~(55)题每题2分,共70分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下面关于微处理器的叙述中,不正确的是:
A)微处理器通常以单片集成电路制成
B)它至少具有运算和控制功能,但不具备存储功能弯中搏
C)Pentium是目前PC机中使用最广泛的一种微处理器
D)Intel公司是国际上研制、生产微处理器最有名的公司
(2)下面关于PC机CPU的叙述中,不正确的是:
A)为了暂存中间结果,CPU中包含几十个甚至上百个寄存器,用来临时存放数据
B)CPU是PC机中不可缺少的组成部分,它担负着运行系统软件和应用软件的任务
C)所有PC机的CPU都具有相同的机器指令
D)CPU至少包含1个处理器,为了提高计算速度,CPU也可以由2个、4个、8个甚至更多个处理器组成
(3)微型计算机主存储器的基本编址单元的长度为:
A)32位 B)l位 C)8位 D)16位
(4)长度相同但格式不同的培散2种浮点数,假设前者阶码长、尾数短,后者阶码短、尾数长,其它规定均相同,则它们可表示的数的范围和精度为:
A)两者可表示的数的范围和精度相同
B)前者可表示的数的范围大但精度低
C)后者可表示的数的范围大且精度高
D)前者可表示的数的范围大且精度高
(5)所谓“变号操作”是指将一个整数变成绝对值相同但符号相反的另一个整数。假设使用补码表示的8位整数X=10010101,则经过变号操作后结果为:
A)01101010 B)00010101
C)11101010 D)01101011
(6)汉字的区位码、国标码和机内码(又称内码)是3个不同的概念,假设某个汉字的区号是30(十进制)、位号是63(十进制),则在PC机中它的内码(十六进制)是:
A)BEDF B)3E5F
C)9EBF D)BOE3
(7)下面关于计算机图形和图像的叙述中,正确的是:
A)图形比图像更适合表现类似子照片和绘画之类的有真实感的画面
B)一般说来图像比图形的数据量要少一些
C)图形比图像更容易编辑、修改
D)图像比图形更有用
(8)分时操作系统的主要特点是:
A)个人独占计算机资源 B)自动控制作业运行
C)高可靠性和安全性 D)多个用户共享计算机资源
(9)下面关于计算机病毒的叙述中,正确的叙述是:
A)计算机病毒有破坏性,它能破坏计算机中的软件和埋祥数据,但不会损害机器的硬件
B)计算机病毒有潜伏性,它可能会长时间潜伏,遇到一定条件才开始进行破坏活动
C)计算机病毒有传染性,它能通过软磁盘和光盘不断扩散,但不会通过网络进行传播
D)它是开发程序时未经彻底测试而附带的一种寄生性的计算机程序,它能在计算机系统中生存和传播
(10)对线性表,在下列哪种情况下应当采用链表表示?
A)经常需要随机地存取元素
B)经常需要进行插入和删除操作
C)表中元素需要占据一片连续的存储空间
D)表中元素的个数不变
(11)字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成多少个不同的字符串?
A)5 B)4 C)6 D)1
(12)设有一个用数组Q〔1..m”表示的环形队列,约定f为当前队头元素在数组中的位置,r为队尾元素的后一位置(按顺时针方向),若队列非空,则计算队列中元素个数的公式应为:
A)r-f B)(m+r-f) mod m
C)(m-r+f)mod m D)(m-r-f) mod m
(13)对数据组R[1..n]中的n个元素进行排序的某一种方法描述如下:
step1:令h=n;
step2:进行h-1次比较,从R[1],R[2],…,R[h]中找出最大的元素R[i](1≤i≤h);
step3:若i≠h,则交换R[i]和R[h]
step4:令h=h-1;
step5:若h=1,则排序完成,否则转向step2。
对上述排序方法,下列选项中不正确的是:
A)排序过程中,元素的交换次数至少为0次
B)排序过程中,元素的交换次数至多为n-1次
C)方法是稳定的
D)方法是不稳走的
(14)对上题中描述的排序方法,下列选项中正确的是:
A)排序过程中,比较的次数与元素的初始排列顺序无关
B)排序过程中,比较的次数与元素的初始排列顺序有关
C)确定数组中最大元素需要比较 次
D)确定数组中最小元素需要比较n-1次
(15)对一个排好序的线性表,用二分法检索表中的元素,被检索的表应当采用哪种存储表示?
A)顺序存储 B)链接存储 C)散列法存储 D)存储表示不受限制
(16)假定中根遍历二叉树的定义如下:若二叉树为非空二叉树,则中根遍历根的右子树;访问根结点;中根遍历根的左子树。按此定义遍历下图所示的二叉树,遍历的结果为:
A)DBEAFHGC A
B)CGHFADBE B C
C)EBDAGHFC E D F
D)FHGCADBE G
H
(17)具有指令流水线结构的CPU,一般情况下指令的执行时间主要取决于:
A)指令执行的步骤 B)CPU有无等待状态
C)CPU的时钟周期 D)CPU内的cache存储器大小
(18)在具有PCI总线的奔腾机中,二级cache存储器经常通过cache控制器挂在
A)ISA总线(AT总线)上 B)CPU局部总线上
C)PCI总线上 D)EISA总线上
(19)作为现行PC机的主要系统总线是:
A)ISA总线(AT总线) B)PCI总线和ISA总线
C)EISA总线 D)PCI总线
(20)CPU通过接口电路向液晶显示器输出数据时, 在接口电路中
A)数据可以直接输出到显示器 B)数据只需经过三态门输出到显示器
C)数据经反相器后输出到显示器 D)数据经锁存后输出到显示器
(21)当并行接口芯片8255A被设定为方式2时,其工作的I/O口
A)仅能作输入口使用
B)仅能作输出口使用
C)既能作输入口、也能作输出口使用
D)仅能作不带控制信号的输入口或输出口使用
(22)某显示器的分辩率为1024*768,表示像素颜色的位宽为16bit,则应配置的显示存储器容量一般为:
A)4MB B)2MB C)1Mb D)8MB
(23)现行PC机中打印机与主机的接口标准大多采用
A)RS-232-C B)Centronics C)IDE D)IEEE-488
(24)在目前流行的大多数奔腾机中,硬盘一般是通过硬盘接口电路连接到:
A)CPU局部总线 B)PCI总线
C)ISA总线(AT总线) D)存储器总线
(25)假设V1和V2是用DW定义的变量,下列指令中正确的是:
A)MOV V1,20H B)MOV V1,V2
C)MOV AL,V1 D)MOV 2000H,V2
(26)在80386以上的微处理器指令系统中,PUSH EAX指令的目的操作数寻扯方式是:
A)立即寻址 B)寄存器寻址
C)寄存器间接寻址 D)存储器直接寻址
(27)下列那条指令不合法?
A)IN AX,0278H B) RCR DX,CL
C)CMPSB D) RET 4
(28)假设AX和BX寄存器中存放的是有符号整数,为了判断AX寄存器中的数据是否大于BX寄存器中的数据,应采用下面哪一种指令序列?
A)SUB AX,BX B)SUB AX,BX C)CMP AX,BX D)CMP AX,BX
JC label JNC label JA label JG 1abel
注:label表示条件转移指令的目标地址
(29)下列指令经汇编后,机器指令代码最长的是:
A)MOV AX,0 B)SUB Ax,AX
C)XOR AX, AX D)MUL BX
(30)为了使MOV AX,vAR指令执行后,AX寄存器中的内容为4142H,下面哪一种数据定义会产生不正确的结果?
A)VAR DW 4142H B)VAR DW 16706
C)VAR DB 42H,41H D)VAR BW,‘AB’
(31)在下列指令中,隐含使用AL寄存器的指令有几条?
SCASB; XLAT; MOVSB; DAA; NOP; MUL BH;
A)1条 B)2条 C)4条 D)5条
(32)根据下面提供的PC机内存中的数据,lNT 11H中断服务程序的人口地址是什么
0000:0040 B3 18 8A CC 4D F8 00 F0--41 F8 00 F0 C5 18 8A CC
0000:0050 39 E7 00 F0 A0 19 8A CC--2E E8 00 F0 D2 EF 00 F0
A)4DF8:00F0 B)F000:F840
C)A019: 8ACC D)CC8A:19A0
(33)若(AX)=0122H,四个标志位CF、SF、ZF、OF的初始状态为0,执行指令
SUB AX,0FFFH后,这四个标志位的状态是:
A)(CF)=0,(SF)= 0,(ZF)= 0, (OF)= 0
B)(CF)=1,(SF)= 1,(zF)= 0, (OF)= 0
C)(CF)=0,(SF)= 0,(ZF)= 1, (OF)= 1
D)(CF)=1,(SF)= 1,(ZF)= 1, (OF)= 1
(34)执行下列三条指令后、A寄寄存器中的内容是多少?
MOV AX,'8'
ADD AL,'9'
AAA
A)0017H B)0077H C)0107H D)0071H
(35)微机化仪表中,若全部采用CMOS逻辑器件,则其噪声容限约为采用TTL逻辑器件时的几倍?
A)5倍 B)3倍 C)2倍 D) 1倍
(36)微机控制系统中的监控定时器也称为:
A)绝对时钟 B)相对时钟
C)82531PIT D)看门狗(watchdog)
(37)数字滤波算法中的程序判断算法也称为:
A)算术平均滤波算法 B)递推平均算法
C)限幅滤波算法 D)中位滤波算法、
(38)过程数字量输入/输出通道中,为抑止因共阻抗耦合所产生的干扰,采取的主要措施是:
A)光电隔离 B)数字滤波 C)模拟滤波 D)接地
(39)计算机网络最突出的优点是:
A)计算精度高 B)内存容量大
c)运算速度快 D)连网的计算机能够相互共享资源
(40)计算机网络分为局域网、城域网与广域网,其划分的依据是:
A)数据传输所使用的介质 B)网络的作用范围
C)网络的控制方式 D)网络的拓扑结构
(41)F=(A+B)(A+C)+B的反函数是:
A)A+B
B)AB
C)A+B
D)A+BC
(42)数字视频的数据量非常大,VCD使用MPEG-1对视频信息进行压缩编码后,每秒钟的数码率大约是:
A)150Kbps B)64Kbs C)10Mbps D)1.2Mbps
(43)在进程运行过程中,一个进程的状态会发生变化,下列哪种变化是不可能发生的?
A)就绪→运行 B)就绪→等待 C)运行→就绪 D)运行→等待
(44)UNIX操作系统区别于WINDOWS95的主要特点是:
A)具有多用户分时功能, B)提供图形用户界面
C)文件系统采用多级目录结构 D)提供字符用户界面
(45)设二叉树根结点的层次为0,一棵深度(高度)为k的满二叉树和同样深度的完全二叉树各有f个结点和c个结点,下列关系式不正确的是:
A)f>=c B)c>f C)f=2k+1-1 D)C>2k-1
(46)用二分法查找一个长度为10的、排好序的线性表,查找不成功时,最多需要比较多少次?
A)5 B)2 C)4 0)1
(47)在现行PC机中,常用存储器地址线中的低10位作输入/输出口地址线。设某接口芯片内部有16个端口,该接口芯片的片选信号由地址译码器产生,则地址译码器的输入地址线一般应为:
A)全部10位地址线 B)其中的高8位地址线
C)其中的高6位地址线 D)其中的高4位地址线
(48)8237DMA本身有16位地址线,每个通道一次可传输64K字节,如定义64KB为1页,并在8237与主机连接的控制电路中增加12位页地址寄存器,其寄存器的12位页地址作为它的高12位地址,此时8237能寻址的内存容量为:
A)32MB B)64MB C)128MB D)256MB
(49)采用SCSI接口时,一块SCSI主接口卡可以连接含有SCSI协议标准控制器的设备为:
A)1个 B)2个 C)7个 D)8个
(50)在一个多主STD总线系统中,使用邮箱通信法,可实现各个多主CPU模板问的信息传送,所谓“邮箱”是指:
A)各CPU芯片内部的RAM B)高速缓冲存储器(cache)
C)各多主CPU模板上的SDRAM D)系统存储器
(51)测控微机主机模板上,采用局部总线技术的作用是:
A)节省系统总线的带宽 B)提高抗干扰能力
C)抑制总线终端反射 D)构成紧耦合系统
(52)测控系统中所采用的高质量的D/A转换器,其非线性误差通常在下列哪个误差范围之内?
A)±2LSB B)±1LSB C)±1/2 LSB D)±1/4 LSB
(53)微机测控系统硬件标准化设计的关键是采用:
A)标准化的CPU B)标准化的数字逻辑器件
C)标准化的模拟电路器件 D)标准化的总线结构及标准通信协议
(54)数据通信中数据传输速率是最重要的性能指标之一,它指单位时间内传送的二进制数据位数,常用的计量单位是:
A)Kb/s B)Byte/s C)MB/s D)KB/s
(55)双绞线由两根相互绝缘的、绞合成匀称的螺纹状的导线组成,下列关于双绞线的叙述中,不正确的是:
A)它的传输速率达10Mb/s~100Mb/s,甚至更高,传输距离可达几十公里甚至更远
B)它既可以用于传输模拟信号,也可以用于传输数字信号
C)与同轴电缆相比,双绞线易受外部电磁波的干扰,线路本身也产生噪声,误码率较高
D)通常只用作局域网通信介质
二. 填空题:(每空2分,共30分)
请将每空的正回答案写在答题卡 1 ~ 15 序号的横线上,答在试卷上不得分,
(1)PC机硬件在逻辑上主要由CPU、主存储器、辅助存储器、输入/输出设备与 1 五类主要部件组成。
(2)下图门电路所输出的逻辑函数F= 2 。
A
B &—
F
B
A
(3)Windows操作系统提供了 3 并行处理能力,它可以使多个应用程序同时运行。
(4)软件测试中,根据程序内部逻辑结构设计测试用例的方法称为 4 法测试。
(5)如果一棵哈夫曼(Huffmam)树共有9个结点,则其中的叶子结点的个数是 5 个。
(6)设森林F由n棵树组成,它的第一棵树,第二棵树,...,第n棵树分别有t1,t2,…,和、tn个结点,则与森林F对应的二叉树中,根结点的左子树有 6 个结点。
(7)CRT显示器上构成图像的最小单元或图像中的一个点称为 7 。
(8)现行24速光驱在读出光盘上存放的软件时,每秒钟传输的数据为 8 KB。
(9)阅读下面的汇编语言程序,填充,使程序能按预定的设计要求正常执行:
DSEG SEGMENT
ARRAY DB 34H, 56H, 23H,70H,96H
CNT DW $-ARRAY
DSEG ENDS
SSEG SEGMENT PARA STACK ‘STACK’
DB 256 DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START: MOV AX.DSEG
MOV DS.AX
MOV SI.OFFSET ARRAY
MOV CX,CNT
CLD
NEXT: LODSD
MOV BL, AL
AND AL, 0F0H
PUSH CX
MOV CL,4
SHR AL,CL
9
OR AL,30H
CALL DISP
MOV AL,BL
AND AL,0FH
OR AL,30H
CALL DISP
DEC CX
JCXZ DONE
MOV AL,‘,’
CALL DISP
JMP NEXT
DONE: MOV AH,4CH ; 终止当前进程,返回调用进程
INT 21H
DlSP: MOv AH, 14 ;写字符到当前光标位置,光标前进一格
INT 10H
RET
CSEG ENDS
END START
(10)在保证第(9)题程序功能不变的情况下,程序中的MOV SI,OFFSET ARRAY指令可以用指令(仅一条) 10 替代。
(11)在第(9)题程序执行结束后,屏幕上显示的内容是 11 。
(12)一个由8位单片机构成的测控装置,采用线性温度传感器构成其测温表计,量程为500 OC~800 OC,设装置获取一温度数据为55(十六进制),则对应的温度值(十进制)为
12 OC。
(13)A/D转换器的量化误差以它的一个单位分辨率量度,则12位A/D转换器的量化误差为 13 。
(14)为了实现计算机系统的互连,ISO开放系统互连参考模型把整个网络的通信功能划分为7个层次,每个层次完成各自的功能,通过各层间的接口和功能的组合与其相邻层连接,从而实现不同系统之间、不同结点之间的信息传输。OSI参考模型中的7个层次从高层到低层分别是:应用层、表示层、会话层、运输层、网络层、 14 和物理层。
(15)计算机网络的发展非常迅速,目前正在向B-ISDN的方向演变。其中B表示 15 。指网络的传输速率非常高,能达到几十或几百Mb/S,甚至达到几十Gb/s;ISDN表示“综合业务”,是指将话音传输、图像传输、数据传输等多种业务综合到一个网络中,这样做成本较低而且适合于传送多媒体信息。
1999年
全国计算机等级考试三级(A)笔试试卷
答案及评分标准
一. 选择题:((1))~(40)题每题1分,(41)~(55)题每题2分,共70分)
1 2 3 4 5 6 7 8 9 10
B C C B D A C D B B
11 12 13 14 15 16 17 18 19 20
A B C A A B C B B D
21 22 23 24 25 26 27 28 29 30
C B B B A C A D A C
31 32 33 34 35 36 37 38 39 40
C B B C B D C A D B
41 42 43 44 45 46 47 48 49 50
B D B A B C C D C D
51 52 53 54 55 56 57 58 59 60
A C D A A
二. 填空题:(每空2分,共30分)
1、总线(或系统总线)
2、AB+AB
3、多任务(或多进程)
4、白盒法(或白箱法)
5、5
6、t1-1
7、像素
8、3600
9、POP CX
10、LEA SI,ARRAY
11、34,56,23,70,96
12、600
13、±1/8192(或±0.0122%FSR或±0.0122%(满量程)),未加±号得1分。
14、数据链路层(或链路层)
15、带宽
⑶ 如何进行软件滤波
1、限幅滤波法(又称程序判断滤波法)
A、方法:
根据经验判断,确定两次采样允许的最大偏差值(设为A),每次检测到新值时判断:
如果本次值与上次值之差<=A,则本次值有效
如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值
B、优点:
能有效克服因偶然因素引起的脉冲干扰
C、缺点
无法抑制那种周期性的干扰
平滑度差
2、中位值滤波法
A、方法:
连续采样N次(N取奇数)
把N次采样值按大小排列
取中间值为本次有效值
B、优点:
能有效克服因偶然因素引起的波动干扰
对温度、液位变化缓慢的被测参数有良好的滤波效果
C、缺点:
对流量、速度等快速变化的参数不宜
3、算术平均滤波法
A、方法:
连续取N个采样值进行算术平均运算
N值较大时:信号平滑度较高,但灵敏度较低
N值较小时:信号平滑度较低,但灵敏度较高
N值的选取:一般流量,N=12;压力:N=4
B、优点:
适用于对一般具有随机干扰的信号进行滤波
这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动
C、缺点:
对于测量速度较慢或要求数据计算速度较快的首坦谨实时控制不适用
比较浪费RAM
4、递推平均滤波法(又称滑动平均滤波法)
A、方者基法:
把连续取得的N个采样值看成一个队列
队列的长度固定为N
每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据.(先进信陪先出原则)
把队列中的N个数据进行算术平均运算,就可获得新的滤波结果
N值的选取:流量,N=12;压力:N=4;液面,N=4~12;温度,N=1~4
B、优点:
对周期性干扰有良好的抑制作用,平滑度高
适用于高频振荡的系统
C、缺点:
灵敏度低
对偶然出现的脉冲性干扰的抑制作用较差
不易消除由于脉冲干扰所引起的采样值偏差
不适用于脉冲干扰比较严重的场合
比较浪费RAM
5、中位值平均滤波法(又称防脉冲干扰平均滤波法)
A、方法:
相当于“中位值滤波法”+“算术平均滤波法”
连续采样N个数据,去掉一个最大值和一个最小值
然后计算N-2个数据的算术平均值
N值的选取:3~14
B、优点:
融合了两种滤波法的优点
对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
C、缺点:
测量速度较慢,和算术平均滤波法一样
比较浪费RAM
⑷ 需要一些c语言写得经典滤波,pid控制,模糊控制的算法。
这个世界没有免费的晚餐,还是多看资料,自己动手吧。 下面资料仅供参考
http://wenku..com/view/8466a429cfc789eb172dc86c.html
http://wenku..com/view/89b366e9e009581b6bd9ebf2.html
http://wenku..com/view/8e9d022f2af90242a895e593.html
http://wenku..com/view/55d3532f7375a417866f8fed.html
http://wenku..com/view/bb24150d76c66137ee0619dc.html
http://wenku..com/view/5b0fbce0524de518964b7ddd.html
http://wenku..com/view/90a2edf49e314332396893d3.html
⑸ 限服滤波特点
限服滤波特点,均值滤波,是图像处理中最常用的手段,从频率域观点来看均值滤波是一种低通滤波器,高频信号将会去掉,因此可以帮助消除图像尖锐噪声,实现图像平滑,模糊等功能。理想的均值滤波是用每个像素和它周围像素计算出来的平均值替换图像中每个像素。采样Kernel数据通常是3X3的矩阵,如下表示。
从左到右从上到下计算图像中的每中敏个像素,最终得到处理后的图像。均值滤波可以加上两个参数,即迭铅衫代次数,Kernel数据大小。一个相同的Kernel,但是多次迭代就会效果越来越好。同样,迭代次数相同,Kernel矩卖激枝阵越大,均值滤波的效果就越明显。
⑹ 什么是限幅滤波
就是AD采样后去掉超过某个幅值的信号
⑺ 滤波在数学上是如何实现的
在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。
采用数字滤波算法克服随机干扰的误差具有以下优点:
1、数字滤波无需其他的硬件成本,只用一个计算过程,可靠性高,不存在阻抗匹配问题。尤其是数字滤波可以对频率很低的信号进行滤波,这是模拟滤波器做不到的。
2、数字滤波使用软件算法实现,多输入通道可共用一个滤波程序,降低系统开支。
3、只要适当改变滤波器的滤波程序或运算,就能方便地改变其滤波特性,这对于滤除低频干扰和随机信号会有较大的效果。
4、在单片机系统中常用的滤波算法有限幅滤波法、中值滤波法、算术平均滤波法、加权平均滤波法、滑动平均滤波等。
(1)限幅滤波算法
该运算的过程中将两次相邻的采样相减,求出其增量,然后将增量的绝对值,与两次采样允许的最大差值A进行比较。A的大小由被测对象的具体情况而定,如果小于或等于允许的最大差值,则本次采样有效;否则取上次采样值作为本次数据的样本。
算法的程序代码如下:
#defineA //允许的最大差值
chardata; //上一次的数据
char filter()
{
chardatanew; //新数据变量
datanew=get_data(); //获得新数据变量
if((datanew-data)>A||(data-datanew>A))
return data;
else
returndatanew;
}
说明:限幅滤波法主要用于处理变化较为缓慢的数据,如温度、物体的位置等。使用时,关键要选取合适的门限制A。通常这可由经验数据获得,必要时可通过实验得到。
(2)中值滤波算法
该运算的过程是对某一参数连续采样N次(N一般为奇数),然后把N次采样的值按从小到大排列,再取中间值作为本次采样值,整个过程实际上是一个序列排序的过程。
算法的程序代码如下:
#define N11 //定义获得的数据个数
char filter()
{
charvalue_buff[N]; //定义存储数据的数组
char count,i,j,temp;
for(count=0;count
{
value_buf[count]=get_data();
delay(); //如果采集数据比较慢,那么就需要延时或中断
}
for(j=0;j
{
for(value_buff[i]>value_buff[i+1]
{
temp=value_buff[i];
value_buff[i]=value_buff[i+1];
value_buff[i+1]=temp;
}
}
returnvalue_buff[(N-1)/2];
}
说明:中值滤波比较适用于去掉由偶然因素引起的波动和采样器不稳定而引起的脉动干扰。若被测量值变化比较慢,采用中值滤波法效果会比较好,但如果数据变化比较快,则不宜采用此方法。
(3)算术平均滤波算法
该算法的基本原理很简单,就是连续取N次采样值后进行算术平均。
算法的程序代码如下:
char filter()
{
int sum=0;
for(count=0;count
{
sum+=get_data();
delay():
}
return (char)(sum/N);
}
说明:算术平均滤波算法适用于对具有随机干扰的信号进行滤波。这种信号的特点是有一个平均值,信号在某一数值附近上下波动。信号的平均平滑程度完全到决于N值。当N较大时,平滑度高,灵敏度低;当N较小时,平滑度低,但灵敏度高。为了方便求平均值,N一般取4、8、16、32之类的2的整数幂,以便在程序中用移位操作来代替除法。
(4)加权平均滤波算法
由于前面所说的“算术平均滤波算法”存在平滑度和灵敏度之间的矛盾。为了协调平滑度和灵敏度之间的关系,可采用加权平均滤波。它的原理是对连续N次采样值分别乘上不同的加权系数之后再求累加,加权系数一般先小后大,以突出后面若干采样的效果,加强系统对参数变化趋势的认识。各个加权系数均小于1的小数,且满足总和等于1的结束条件。这样加权运算之后的累加和即为有效采样值。其中加权平均数字滤波的数学模型是:
式中:D为N个采样值的加权平均值:XN-i为第N-i次采样值;N为采样次数;Ci为加权系数。加权系数Ci体现了各种采样值在平均值中所占的比例。一般来说采样次数越靠后,取的比例越大,这样可增加新采样在平均值中所占的比重。加权平均值滤波法可突出一部分信号抵制另一部分信号,以提高采样值变化的灵敏度。
样例程序代码如下:
char codejq[N]={1,2,3,4,5,6,7,8,9,10,11,12}; //code数组为加权系数表,存在程序存储区
char codesum_jq=1+2+3+4+5+6+7+8+9+10+11+12;
char filter()
{
char count;
char value_buff[N];
int sum=0;
for(count=0;count
{
value_buff[count]=get_data();
delay();
}
for(count=0;count
sum+=value_buff[count]*jq[count];
return(char)(sum/sum_jq);
}
(5)滑动平均滤波算法
以上介绍和各种平均滤波算法有一个共同点,即每获取一个有效采样值必须连续进行若干次采样,当采速度慢时,系统的实时得不到保证。这里介绍的滑动平均滤波算法只采样一次,将一次采样值和过去的若干次采样值一起求平均,得到的有效采样值即可投入使用。如果取N个采样值求平均,存储区中必须开辟N个数据的暂存区。每新采集一个数据便存入暂存区中,同时去掉一个最老数据,保存这N个数据始终是最新更新的数据。采用环型队列结构可以方便地实现这种数据存放方式。
程序代码如下:
char value_buff[N];
char i=0;
char filter()
{
char count;
int sum=0;
value_buff[i++]=get_data();
if(i==N)
i=0;
for(count=0;count
sum=value_buff[count];
return (char)(sum/N);
}
(6)低通滤波
将普通硬件RC低通滤波器的微分方程用差分方程来表求,变可以采用软件算法来模拟硬件滤波的功能,经推导,低通滤波算法如下:
Yn=a* Xn+(1-a) *Yn-1
式中 Xn——本次采样值
Yn-1——上次的滤波输出值;
,a——滤波系数,其值通常远小于1;
Yn——本次滤波的输出值。
由上式可以看出,本次滤波的输出值主要取决于上次滤波的输出值(注意不是上次的采样值,这和加权平均滤波是有本质区别的),本次采样值对滤波输出的贡献是比较小的,但多少有些修正作用,这种算法便模拟了具体有教大惯性的低通滤波器功能。滤波算法的截止频率可用以下式计算:
fL=a/2Pit pi为圆周率3.14…
式中 a——滤波系数;
, t——采样间隔时间;
例如:当t=0.5s(即每秒2次),a=1/32时;
fL=(1/32)/(2*3.14*0.5)=0.01Hz
当目标参数为变化很慢的物理量时,这是很有效的。另外一方面,它不能滤除高于1/2采样频率的干搅信号,本例中采样频率为2Hz,故对1Hz以上的干搅信号应采用其他方式滤除,
低通滤波算法程序于加权平均滤波相似,但加权系数只有两个:a和1-a。为计算方便,a取一整数,1-a用256-a,来代替,计算结果舍去最低字节即可,因为只有两项,a和1-a,均以立即数的形式编入程序中,不另外设表格。虽然采样值为单元字节(8位A/D)。为保证运算精度,滤波输出值用双字节表示,其中一个字节整数,一字节小数,否则有可能因为每次舍去尾数而使输出不会变化。
设Yn-1存放在30H(整数)和31H(小数)两单元中,Yn存放在32H(整数)和33H(小数)中。滤波程序如下:
虽千万里,吾往矣。