发新帖我要提问
12
返回列表
打印

滤波器设计

[复制链接]
楼主: wuhany
手机看帖
扫描二维码
随时随地手机跟帖
21
wuhany|  楼主 | 2011-6-30 01:10 | 只看该作者 回帖奖励 |倒序浏览
K的最大值只能取到9啊,这样的话, 要从K=0 加到 K=N ,要怎么实现啊?

使用特权

评论回复
22
nongfuxu| | 2011-6-30 08:01 | 只看该作者
好贴,赞一个.

使用特权

评论回复
23
五谷道场| | 2011-6-30 08:56 | 只看该作者
#define        N                 10         // number of FIR coefficients.
#define        BLKSIZE        20        // block size of samples filtered each time.
#define        M                 (N + BLKSIZE - 1)

float workbuf[M] = {0};        // history + current input block, initialize to 0.

// float h[N]: array of fir filter coefficients.
// float x[BLKSIZE]: array of input samples block
// float y[BLKSIZE]: array of samples block after filtering
void fir(float h[N], float x[BLKSIZE], float y[BLKSIZE])
{

        int i, j;
        float *p;
        
        // copy current input block to work buffer
        // workbuf[N-1] = x[0], workbuf[N] = x[1],
        // workbuf[N+1] = x[2], ..., workbuf[M-1] = x[BLKSIZE-1];
        for (i=0; i<BLKSIZE; i++)
        {
                workbuf[i+N-1] = x[i];
        }
        
        // FIR filter loop
        for (i=0; i<BLKSIZE; i++)
        {
                p = &workbuf[i+N-1];// each y[i] needs right starting x[i].
                for (j=0; j<N; j++)
                {
                        y[i] += (h[j] * (*p--));
                }
        }

        // copy last N-1 samples of x[n] to workbuf
        // as history for next block        
        p = &x[BLKSIZE-1];        // p points the last element;
        for (i=0; i<N-1; i++)
        {
                workbuf[N-2-i] = *p--;
        }

}

临时写的,没有验证,不保证没有错误。

使用特权

评论回复
24
wuhany|  楼主 | 2011-6-30 09:04 | 只看该作者
谢谢帮助 终于可以结贴 了!呵呵...

使用特权

评论回复
25
jack_shine| | 2011-6-30 09:13 | 只看该作者
LZ,23楼那么用心回你的贴,就给1分,也太小气了吧:lol

使用特权

评论回复
26
nongfuxu| | 2011-6-30 09:53 | 只看该作者
谁能说一下怎么给人加份,啊?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则