Matlab/Simulink 自动代码生成 基于模型设计学习教程(10)---- IIR滤波器仿真设计及代码实现

双击左边的Speed.mat,然后就可以看到工作区出现一个变量

Matlab/Simulink 自动代码生成 基于模型设计学习教程(10)---- IIR滤波器仿真设计及代码实现

新建一个仿真模型,模块的配置如下:

                                   Matlab/Simulink 自动代码生成 基于模型设计学习教程(10)---- IIR滤波器仿真设计及代码实现

                                                                Matlab/Simulink 自动代码生成 基于模型设计学习教程(10)---- IIR滤波器仿真设计及代码实现

 

运行一下,模型我们就可以看到之前我们保存的数据了

                        Matlab/Simulink 自动代码生成 基于模型设计学习教程(10)---- IIR滤波器仿真设计及代码实现

 

 

下面我们来设计一个一阶IIR滤波器:

                                                          Output(t) = a . Output(t-1) + b . Input(t)    

                                                                       Ouput(t-1) = 0 at t=0

具体模型如下:最关键的参数就是a和b,调整这两个参数得到我们想要的滤波效果

                      Matlab/Simulink 自动代码生成 基于模型设计学习教程(10)---- IIR滤波器仿真设计及代码实现

 

为了是他能够适应不同的数据类型,我们来给他做个简单的乘法:先成1000,经过滤波后再除以1000,也就保留三个小数点;

                            Matlab/Simulink 自动代码生成 基于模型设计学习教程(10)---- IIR滤波器仿真设计及代码实现

 

最后模型如下:

                          Matlab/Simulink 自动代码生成 基于模型设计学习教程(10)---- IIR滤波器仿真设计及代码实现

 

我们来运行一下模型:

              Matlab/Simulink 自动代码生成 基于模型设计学习教程(10)---- IIR滤波器仿真设计及代码实现

我们来看一下,数据的波形已经非常明显的降低了

 

我们再来单独放大分析经过滤波后的数据:数据经过0.5秒后达到一个平稳值,最后数据的跳动量4左右,可以说滤波的效果是非常好的了

           Matlab/Simulink 自动代码生成 基于模型设计学习教程(10)---- IIR滤波器仿真设计及代码实现

在代码实现上面,我们在上个编码器测速实验的基础上进行:

         Matlab/Simulink 自动代码生成 基于模型设计学习教程(10)---- IIR滤波器仿真设计及代码实现

 

具体结果我们留在后面跟自适应滤波器一起分析