📄 fir.cpp
字号:
#include "firdf.h"
#include<stdio.h>
#include<malloc.h>
void main()
{
/*int N=43,Nbands=2;
double Edge[4]={0,0.3,0.35,0.5};
double Fx[2]={1.0,0.0};
double Wtx[2]={1.0,1.0};
double h[43],*p;
defirdf3(N,Nbands,Edge,Fx,Wtx,h);
p=h;
for(int i=0;i<N;i++,p++)
{
printf("h(%d)=%lf ",i,*p);
if(i%5==4)printf("\n");
}
printf("\n"); */
int N,Nbands; //N 单位抽样响应的长度 Nbands:通带和阻带的总数目
double *Edge; //滤波器的通带和阻带的带边归一化频率。
double *Fx; //理想滤波器通带和阻带的幅值。
double *Wtx; //对应通带和阻带的加权
double *h; //所求滤波器的单位抽样响应
double *p;
printf("请输入单位抽样响应的长度N(N<128,取奇数):");
scanf("%d",&N);
printf("\n请输入通带和阻带的总数目Nbands(NBands<10):");
scanf("%d",&Nbands);
Edge=(double *)malloc(sizeof(double)*(2*Nbands));
//Edge=new double(2*Nbands);
//p=Edge;p0=++p;
printf("\n请依次输入通带和阻带的带边归一化频率(0~0.5):");
for(int i=0;i<Nbands;i++)
{
printf("\n请输入带 %d 的下限截止频率和上限截止频率",i+1);
printf("\n(数据之间用逗号分割):");
scanf("%lf,%lf",&Edge[2*i],&Edge[2*i+1]);
}
Fx=(double *)malloc(sizeof(double)*Nbands);
//Fx=new double(Nbands);
p=Fx;
printf("\n请依次输入通带和阻带的幅值:");
for(i=0;i<Nbands;i++,p++)
{
printf("\n请输入带 %d 的幅值:",i+1);
scanf("%lf",p);
}
Wtx=(double *)malloc(sizeof(double)*Nbands);
//Wtx=new double(Nbands);
p=Wtx;
printf("\n请依次输入对应通带和阻带的加权:");
for(i=0;i<Nbands;i++,p++)
{
printf("\n请输入带 %d 的加权:",i+1);
scanf("%lf",p);
}
h=(double *)malloc(sizeof(double)*N);
//h=new double(N);
printf("\n单位抽样响应的长度:%d",N);
printf("\n通带和阻带的总数目:%d",Nbands);
printf("\n通带和阻带的带边归一化频率:\n");
p=Edge;
for(i=0;i<Nbands;i++,p++)
{
printf("带%d: %f %f ",i+1,*p++,*p);
if(i%3==2) printf("\n");
}
printf("\n通带和阻带的幅值:\n");
p=Fx;
for(i=0;i<Nbands;i++,p++)
{
printf("带 %d 幅值%f ",i+1,*p);
if(i%4==3) printf("\n");
}
printf("\n通带和阻带的加权:\n");
p=Wtx;
for(i=0;i<Nbands;i++,p++)
{
printf("带 %d 加权%f ",i+1,*p);
if(i%4==3) printf("\n");
}
defirdf3(N,Nbands,Edge,Fx,Wtx,h);
p=h;
for(i=0;i<N;i++,p++)
{
printf("h(%d)=%lf ",i,*p);
if(i%4==3)printf("\n");
}
printf("\n");
p=h;
for(i=0;i<N;i++,p++)
{
printf("%lf ",*p);
if(i%4==3)printf(" ...\n");
}
printf("\n");
free(Edge);free(Fx);free(Wtx);free(h);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -