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

📄 gain.c

📁 关于滤波器设计的源代码
💻 C
字号:
#include"math.h"
void gainc(double b[],double a[],int m,int n,
		  double x[],double y[],int len,int sign)
{
  int i,k;
  double ar,ai,br,bi,zr,zi,im,re,den,numr,numi,freq,temp;
  for(k=0;k<len;k++)
  {
	  freq=k*0.5/(len-1);
	  zr=cos(-8.0*atan(1.0)*freq);
	  zi=sin(-8.0*atan(1.0)*freq);
	  br=0.0;
	  bi=0.0;
	  for(i=m;i>0;i--)
	  {
		  re=br;
		  im=bi;
		  br=(re+b[i])*zr-im*zi;
		  bi=(re+b[i])*zi+im*zr;
	  }
	  ar=0.0;
	  ai=0.0;
	  for(i=n;i>0;i--)
	  {
		  re=ar;
		  im=ai;
		  ar=(re+a[i])*zr-im*zi;
		  ai=(re+a[i])*zi+im*zr;
	  }
	  br=br+b[0];
	  ar=ar+1.0;
	  numr=ar*br+ai*bi;
	  numi=ar*bi-ai*br;
	  den=ar*ar+ai*ai;
	  x[k]=numr/den;
	  y[k]=numi/den;
	  switch(sign)
	  {
	  case 1:
		  {
			  temp=sqrt(x[k]*x[k]+y[k]*y[k]);
			  y[k]=atan2(y[k],x[k]);
			  x[k]=temp;
			  break;
		  }
	  case 2:
		  {
			  temp=x[k]*x[k]+y[k]*y[k];
			  y[k]=atan2(y[k],x[k]);
			  x[k]=10.0*log10(temp);
		  }
	  }
}
}

⌨️ 快捷键说明

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