stm32f4 dsp库学笔记9-dsp库函数中iir滤波器的实现和效果stm32f4 dsp库学习笔记9-dsp库函数中iir滤波器的实现和效果stm32f4 dsp库学习笔记9-dsp库函数中iir滤波器的实现和效果stm32f4 dsp库学习笔记9-dsp库函数中iir滤波器的实现和效果.doc
- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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_
您可能关注的文档
- sql_server_208中的报表服务(word版)sql_server_2008中的报表服务(word版)sql_server_2008中的报表服务(word版)sql_server_2008中的报表服务(word版).doc
- sql2000a1-oveviewsql2000a1-overviewsql2000a1-overviewsql2000a1-overview.ppt
- sql2000数据库还原到ql2005方法sql2000数据库还原到sql2005方法sql2000数据库还原到sql2005方法sql2000数据库还原到sql2005方法.doc
- sql+server+实用程第三版试题有及答案sql+server+实用教程第三版试题有及答案sql+server+实用教程第三版试题有及答案sql+server+实用教程第三版试题有及答案.doc
- sql2005系统升级手记ql2005系统升级手记sql2005系统升级手记sql2005系统升级手记.doc
- sql_server200分组统计与多表关联查询sql_server2005分组统计与多表关联查询sql_server2005分组统计与多表关联查询sql_server2005分组统计与多表关联查询.ppt
- sql_server_208数据库备份与恢复sql_server_2008数据库备份与恢复sql_server_2008数据库备份与恢复sql_server_2008数据库备份与恢复.ppt
- sql-92标准 中文翻译ql-92标准 中文翻译sql-92标准 中文翻译sql-92标准 中文翻译.doc
- sqlite优化方法sqlte优化方法sqlite优化方法sqlite优化方法.doc
- sqlserver 200&08镜像导致日志文件ldf过大的问题解决sqlserver 2005&08镜像导致日志文件ldf过大的问题解决sqlserver 2005&08镜像导致日志文件ldf过大的问题解决sqlserver 2005&08镜像导致日志文件ldf过大的问题解决.doc
- 颠覆式药品市场战略-精准定位, 借力打力,赢在细节.pptx
- 2025年西南财经大学国际商务专业考研复试面试问题整理附面试技巧自我介绍.pdf
- 新媒体营销策略之社交媒体引流-社交媒体经理的角色.pptx
- 献血者权益保障-职责与安全须知.pptx
- 2025年西南财经大学项目管理专业考研复试面试问题整理附面试技巧自我介绍.pdf
- 移动医疗的革新之路-探索科技与医疗结合的未来.pptx
- Unit2WhattimeisitPartBLet'slearnLookaskandanswer(第5课时)分层作业-2024-2025学年英语四年级下册(人教PEP版).docx
- 品质管理兽用药品-挑战与机遇.pptx
- 4.1原子结构与元素周期表第4课时课件高一上学期化学人教版.pptx
- 声动未来:车载音响全景解析-深度探讨音响系统设计与市场趋势.pptx
文档评论(0)