亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? iir.c

?? irr濾波器的實現(xiàn)與仿真供大家參考望有幫助
?? C
?? 第 1 頁 / 共 2 頁
字號:
           /*IIR數字濾波器設計C程序 - 包括圖形顯示*/

/**********************************************************
IIRD_DF.c-雙線性變換法設計IIR數字濾波器
Infinite Impulse Response Digital Filter Design By Double Converting
====================================================
包括1.Lowpass       2.Highpass      3.bandpass三部分,如果有特殊需要
把其他部分刪除掉即可。
====================================================
歡迎訪問  |     |
|    電子開發(fā)網        http://dianzi.net  |
|     |
***********************************************************/
/*#include <windows.h>*/
#include <math.h>
#include <dos.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <graphics.h>

/*COMPLEX STRUCTURE*/
typedef struct{
double real,image;
}COMPLEX;

struct rptr{
double *a;
double *b;
};

#define  PI     (double)(4.0*atan(1.0))
#define  FNSSH(x)    log(x+sqrt(x*x+1))
#define  FNCCH(x)    log(x+sqrt(x*x-1))
#define  FNSH1(x)    (exp(x)-exp(-x))/2
#define  FNCH1(x)    (exp(x)+exp(-x))/2


/***********************************************************************************************/
double *bcg(double ap,double as,double wp,double ws,int *n,double *h,int *type);
struct rptr *bsf(double *c,int ni,double *f1,double *f2,int nf,struct rptr *ptr,int *no);
double *pnpe(double *a,int m,int n,double *b,int *mn);
double *ypmp(double *a,int m,double *b,int n,double *c,int *mn);
void lowpass_input(double *wp,double *ws,double *ap,double *ar,double *f1,double *f2,int *nf);
void highpass_input(double *wp,double *ws,double *ap,double *ar,double *f1,double *f2,int *nf);
void bandpass_input(double *wp,double *ws,double *ap,double *ar,double *f1,double *f2,int *nf);
void draw_image(double *x,int m,char *title1,char *title2,char *xdis1,char *xdis2,int dis_type);
/***********************************************************************************************/

void main(void)
{
double *f1,*f2,*hwdb;
double *h=NULL;
int N,nf,ns,nz,i,j,k,ftype,type;
COMPLEX hwdb1,hwdb2;
double wp,ws,ap,as,jw,amp1,amp2;
char title[80],tmp[20];
struct rptr *ptr=NULL;

/* printf("%lf",PI);
getch();*/
N=500;
f1=(double *)calloc(4,sizeof(double));
f2=(double *)calloc(4,sizeof(double));
hwdb=(double *)calloc(N+2,sizeof(double));
if (hwdb==NULL){
  printf("\\n Not enough memory to allocate!");
  exit(0);
}
printf("\\n1.Lowpass       2.Highpass      3.bandpass");
printf("\\nPlease select the filter type:");
scanf("%d",&ftype);
switch(ftype){
case 1:lowpass_input(&wp,&ws,&ap,&as,f1,f2,&nf);
  break;
case 2:highpass_input(&wp,&ws,&ap,&as,f1,f2,&nf);
  break;
case 3:bandpass_input(&wp,&ws,&ap,&as,f1,f2,&nf);
  break;
default:lowpass_input(&wp,&ws,&ap,&as,f1,f2,&nf);
}

h=bcg(ap,as,wp,ws,&ns,h,&type);
printf("\\nThe analog filter denominator coefficients of Ha(s):");
for(i=0;i<=ns;i++)
  printf("\\nb[%2d]=%16f",i,h[i]);

ptr=bsf(h,ns,f1,f2,nf,ptr,&nz);
printf("\\nThe digital filter coefficients of H(z):");
printf("\\n(a is numerator coefficient. b is denominator coefficient.)");
for(i=0;i<=nz;i++)
  printf("\\na[%2d]=%10f,b[%2d]=%16f",i,ptr->a[i],i,ptr->b[i]);

printf("\\n\\nPress any key to calculate the filter response of H(z)...");
getch();
printf("\\nWaitting for calculating...");


/* Calculate the magnitude-frequency response*/
for(k=0;k<=N;k++){
  jw=k*PI/N;
   hwdb1.real=0;hwdb1.image=0;
   hwdb2.real=0;hwdb2.image=0;
   for(i=0;i<=nz;i++){
    hwdb1.real+=ptr->a[i]*cos(i*jw);
    hwdb2.real+=ptr->b[i]*cos(i*jw);
    hwdb1.image+=ptr->a[i]*sin(i*jw);
    hwdb2.image+=ptr->b[i]*sin(i*jw);
   }
   amp1=(pow(hwdb1.real,2)+pow(hwdb1.image,2));
   amp2=(pow(hwdb2.real,2)+pow(hwdb2.image,2));
   if(amp1==0) amp1=1e-90;
   if(amp2==0) amp2=1e-90;
   hwdb[k]=10*log10(amp1/amp2);
   if(hwdb[k]<-200) hwdb[k]=-200;
   if(k%10==9) printf("*");
}

strcpy(title,"Transfer Property");
if(type==1) strcat(title,"(BW Type) N=");
if(type==2) strcat(title,"(CB Type) N=");
itoa(ns,tmp,10);
strcat(title,tmp);
strcpy(tmp,"PI(rad)");
draw_image(hwdb,N,title,"The Attenuation(dB)","0",tmp,0);

free(ptr->b);
free(ptr->a);
free(h);
free(hwdb);
free(f2);
free(f1);
}

