#include
#include
#include
#include"FFT.h"
//Ч¹ûËÆºõ²»ÈçʱÓòñÞ»ý·¨
/*¹¹½¨Ïâ±ß´øÍ¨Â˲¨Æ÷
f0--ͨƵ´øÖÐÐÄÆµÂÊ
hf--ͨƵ´ø°ë¿í¶È
num-Â˲¨Æ÷³¤¶È
df--ƵÂʲÉÑù¼ä¸ô
*/
void Filter(float h[],int num,float f0,float hf,float df)
{
int i;
double pi=3.1415926;
float bf=hf;//Ïâ±ß¿í¶È
float f1,f2,f3,f4,f;
f2=f0-hf; f3=f0+hf;
f1=f2-bf; f4=f3+bf;
for(i=0; i<=num/2; i++)
{
f=i*df;
if(f
else if(f>=f1 && f<=f2)
h[ i ]=pow(sin(pi*(f-f1)/(2.0*(f2-f1))),2);
else if(f>f2 && f
h[ i ]=1.0;
else if(f>=f3 && f<=f4)
h[ i ]=pow(sin(pi*(f-f4)/(2.0*(f4-f3))),2);
else
h[ i ]=0.0;
}
for(i=num/2+1; i
h[ i ]=h[num-i];
}
void main()
{
const int M=128;//Â˲¨Æ÷³¤¶È
float dt=0.002;//ʱ¼ä²ÉÑù¼ä¸ô
float df=1.0/(M*dt);//ƵÂʲÉÑù¼ä¸ô
float Inisigr[M]={0};//ÒªÂ˲¨µÄÐźÅ
float Inisigi[M]={0};
float Afsig2r[M]={0};//Â˲¨ºóµÄÐźÅ
float Afsig2i[M]={0};
float Afsig[M]={0};//ÀíÏëÇé¿öÏÂÂ˲¨ºóµÄÐźÅ
float hr[M],hi[M];//Â˲¨Æ÷ƵÆ×
int i,k;
k=(int)(log(M)/log(2.0)+0.5);
FILE *fp1,*fp2,*fp3;
fp1=fopen("inisig.txt","w" );//ºÏ³ÉÐźÅ
fp2=fopen("afsig.txt","w" );//ÀíÏë50hzÐźÅ
fp3=fopen("afsig2.txt","w" );//Â˲¨µÃµ½µÄ50hzÐźÅ
//²úÉúÐźÅ,20hz,50hz,80hzÕýÏÒÐźŵþ¼Ó
double pi=3.1415926;
float f1,f2,f3;
f1=20.0;
f2=50.0;
f3=80.0;
for(i=0; i
{ Afsig[ i ]=sin(2*pi*f2*dt*i);
Inisigr[ i ]=Afsig[ i ]+sin(2*pi*f1*i*dt)+sin(2*pi*i*f3*dt);
fprintf(fp1,"%f\n",Inisigr[ i ] );
}
//ÐγÉÂ˲¨Æ÷
Filter(hr,M,50.0,10.0,df);
//¶ÔÒªÂ˲¨µÄÐźŽøÐÐFFT
fft(Inisigr,Inisigi,k,1);
//ƵÆ×Ïà³Ë,ÂËÈ¥µÍÓÚ40hz¸ßÓÚ60hzµÄÐźÅ
for(i=0; i
{
Afsig2r[ i ]=hr[ i ]*Inisigr[ i ];
Afsig2i[ i ]=Inisigi[ i ]*hr[ i ];
}
//FFT·´±ä»»
fft(Afsig2r,Afsig2i,k,-1);
//Êä³ö½á¹û
for(i=0; i
{
fprintf(fp2,"%f\n",Afsig[ i ]);
fprintf(fp3,"%f\n",Afsig2r[ i ]);
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
}
Â˲¨Ç°£º![]()
Â˲¨ºó£º![]()
[ Last edited by baobiao007 on 2011-2-14 at 22:55 ] |