本文采用的matlab版本为R2008a,芯片采用stm32f103v。
先回顾一下数字信号处理和IIR滤波器的相关知识。
数字信号处理是用数字序列来研究系统的一门技术,不同于模拟信号,数字信号处理起来更加灵活,不仅可以处理一维信号,还可以处理二维、三维以上的信号。这门技术应用非常广泛,如生物医学、声学、雷达、语音通信、数据通信等都采用了数字信号处理技术。
在数字信号处理技术中经常用的一种算法叫IIR滤波器,这种滤波器可以设计成带通、低通和高通滤波,在设计原型上有butterworth函数、chebyshev函数、bessel函数、椭圆滤波器函数。IIR数字滤波器是一种递归型线形时不变因果系统,其差分方程可以写成
式中x表示输入系列,y表示输出序列。通过z变换,可以得到传递函数
由差分方程可以直接得到下面的信号流图
以上这种形式叫做直接形式I,对应matlab中IIR滤波器结构选项的Direct-Form I,SOS。注:matlab中在命令行输入FDAtool可以打开滤波器设计GUI界面,在Edit菜单栏选项下有“Convert Structure...”选项,点击后可以选择滤波器结构。我们假设设计一个直接I型的1阶滤波,首先选择滤波器结构第一项”Direct-Form I,SOS”,然后将模型实现,点击”Relize Model“,大家又没有发现这个结构和上图的流程图很相似,只要把流程图改为1阶,那么和下面这个图就是一样的了。
<