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

📄 filterds2008.c

📁 自己编的数值计算方法的c语言实现源程序。
💻 C
字号:
void filter()
/*b,a,m,n:为滤波器参数; x,len:先为输入序列,后为输出序列参数;px,py:0;*/
/*b:双精度实型一维数组,长度为(m+1),存放滤波器分子多项式系数b(i);
a:双精度实型一维数组,长度为(n+1),存放滤波器分母多项式系数a(i);
m:滤波器分子多项式阶数;
n:滤波器分母多项式阶数;
len:输入序列和输出序列长度;分块处理时,表示块的长度;
px:长度(m+1);分块处理时,用于保存前一块滤波时的(m+1)个输入序列值px[]={x(k),x(k-1),...,x(k-m)};
py:长度(n+1);分块处理时,用于保存前一块滤波时的n个输出序列值py[]={y(k-1),y(k-2),...,y(k-n)};
px、py为了防止x[k]过长而设,要初始化为0.*/
{
	int m,n,len;
	int k,i;
	/*H(z)=(0.001836+0.007344z^-1+0.011016z^-2+0.007344z^-3+0.001836z^-4)/(1.0-3.0544z^-1+3.8291z^-2-2.2925z^-3+0.55075z^-4)*/
	double b[5]={0.001836,0.007344,0.011016,0.007344,0.001836};
	double a[5]={1.0,-3.0544,3.8291,-2.2925,0.55075};
	double px[5]={0.,0.,0.,0.,0.};
	double py[5]={0.,0.,0.,0.,0.};
	m=4;
	n=4;
	len=1000;
	unsigned int *memory;
	memory=0x0000;
	for(k=0;k<len;k++)
	{	px[0]=*memory;
		*memory=0.0;
		for(i=0;i<=m;i++)
		{	*memory=*memory+b[i]*px[i]; /*px[i]==x[k-i];i=0...m;*/
		}
		for(i=1;i<=n;i++)
		{	*memory=*memory-a[i]*py[i]; /*py[i]==y[k-i];i=1...n;*/
		}
		/*px,py中数据都向右移一格;*/
		for(i=m;i>=1;i--)
		{	px[i]=px[i-1]; 
		}
		for(i=n;i>=2;i--)
		{	py[i]=py[i-1]; 
		}
		py[1]=*memory;
		*memory=(int)*memory;
		memory++;
	}
}   

⌨️ 快捷键说明

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