|
親測(cè)有效的IIR數(shù)字濾波器C程序?qū)崿F(xiàn),輸入與輸出有明顯的濾波效果,如圖
M]Y2]5[[U@YTGK16J0U(M)6.png (55.04 KB, 下載次數(shù): 93)
下載附件
輸入時(shí)波形
2018-11-2 13:30 上傳
EPTR{L08R99[R~Z6]D{{ACR.png (51 KB, 下載次數(shù): 72)
下載附件
輸出時(shí)波形
2018-11-2 13:30 上傳
附錄(C程序源碼):
- #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[i]=fXn[i-1];
- fYn[i]=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[i]*fAn[i]);
- fSum+=(fYn[i]*fBn[i]);
- }
- return(fSum);
- }
復(fù)制代碼
全部資料51hei下載地址:
IIR濾波C程序.docx
(13.53 KB, 下載次數(shù): 84)
2018-11-2 13:35 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|