利用MATLAB生成软件二阶低通滤波器(绝对靠谱) 利用MATLAB生成软件二阶低通滤波器 `================================================= 嵌入式的软件滤波中,除了均值和限幅,我们常用的也就是一阶或者二阶,这些都是可以通过c语言代码来实现的。其过程包括分母A和分子B参数的求取,再者通过公式得出想要的输出结果。 文章目录 利用MATLAB生成软件二阶低通滤波器一、一阶巴特沃斯低通滤波器设计二、 二阶巴特沃斯低通滤波器设计三、IIR滤波器的差分方程总结 一、一阶巴特沃斯低通滤波器设计 第一步:其参数A和B的求取可以通过Matlab的滤波器工具箱 来获得(因为这个c语言代码还不知道怎么写出来),打开Matlab软件,依次Start(在Matlab界面的左下角)->Toolboxes->Filter Design->Filter Design & Analysis Tool (fdatool),打开的界面如下:
可以针对自己想要的滤波器,这里都可以进行设置,得到相应的参数,本人需要一阶巴特沃斯低通滤波器,采样频率:250Hz,截止频率5Hz,设置如下:
然后,点Design Filter即可,接着在菜单栏Analysis->Filter Coefficients,可以看到分母A和分子B相应的参数:
第二步:参数得到,代入公式即可了。 差分方程公式为:
二、 二阶巴特沃斯低通滤波器设计 第一步:二阶的话,其用Matlab参数和c语言代码得到参数都可以,Matlab参数跟上述类似,如下图所示: 第一步设置FS和FC并生成滤波器:
生成滤波器后,电机左上角的[b,a]选项模块
第三步,edit->convert to single section 获得bk和ak
最后:
其中,Numerator,分子,也就是传递函数中的b项们,从上到下依次为b0、b1、b2。 Denominator,分母,也就是传递函数中的a项,从上到下依次为a0、a1、a2,其中a0总是为1。 除了上述方法,现在使用c语言代码得到分子B和分母A的参数。 设置采样频率为fs,截止频率为fc,则:
其公式的代码展示为:
这个表达式中需要过去的4个历史值: Xt-1,Xt-2,Yt-1,Yt-2 二阶的意思就是:输入和输出项最多用到过去两个阶段的历史值,要用static来描述过去的变量和过去的过去的变量。 C代码的实现如下(已验证,得到了实现):
那么代码就可以写为: 三、IIR滤波器的差分方程 那有的朋友就问了,这个滤波器方程是从哪来的呢,当初我也有这个疑问。
这个方程是如何得出的呢,通过如下的图片可以给出解答(down别人的):
上面的方程是通过IIR差分方程的直接型得出的。 具体的解释为: 所以,利用左上角的差分方程带入相应的阶数k即可得到所需要的C语言函数方程了。 总结 以上就是今天要讲的内容,本文仅仅简单介绍了二阶巴特沃斯低通滤波器的调用,绝对没有什么问题。 其中参考: https://www.csdn.net/tags/MtjakgwsMDkxNDEtYmxvZwO0O0OO0O0O.html
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/75862.html