/***************************************************************/
void lowpass_input(double *wp,double *ws,double *ap,double *ar,double *f1,double *f2,int *nf)
{
double fp,fr,fs;
printf("\\nPlease input the Fp,Ap,Fr,Ar,Fs value");
printf("\\nFp,Ap:Passband frequency(Hz) and MAXAttenuation(dB)");
printf("\\nFr,Ar:Stopband frequency(Hz) and MINAttenuation(dB)");
printf("\\nFs is the sample frequency(Hz)       Lowpass filter");
printf("\\nInput parameters Fp,Ap,Fr,Ar,Fs:");
scanf("%lf,%lf,%lf,%lf,%lf",&fp,ap,&fr,ar,&fs);
if((fp>fr)||(*ap>*ar)||(fs<2*fr)){
  do{
   sound(1000);delay(200);nosound();
   printf("Invalid input!  Please  Reinput:");
   scanf("%lf,%lf,%lf,%lf,%lf",&fp,ap,&fr,ar,&fs);
  }while((fp>fr)||(*ap>*ar)||(fs<2*fr));
}
*wp=tan(PI*fp/fs);
*ws=tan(PI*fr/fs);
*f1=-1.0;*(f1+1)=1.0;
*f2=1.0;*(f2+1)=1.0;
*nf=1;
}


/**********************************************************************************************/
void highpass_input(double *wp,double *ws,double *ap,double *ar,double *f1,double *f2,int *nf)
{
double fp,fr,fs;
printf("\\nPlease input the Fp,Ap,Fr,Ar,Fs value");
printf("\\nFp,Ap:Passband frequency(Hz) and MAXAttenuation(dB)");
printf("\\nFr,Ar:Stopband frequency(Hz) and MINAttenuation(dB)");
printf("\\nFs is the sample frequency(Hz)       highpass filter");
printf("\\nInput parameters Fp,Ap,Fr,Ar,Fs:");
scanf("%lf,%lf,%lf,%lf,%lf",&fp,ap,&fr,ar,&fs);
if((fp<fr)||(*ap>*ar)||(fs<2*fp)){
  do{
   sound(1000);delay(200);nosound();
   printf("Invalid input!  Please  Reinput:");
   scanf("%lf,%lf,%lf,%lf,%lf",&fp,ap,&fr,ar,&fs);
  }while((fp<fr)||(*ap>*ar)||(fs<2*fr));
}
*wp=fabs(1/tan(PI*fp/fs));
*ws=fabs(1/tan(PI*fr/fs));
*f1=1.0;*(f1+1)=1.0;
*f2=-1.0;*(f2+1)=1.0;
*nf=1;
}


