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

DSP的IIR数字滤波器实现

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
亲测有效的IIR数字滤波器C程序实现,输入与输出有明显的滤波效果,如图- {; h0 i% ^' C3 Z

7 x) ?4 [4 d1 _' q) ^$ j ( P8 q- @$ {' J' d2 |

% b9 H6 L" R2 B& u% N6 ]" P附录(C程序源码):
  \) A6 I. o4 v) q, z5 b4 k" A
  • #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);4 a& j. `# X4 n/ H
, K& ~& M2 ]/ g, x( I$ Q

) r. `* f$ W  c# m/ [4 Z- K
4 s( H: i0 G$ |. w! a+ g* r/ I
  • TA的每日心情

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

    [LV.1]初来乍到

    2#
    发表于 2021-12-14 13:45 | 只看该作者
    这波形不错呀
    . q: H7 J# U  v

    该用户从未签到

    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-20 19:01 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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