关于STM32 DSP库里FIR的疑问

[复制链接]
3887|1
 楼主| fenggdfs 发表于 2013-2-27 20:49 | 显示全部楼层 |阅读模式
我最近在看FIR滤波的东西,但无奈网上资源比较少,请教一下大家
我看网上为数不多的例子都是这样
#define M 32 /*number of coefficients*/
#define N 32 /*number of output samples*/
COEFS fir_coefs;/*coefficients structure*/
int a[N];/*filter output vector*/
short x[M+N-1] = {x0,x1...,xM+N-1};/*filter input vector*/
short h[M]={h0,h1...,hM-1};/*filter coefficients vector*/
fir_coefs.nh = M; /*Number of Coefficients for FIR*/
fir_coefs.h = h; /*Pointer on FIR coefficient vector*/
fir_16by16_stm32(a,x,&fir_coefs,N);/*performs the FIR filtering*/

M滤波器长度,N滤波器输出数据长度,响应的滤波器输入长度为M+N-1
请问,输入的数据,
是一个先进先出的数组,每次进一个新数据弹出最旧的数据;但是这样就是来一个新的数据,就输出N个数据了?
还是全部用新的数据?这样采样率应该会改变吧?

谢谢大家了
 楼主| fenggdfs 发表于 2013-3-4 20:42 | 显示全部楼层
这几天有点感悟,说出来给大家分享一下吧
首先,我是参考这个http://www.docin.com/p-213307038.html

对于输出输入,比如:
#define M 4 /*number of coefficients*/
#define N 4 /*number of output samples*/
short x[M+N-1] = {x0,x1...,xM+N-1};/*filter input vector*/
输入7,输出4.  一开始fir_16by16_stm32(a,x,&fir_coefs,N)  得到4个数据。
然后去掉前面3个,再进去四个新的数据,每进去新的数据,把输出1个之前得到的数据。
当4个新数据全部进入,4个数据全部输出。然后再fir_16by16_stm32(a,x,&fir_coefs,N)。

程序还没完全写好,就不贴出来了,希望帮到大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

32

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部