filter example.c

来自「自己编的数值计算方法的c语言实现源程序。」· C语言 代码 · 共 41 行

C
41
字号
#include"stdio.h"
#include"filter.c"
/*求4阶切比雪夫低通数字滤波器H(z)的单位冲激响应 */
void main()
{	int i,k,m,n,len,nblk;
	/*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.};
	double x[25],data[100];
	FILE *fp;
	m=4;
	n=4;
	len=25;
	nblk=4; /*分的块数;*/
	
	/*x[n]为单位冲激响应;*/
	x[0]=1.0;
	for(k=1;k<len;k++)
	{	x[k]=0.0;	}
	
	/*数字滤波,数据放入data[]中;*/
	for(i=0;i<nblk;i++)
	{	filter(b,a,m,n,x,len,px,py);/*循环运行函数filter(),*/
		for(k=0;k<len;k++)
		{	data[i*len+k]=x[k];
			x[k]=0.0;
		}
	}
	
	/*输出data;*/
	if(( fp=fopen("filter.txt","w"))==NULL)
		{	printf("cannot open file 'filter.txt'!\n");
		exit(0);
		}
	for(i=0;i<100;i++)
	{	fprintf(fp,"%lf ",data[i]);
	}
	fclose(fp);
}

⌨️ 快捷键说明

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