打印

请教FIR滤波器设计

[复制链接]
3609|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nxy825715|  楼主 | 2007-3-19 15:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
小研究| | 2007-3-20 08:54 | 只看该作者

滤波器的系数通常并不多

滤波器的系数通常并不多,即使手写也很快的,你可以在主窗口中显示然后复制过来。
至于定点化也很简单,我用的方法是乘以32768,然后四舍五入,再除以32768即可。

使用特权

评论回复
板凳
nxy825715|  楼主 | 2007-3-20 09:07 | 只看该作者

Re:

请问小研究:
    乘以32768 : 是滤波器系数乘以32768吗?
    除以32768 : 是滤波器的输出除以32768吗?

还望请回复.
先谢谢了...

使用特权

评论回复
地板
小研究| | 2007-3-20 09:27 | 只看该作者

我说的是16位定点DSP

你仿真得到的系数,乘以32768后四舍五入,之后的结果再乘以32768。

使用特权

评论回复
5
小研究| | 2007-3-20 11:09 | 只看该作者

这可是我自创的办法,楼主将来要请客啊,哈哈

使用特权

评论回复
6
nxy825715|  楼主 | 2007-3-21 10:07 | 只看该作者

我已经搞定了

但还是要谢谢"小研究",有机会一定请你!

如果使用软件设计的方法,那么可能需要你的那种方法.

现在我使用FDATOOL设计,然后将系数导出为 有符号的16位定点数据.

使用特权

评论回复
7
nxy825715|  楼主 | 2007-3-21 13:52 | 只看该作者

Re:

请问"小研究":
    你使用过C54xx系列的DSPLIB中的FIR函数吗?
    我在MATLAB中设计的低通滤波器(经过了Smulink的仿真),但在C5402的开发中这个滤波器达不到滤波效果(我已经参考了DSPLIB中FIR函数的使用,我设计的低通滤波器是0 -- 10000Hz,我输入15K Hz,滤波器后这个15K Hz的信号依然存在).
    若你使用过,可否发一个例子给我呢,谢谢了.

使用特权

评论回复
8
nxy825715|  楼主 | 2007-3-21 16:01 | 只看该作者

Re:

我已经调试通过了,
是以为滤波器发生了益出.

使用特权

评论回复
9
nxy825715|  楼主 | 2007-3-22 10:07 | 只看该作者

Re:

"小研究":我解决了滤波器益出的问题,但是还是不能达到滤波器的效果.

先我附上我的程序,还请指点:

/*
*********************************************************************
**函数原型:      void FirLowPassPrg(short *Input, short *Coefs, short *Output)     
**参数说明:      Input : 输入数据
        Coefs :滤波器系数
        Output:滤波输出数据
        DBUFLEN: 128
        LpfCoefsLen: 滤波器系数个数 51
**返回值:        无
**说明:        Low pass filter (0 -- 10K Hz)
*********************************************************************
*/
void FirLowPassPrg(short *Input, short *Coefs, short *Output)
{
    ushort i, n;
        
    // 由于直接进行1024个点的FIR滤波,则导致溢出
    // 所以将1024个点的FIR滤波分解成128次的8个点的滤波
    for (n = 0; n < 128; n++) {
        for (i = 0; i < DBUFLEN; i++) {
            // Clear Delay buffer (must)
            DbBuffer = 0x00;                
        }
        dbptr = &DbBuffer[0];
        fir(&Input[n * (NX / 128)], Coefs, 
            &Output[n * (NX / 128)], &dbptr, 
                LpfCoefsLen, (NX / 128));
    }
    
    // 将滤波后的数据再次存放到Input[]中
    for (i = 0; i < NX; i++) {
        Input = Output;
    }
}

使用特权

评论回复
10
雪梅y| | 2007-3-24 09:23 | 只看该作者

请教关于用DSP设计低通数字滤波器

请问截止频率为2KHZ,它的通带频率最好为多少
其他参数设置为多少
还有用什么窗函数简单点

使用特权

评论回复
11
nxy825715|  楼主 | 2007-3-24 17:23 | 只看该作者

个人见解:

它的通带频率最好为多少:
答:这个要根据你的系统来确定.滤波器级数越高,则通带越窄.
其他参数设置为多少:
答:仔细看看FIR或者IIR的讲解.审查你的系统需要滤波器达到怎么样的精度.
还有用什么窗函数简单点:
答:不同的窗函数会导致不同的通带纹波幅度,及最小衰减幅度.

使用特权

评论回复
12
雪梅y| | 2007-3-25 09:10 | 只看该作者

请教

谢谢
那请问用汉宁窗设计一个音频低通FIR
它的截止频率为2KHZ那其他参数怎么设置呢
谢谢

使用特权

评论回复
13
小研究| | 2007-3-27 14:32 | 只看该作者

回nxy825715

我是搞ADSP-21XX的,TI的54系列只看过,没用过,你提供的程序倒是可以看看。

使用特权

评论回复
14
小研究| | 2007-3-27 14:52 | 只看该作者

回雪梅y

其实nxy825715说的差不多,关键是看你的技术指标。比如你的截止频率是2K,那么你用B=fir1(N,W)时,你的N值越大,实际得到的W越接近于2K,而且带阻部分衰减越快。
这些日子在忙着找工作,好久没来了。

使用特权

评论回复
15
nxy825715|  楼主 | 2007-3-27 16:04 | 只看该作者

Re:

使用特权

评论回复
16
nxy825715|  楼主 | 2007-3-27 16:07 | 只看该作者

Re:

不管怎么样,还是要多谢"小研究"的热心回答...

请问,谁使用过C54x 的DSPLIB库中的FIR函数呀,
我现在就是使用这个函数进行滤波的,但是出先了问题,
如果谁使用过,还请麻烦阁下发一份,给在下点提示...

先谢谢了...

使用特权

评论回复
17
小研究| | 2007-3-27 20:43 | 只看该作者

回nxy825715

你居然用了1024个点,什么滤波居然用这么高的阶数?
能否把你的系数发来,我给你仿真一下,看是否可以仿真通过?

使用特权

评论回复
18
nxy825715|  楼主 | 2007-3-28 08:33 | 只看该作者

Re:

回小研究:
    我的系数是51个,采样的数据是1024个.

使用特权

评论回复
19
12326| | 2019-3-18 23:41 | 只看该作者
小研究 发表于 2007-3-27 14:32
我是搞ADSP-21XX的,TI的54系列只看过,没用过,你提供的程序倒是可以看看。  ...

我这边毕业设计也是要用MATLAB仿真,然后窗函数法和频率采样法设计FIR带通滤波器,大佬们能帮个忙吗

使用特权

评论回复
20
小研究| | 2019-3-24 22:29 | 只看该作者
12326 发表于 2019-3-18 23:41
我这边毕业设计也是要用MATLAB仿真,然后窗函数法和频率采样法设计FIR带通滤波器,大佬们能帮个忙吗 ...

这么久远的帖子也被你扒出来了。
找本MATLAB的书看看,到处都是你要的东西,这种教材太多了。

使用特权

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

本版积分规则

56

主题

389

帖子

1

粉丝