/**********************************************************************************************/
void bandpass_input(double *wp,double *ws,double *ap,double *ar,double *f1,double *f2,int *nf)
{
double fp1,fp2,fr1,fr2,fs,wp1,wp2,wr1,wr2,cw0,pwp1,pwp2,pws1,pws2;
printf("\\nPlease input the Fp1,Fp2,Ap,Fr1,Fr2,,Ar,Fs value");
printf("\\nFp1,Fp2,Ap:Passband frequency(Hz) and MAXAttenuation(dB)");
printf("\\nFr1,Fr2,Ar:Stopband frequency(Hz) and MINAttenuation(dB)");
printf("\\nFs is the sample frequency(Hz)       bandpass filter");
printf("\\nInput parameters Fp1,Fp2,Ap,Fr1,Fr2,Ar,Fs:");
scanf("%lf,%lf,%lf,%lf,%lf,%lf,%lf",&fp1,&fp2,ap,&fr1,&fr2,ar,&fs);
if((fp1>fp2)||(fp1<fr1)||(fp2>fr2)||(*ap>*ar)||(fs<2*fr2)){
  do{
   sound(1000);delay(200);nosound();
   printf("Invalid input!  Please  Reinput:");
   scanf("%lf,%lf,%lf,%lf,%lf,%lf,%lf",&fp1,&fp2,ap,&fr1,&fr2,ar,&fs);
  }while((fp1>fp2)||(fp1<fr1)||(fp2>fr2)||(*ap>*ar)||(fs<2*fr2));
}
wp1=2*PI*fp1/fs;wr1=2*PI*fr1/fs;
wp2=2*PI*fp2/fs;wr2=2*PI*fr2/fs;
cw0=sin(wp1+wp2)/(sin(wp1)+sin(wp2));
pwp1=fabs((cw0-cos(wp1))/sin(wp1));
pws1=fabs((cw0-cos(wr1))/sin(wr1));
pwp2=fabs((cw0-cos(wp2))/sin(wp2));
pws2=fabs((cw0-cos(wr2))/sin(wr2));
if(fabs(pws1-pwp1)<fabs(pws2-pwp2)){
  *wp=pws1;
  *ws=pws1;

}
else{
  *wp=pwp2;
  *ws=pws2;
}
*f1=1.0;*(f1+1)=-2.0*cw0;*(f1+2)=1.0;
*f2=-1.0;*(f2+1)=0.0*cw0;*(f2+2)=1.0;
*nf=2;
}

