test.c

来自「FIR转成Lattice结构[全零点系统转lattice) 根据要求的中心频点」· C语言 代码 · 共 47 行

C
47
字号
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
typedef  double guan;  //定义double类型时输出用%lf 表示

void main()
{   int k;
    int i;
	int M;
    guan *b,*temp;
    guan mid;
	guan shang;
	printf("输入FIR滤波器的阶数");
	scanf("%d",&M);
	b=(guan *)calloc(sizeof(guan),M);
    temp=(guan *)calloc(sizeof(guan),M);

	printf("M=%d\n",M);
	for(i=0;i<M;i++)
	{
		printf("输入FIR滤波器的第%d个系数:\n",i);
        scanf("%lf",&b[i]);
	}

  for(k=M-1;k>=1;k--)
  {
	  for(i=0;i<k;i++)
	  {
		  mid=-b[k];
          shang=1-mid*mid;
		  temp[i]=(b[i]+mid*b[k-1-i])/shang;
	  }
	  for(i=0;i<k;i++)
	  {
		  b[i]=temp[i];
	  }
	  b[k]=mid;
  }
  b[0]=-b[0];
         
for(i=0;i<M;i++)
{
	printf("Lattice的第%d个系数(从左到右)是:%lf\n",i,-b[i]);
}
	free (b);
	free(temp);
}

⌨️ 快捷键说明

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