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

DSP的IIR数字滤波器实现

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
亲测有效的IIR数字滤波器C程序实现,输入与输出有明显的滤波效果,如图
; d1 Z6 L6 S* O; N* X9 V6 [  C: h. n5 R
3 z  T; z0 N- m* {$ E

. d2 J  _/ x9 g1 T( q附录(C程序源码):
& }# Z/ P7 {& e
  • #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);
    : f/ Y0 f/ D4 \6 ~# w" \( C7 Q' {

" {. C+ w' |0 C
% g1 x2 r& j8 H! c. V  [$ g
. l/ d/ O6 O$ m
  • TA的每日心情

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

    [LV.1]初来乍到

    2#
    发表于 2021-12-14 13:45 | 只看该作者
    这波形不错呀
    % x+ D1 P' I! C5 D7 N

    该用户从未签到

    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-10-12 13:03 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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