/**************************************************************************
bcg-Chebyshev 和 Butterworth 型模擬原型傳輸函數生成子程序
      即程序得到系統(tǒng)函數 H(s).
   輸出格式為:

****************************************************************************/
double *bcg(double ap,double as,double wp,double ws,int *n,double *h,int *type)
{
int i,j,k;
double a,c,e,p,q,x,y,wc,cs1,cs2;
COMPLEX *b;
double pp[20];
double xs[8][8]={{1.0},
{1.0,1.41421356},
{1.0,2.0,2.0},
{1.0,2.61312593,3.41421356,2,61312593},
{1.0,3.23606789,5.23606789,5.23606789,3.23606789},
{1.0,3.86370331,7.46410162,9.14162017,7.46410162,3.86370331},
{1.0,4.49395921,10.09783468,14.59179389,14.59579389,10.09783468,4.49395921},
{1.0,5.12583090,13.13707118,21.84615097,25.68835593,21.84615097,13.13707118,5.12583090}};

printf("\\nTYPE        1.Butterworth        2.Chebyshev?(1/2):");
scanf("%d",type);
if(*type==2){
  c=sqrt(pow(10,as/10.0)-1.0);
  e=sqrt(pow(10,ap/10.0)-1.0);
  *n=(int)(fabs(FNCCH(c/e)/FNCCH(ws/wp))+0.99999);
  b=(COMPLEX*)calloc(*n+2,sizeof(COMPLEX));
  if(b==NULL){
   printf("\\nNot enough memory to allocate!");
   exit(0);
  }
  wc=wp;
  a=pow(wc,(*n))/(e*pow(2.0,(*n)-1));
  q=1/e;
  x=FNSSH(q)/(*n);
  for(i=0;i<*n;i++){
   y=(2.0*i+1.0)*PI/(2.0*(*n));
   (b+i)->real=-wc*FNSH1(x)*sin(y);
   (b+i)->image=-wc*FNCH1(x)*cos(y);
  }
}
else{
  c=(pow(10.0,(0.1*ap))-1.0)/(pow(10.0,(0.1*as))-1.0);
  *n=(int)(fabs(log(c)/log(wp/ws)/2.0)+0.99999);
  b=(COMPLEX *)calloc(*n+2,sizeof(COMPLEX));
  if(b==NULL){
   printf("\\nNot enough memory to allocate!");
   exit(0);
  }
  wc=wp/pow(pow(10.0,0.1*ap)-1.0,1.0/(2.0*(*n)));
  a=pow(wc,(double)(*n));
  for(i=0;i<*n;i++){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一级大片网址| 日本少妇一区二区| 不卡电影一区二区三区| 欧美国产一区二区| 波多野结衣中文字幕一区二区三区| 国产欧美精品一区二区三区四区| 国产91丝袜在线播放九色| 国产精品久久久久aaaa樱花| 91久久线看在观草草青青| 亚洲18色成人| 精品国产91久久久久久久妲己| 国产一区二区三区电影在线观看 | 在线视频国内自拍亚洲视频| 亚洲一区视频在线| 欧美一区二区高清| 高清不卡在线观看| 亚洲毛片av在线| 日韩免费电影一区| av亚洲精华国产精华精华 | 亚洲国产综合人成综合网站| 91精品国产综合久久精品麻豆| 国内精品国产三级国产a久久| 国产精品系列在线| 欧美高清激情brazzers| 国产一区二区精品在线观看| 亚洲精品你懂的| 日韩一卡二卡三卡国产欧美| 波多野结衣在线一区| 日本不卡视频在线| 亚洲欧美另类在线| 久久久亚洲高清| 欧美日韩亚洲综合在线| 国产精品亚洲视频| 婷婷开心激情综合| |精品福利一区二区三区| 3d动漫精品啪啪| 99国产精品99久久久久久| 美女网站色91| 亚洲自拍欧美精品| 精品99999| 欧美老女人第四色| 99精品欧美一区二区三区小说| 天堂资源在线中文精品| 中文字幕一区二区三区不卡| 日韩精品中文字幕一区二区三区| 日本二三区不卡| 99热99精品| 国产一区二区福利视频| 日韩国产欧美在线观看| 亚洲伊人伊色伊影伊综合网| 欧美国产1区2区| 亚洲精品在线电影| 日韩一卡二卡三卡| 91麻豆精品国产无毒不卡在线观看| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | caoporn国产一区二区| 久久电影网电视剧免费观看| 亚洲一区二区三区免费视频| 国产精品短视频| 国产精品无人区| 日本一区二区三区四区 | 欧美日本在线看| 欧美做爰猛烈大尺度电影无法无天| 懂色av一区二区三区免费观看 | 不卡一区二区中文字幕| 国产乱人伦偷精品视频免下载| 日产国产高清一区二区三区| 亚洲午夜免费视频| 亚洲香肠在线观看| 午夜不卡av免费| 亚洲国产美女搞黄色| 亚洲国产精品一区二区尤物区| 亚洲男人的天堂在线观看| 国产精品久久久久一区二区三区| 国产亚洲一区二区三区四区| 久久亚区不卡日本| 久久精品欧美日韩| 国产欧美日韩久久| 国产精品狼人久久影院观看方式| 国产欧美日韩麻豆91| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲成av人片www| 亚洲国产精品久久人人爱| 亚洲成人av一区| 人禽交欧美网站| 国产一区二区三区国产| 成人精品免费视频| 一本久久综合亚洲鲁鲁五月天| 91视频一区二区三区| 欧美性猛交xxxx乱大交退制版 | 亚洲品质自拍视频| 亚洲综合一区二区三区| 婷婷一区二区三区| 久久66热re国产| 成人综合婷婷国产精品久久 | 午夜欧美大尺度福利影院在线看| 午夜精品久久久久久久蜜桃app| 日韩精品午夜视频| 国产一区欧美二区| 91色在线porny| 欧美日韩成人在线| 久久众筹精品私拍模特| 国产精品美女久久久久aⅴ国产馆| 亚洲欧美色综合| 秋霞电影一区二区| 高清beeg欧美| 欧美色综合久久| 久久久久青草大香线综合精品| 中文字幕一区二区三区在线不卡| 亚洲福利一区二区| 夫妻av一区二区| 欧美群妇大交群中文字幕| 久久久99久久| 香蕉成人啪国产精品视频综合网| 久久99久久99精品免视看婷婷| 成人午夜免费电影| 777欧美精品| 国产精品视频一二| 人人狠狠综合久久亚洲| 成人av在线一区二区三区| 欧美精品一级二级| 国产精品每日更新在线播放网址| 亚州成人在线电影| 99精品视频在线播放观看| 欧美不卡一区二区三区四区| 国产精品萝li| 激情综合色综合久久| 欧美日韩你懂得| 亚洲国产成人午夜在线一区| 天堂一区二区在线| 不卡的av中国片| 精品1区2区在线观看| 夜夜揉揉日日人人青青一国产精品| 极品瑜伽女神91| 欧美日韩国产首页| 中文字幕一区二区三区在线观看| 久久超级碰视频| 欧美裸体bbwbbwbbw| 亚洲黄色录像片| 99视频国产精品| 国产精品系列在线| 国产精品99久久久| 欧美一级欧美三级| 五月综合激情网| 91搞黄在线观看| 自拍偷拍国产亚洲| 盗摄精品av一区二区三区| 久久午夜电影网| 激情成人综合网| 日韩欧美一级片| 午夜激情久久久| 欧美日韩国产在线观看| 亚洲一区二区三区四区在线观看| 波多野结衣在线一区| 中文字幕的久久| 国产福利一区二区三区视频| 精品久久久久久久久久久久久久久| 亚洲va欧美va人人爽| 欧美日韩免费视频| 亚洲一卡二卡三卡四卡无卡久久 | 婷婷开心激情综合| 5月丁香婷婷综合| 五月综合激情日本mⅴ| 欧美精品一二三四| 免费在线观看一区二区三区| 欧美一区国产二区| 免费高清在线一区| 欧美xxxxx牲另类人与| 久久精品久久久精品美女| 日韩女优毛片在线| 韩国v欧美v日本v亚洲v| 久久综合色之久久综合| 国产激情一区二区三区四区| 亚洲国产岛国毛片在线| 99久久亚洲一区二区三区青草| 亚洲国产精品二十页| 99国产精品视频免费观看| 一区二区三区在线观看国产| 欧洲一区二区av| 首页综合国产亚洲丝袜| 欧美一卡2卡3卡4卡| 韩国成人在线视频| 欧美经典三级视频一区二区三区| 波多野结衣欧美| 亚洲综合一区二区精品导航| 欧美日本在线播放| 国产主播一区二区| 国产精品久久久久影院| 欧美日韩在线亚洲一区蜜芽| 蜜桃一区二区三区在线| 久久久久99精品一区| 92精品国产成人观看免费| 亚洲国产一区二区视频| 欧美videossexotv100| 国产成人免费在线视频| 亚洲桃色在线一区| 欧美一区二区三区四区五区| 国产精品一线二线三线| 亚洲人成人一区二区在线观看| 91麻豆精品国产91|