找回密码
 注册
关于网站域名变更的通知
查看: 239|回复: 4
打印 上一主题 下一主题

DSP的IIR数字滤波器实现

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-14 13:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
亲测有效的IIR数字滤波器C程序实现,输入与输出有明显的滤波效果,如图
$ ^0 U- G% W4 D' z! q) a0 A( _* y. k# z2 w

% b% }" i1 d' [+ P8 b
. S( {* Z+ w/ h. m附录(C程序源码):5 _) f8 t0 y6 u& y! |# G
  • #include "DSP2833x_Device.h"     // DSP2833x HeadeRFile Include File
  • #include "DSP2833x_Examples.h"   // DSP2833x Examples Include File
  • #include  <math.h>
  • #define IIRNUMBER 2
  • #define SIGNAL1F 1000
  • #define SIGNAL2F 4500
  • #define SAMPLEF  10000
  • #define PI       3.1415926
  • float InputWave();
  • float IIR();
  • float fBn[IIRNUMBER]={ 0.0,0.7757 };
  • float fAn[IIRNUMBER]={ 0.1122,0.1122 };
  • float fXn[IIRNUMBER]={ 0.0 };
  • float fYn[IIRNUMBER]={ 0.0 };
  • float fInput,fOutput;
  • float fSignal1,fSignal2;
  • float fStepSignal1,fStepSignal2;
  • float f2PI;
  • int i;
  • float fin[256],fout[256];
  • //输入fIn毛刺正弦波,输出fOut较光滑正弦波,Graph: 256,32-bit floating integer,
  • int nIn,nOut;
  • main()
  • {
  •     nIn=0; nOut=0;
  •     fInput=fOutput=0;
  •     f2PI=2*PI;
  •     fSignal1=0.0;
  •     fSignal2=PI*0.1;
  • //  fStepSignal1=2*PI/30;
  • //  fStepSignal2=2*PI*1.4;
  •     fStepSignal1=2*PI/50;
  •     fStepSignal2=2*PI/2.5;
  •     while ( 1 )
  •     {
  •         fInput=InputWave();
  •         fin[nIn]=fInput;
  •         nIn++; nIn%=256;
  •         fOutput=IIR();
  •         fout[nOut]=fOutput;
  •         nOut++;             // break point
  •         if ( nOut>=256 )
  •         {
  •             nOut=0;
  •         }
  •     }
  • }
  • float InputWave()
  • {
  •     for ( i=IIRNUMBER-1;i>0;i-- )
  •     {
  •         fXn=fXn[i-1];
  •         fYn=fYn[i-1];
  •     }
  •     fXn[0]=sin((double)fSignal1)+cos((double)fSignal2)/6.0;
  •     fYn[0]=0.0;
  •     fSignal1+=fStepSignal1;
  •     if ( fSignal1>=f2PI )   fSignal1-=f2PI;
  •     fSignal2+=fStepSignal2;
  •     if ( fSignal2>=f2PI )   fSignal2-=f2PI;
  •     return(fXn[0]);
  • }
  • float IIR()
  • {
  •     float fSum;
  •     fSum=0.0;
  •     for ( i=0;i<IIRNUMBER;i++ )
  •     {
  •         fSum+=(fXn*fAn);
  •         fSum+=(fYn*fBn);
  •     }
  •     return(fSum);
    $ T7 E2 {8 V& G: K
) v0 z/ v7 k6 B* l8 v% M! L9 j

* E& V5 o. a8 |) g2 L
6 K3 {7 z7 q1 j
  • TA的每日心情

    2019-11-19 15:55
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2021-12-14 13:45 | 只看该作者
    这波形不错呀1 \$ c8 j$ ?. q  W& ^

    该用户从未签到

    3#
    发表于 2021-12-14 13:46 | 只看该作者
       感谢分享

    该用户从未签到

    4#
    发表于 2021-12-17 19:44 | 只看该作者
    毛刺怎么解决
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    5#
    发表于 2021-12-21 18:22 | 只看该作者
    这个滤波器比较常见,也很重要
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-21 11:59 , Processed in 0.078125 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表