打印

FIR源程序各位帮忙解读一下吧

[复制链接]
1372|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gexingyouxian|  楼主 | 2013-5-27 09:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "DSP28_Device.h"     // DSP281x Headerfile Include File
//#include "DSP281x_Examples.h"   // DSP281x Examples Include File
//#include "f2812a.h"
#include"math.h"

#define FIRNUMBER 25
#define SIGNAL1F 1000
#define SIGNAL2F 4500
#define SAMPLEF  10000
#define PI 3.1415926
#define Pi 3.1415926
float InputWave();
float FIR();

//冲激响应系数

float fHn[FIRNUMBER]={ 0.0,0.0,0.001,-0.002,-0.002,0.01,-0.009,
                       -0.018,0.049,-0.02,0.11,0.28,0.64,0.28,
                       -0.11,-0.02,0.049,-0.018,-0.009,0.01,
                       -0.002,-0.002,0.001,0.0,0.0
                     };
float fXn[FIRNUMBER]={ 0.0 };
float fInput,fOutput;
float fSignal1,fSignal2;
float fStepSignal1,fStepSignal2;
float f2PI;
int i;
float fIn[256],fOut[256],H[102];
int nIn,nOut;
main(void)
{
    InitSysCtrl();
    nIn=0; nOut=0;
f2PI=2*PI;
fSignal1=0.0;
fSignal2=PI*0.1;
fStepSignal1=2*PI/30;     
fStepSignal2=2*PI*1.4;
  while ( 1 )
{
  fInput=InputWave();
  fIn[nIn]=fInput;
  nIn++; nIn%=256;
  fOutput=FIR();
  fOut[nOut]=fOutput;
  nOut++;
  if ( nOut>=256 )
  {
   nOut=0;  /* 请在此句上设置软件断点 */
  }
}
}  


float InputWave()
{
for ( i=FIRNUMBER-1;i>0;i-- )
  fXn=fXn[i-1];
// fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0;  //此时为混合信号(sin 为低频信号,cos为高频信号)
// fXn[0]=cos(fSignal2)/6.0; //此时为cos 高频信号
fXn[0]=sin(fSignal1); //此时为sin 低频信号
fSignal1+=fStepSignal1;
if ( fSignal1>=f2PI ) fSignal1-=f2PI;
fSignal2+=fStepSignal2;
if ( fSignal2>=f2PI ) fSignal2-=f2PI;
return(fXn[0]);
}

float FIR()
{
float fSum;
fSum=0;
for ( i=0;i<FIRNUMBER;i++ )
{
  fSum+=(fXn*fHn);
}
return(fSum);
}

相关帖子

沙发
gexingyouxian|  楼主 | 2013-5-27 09:14 | 只看该作者
这是低通滤波程序,我把它放在ccs里面运行了,结果正确,可是还是有很多问题没有解决掉,请各位高手不吝赐教!!

使用特权

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

本版积分规则

197

主题

1530

帖子

2

粉丝