网站大量收购闲置独家精品文档,联系QQ:2885784924

stm32f4 dsp库学笔记9-dsp库函数中iir滤波器的实现和效果stm32f4 dsp库学习笔记9-dsp库函数中iir滤波器的实现和效果stm32f4 dsp库学习笔记9-dsp库函数中iir滤波器的实现和效果stm32f4 dsp库学习笔记9-dsp库函数中iir滤波器的实现和效果.doc

stm32f4 dsp库学笔记9-dsp库函数中iir滤波器的实现和效果stm32f4 dsp库学习笔记9-dsp库函数中iir滤波器的实现和效果stm32f4 dsp库学习笔记9-dsp库函数中iir滤波器的实现和效果stm32f4 dsp库学习笔记9-dsp库函数中iir滤波器的实现和效果.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STM32F4 DSP库学习笔记9-DSP库函数中IIR滤波器的实现和效果我们来实际操作STM32F4?DSP库的IIR滤波器。 与IIR滤波器函数有关的源文件如下图所示: STM32F4?DSP库中采用biquad作为一个单元。一个biquad是2阶,n个biquad串联之后就是n阶滤波器。 基本的单元结构如下所示: 我们可以求出一个biquad的差分函数形式是: y[n]?=?b0?*?x[n]?+?b1?*?x[n-1]?+?b2?*?x[n-2]?-?a1?*?y[n-1]?-?a2?*?y[n-2]? Matlab里的计算就是按照上面的式子计算的,但是STM32F4?DSP库里的系数a1,a2是取反的。 下面就介绍如何使用MATLAB设计IIR滤波器。 举个例子,我们要设计一个采样率为1kHz,4阶,截止频率100Hz的巴特沃斯滤波器。 首先和设计FIR滤波器一样,首先在MATLAB命令窗口输入fdatool,调出滤波器设计窗口 按照方框所示设置好参数: 点击Design?Filter: 注意红框里面是直接II型,我们要把他改为直接I型。 点击Edit-Convert?Structure,选择I型: 转化好后,点击File-Export, 第一项选择Coefficient?File(ASCII): 第一项选择好以后,第二项选择Decimal: 点击Export,保存后生成如下文件: 系数对应如下: 1??2??1??1??-1.3209134308194264??0.63273879288527657??? b0?b1??b2?a0?????????????a1??????????????????????????a2?????? 1??2??1??1??-1.0485995763626117??0.29614035756166951?? b0?b1?b2??a0?????????????a1??????????????????????????a2? 实际使用ARM官方的IIR函数调用的时候要将a1和a2取反。把a0去掉 Scale?Values表示每个biquad的增益系数。所以最后用STM32计算后,要乘以这两个系数。 设计滤波器系数之后,我们来看STM32的IIR滤波器函数: 主要介绍下arm_biquad_cascade_df1_f32 函数定义如下: void?arm_biquad_cascade_df1_f32( ??const?arm_biquad_casd_df1_inst_f32?*?S, ??float32_t?*?pSrc, ??float32_t?*?pDst, ??uint32_t?blockSize) 参数: ?*S?????????points?to?an?instance?of?the?floating-point?Biquad?cascade?structure.???? ?*pSrc??????points?to?the?block?of?input?data.???? ?*pDst??????points?to?the?block?of?output?data.???? ?blockSize??number?of?samples?to?process?per?call.???? 介绍下结构体arm_biquad_casd_df1_inst_f32 typedef?struct? {? //?number?of?2nd?order?stages?in?the?filter.?Overall?order?is?2*numStages.? uint32_t?numStages;? //?Points?to?the?array?of?state?coefficients.?The?array?is?of?length?4*numStages.?float32_t?*pState; ?//?Points?to?the?array?of?coefficients.?The?array?is?of?length?5*numStages.? float32_t?*pCoeffs;? }?arm_biquad_casd_df1_inst_f32;? 注意下:pState指向的数组长度是4倍numStages长度 ????????pCoeffs指向的数组长度是5倍numStages长度,a0默认为1,不需要放入 ????????numStages表示biquad个数; ? 好,接下来我们就可以使用这个函数了 #define?numStages?2? #define?TEST_LENGTH_SAMPLES?1024? float32_t?testInput_f32[TEST_

您可能关注的文档

文档评论(0)

cxiongxchunj + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档