⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fd.txt

📁 Dsp的Fir
💻 TXT
字号:
鉴于试验箱带的程序比较冗繁,我将FIR,IIR,FFT三个函数分别写成子函数形式,这样
简单、易记、代码量减少了很多。
此代码为个人所改写,仅供参考
//fir
#define FIRNUMBER 25

float fHn[FIRNUMBER]={Matlab求得的系数表};
//float fXn[FIRNUMBER]={输入序列};

float FIR(float fXn[FIRNUMBER])
{
	float fSum;
	fSum=0;
	for(i=0;i<FIRNUMBER;i++)
	{
		fSum+=(fXn[i]*fHn[i]);
	}
	return(fSum);
}
//iir
#define IIRNUMBER 2

float fAn[IIRNUMBER]={输出序列系数};
float fBn[IIRNUMBER]={输入序列系数};
//float fXn[IIRNUMBER]={输入序列};
//float fYn[IIRNUMBER]={输出序列};

float FIR(float fXn[IIRNUMBER],float fYn[IIRNUMBER])
{
	float fSum;
	fSum=0;
	for(i=0;i<FIRNUMBER;i++)
	{
		fSum+=(fXn[i]*fAn[i]);
		fSum+=(fYn[i]*fBn[i]);
	}
	return(fSum);
}

//fft
#define SAMPLENUMBER 128
float sin_tab[SAMPLENUMBER ]={正弦系数表};
float cos_tab[SAMPLENUMBER ]={余弦系数表};

viod FFT(float dataR[SAMPLENUMBER ],float dataI[SAMPLENUMBER ])
{
	int x0,x1,x2,x3,x4,x5,x6,xx;
	int i,j,k,b,L,p;
	float TR,TI,temp;
*******************invent sequence*******************
	for(i=0;i<SAMPLENUMBER ;i++)
	{
		x0=x1=x2=x3=x4=x5=x6=0;
		x0=i&0x01;
		x1=(i/2)&0x01;
		x2=(i/4)&0x01;
		x3=(i/8)&0x01;
		x4=(i/16)&0x01;
		x5=(i/32)&0x01;
		x6=(i/64)&0x01;

		xx=x0*64+x1*32+x2*16+x3*8+x4*4+x5*2+x6;
		dataI[xx]=dataR[i];
	}
	for(i=0;i<SAMPLENUMBER ;i++)
	{
		dataR[i]=dataI[i];
		dataI[i]=0;
	}
******************following code FFT*********************
	for(L=1;L<=7;L++)
	{
		b=1;
		i=L-1;
		while(i>0)
		{
			b=b*2;
			i--;
		}
		for(j=0;j<=b-1;j++)
		{
			p=1;
			i=7-L;
			while(i>0)
			{
				p=p*2;
				i--;
			}
			p=p*j;
			for(k=j;k<128;k=k+2*b)
			{
				TR=dataR[k]; TI=dataI[k]; temp=dataR[k+b];
				dataR[k]=dataR[k]+dataR[k+b]*cos_tab[p]+dataI[k+b]*sin_tab[p];
				dataI[k]=dataI[k]-dataR[k+b]*sin_tab[p]+dataI[k+b]*cos_tab[p];
				dataR[k+b]=TR-dataR[k+b]*cos_tab[p]-dataI[k+b]*sin_tab[p];
				dataR[k+b]=TI+temp*sin_tab[p]+dataI[k+b]*cos_tab[p];
			}
		}
	}
	for(i=0;i<SAMPLENUMBER /2;i++)
	{
		w[i]=sqart(dataR[i]*dataR[i]+dataI[i]*dataI[i]);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -