📄 xnhnjiadian.txt
字号:
#include"graphics.h"
#include"math.h"
#include"stdio.h"
void figure(float x[],int m);
void figure1(float x[],int m);
void DO(float m[],int n);
void dft(float x[],int m,float rx[],float cx[])
{
int k,n;
for(k=0;k<=m-1;k++)
{
rx[k]=0;cx[k]=0;
for(n=0;n<=m-1;n++)
{rx[k]=rx[k]+x[n]*(cos(2*3.14*n*k/m));
cx[k]=cx[k]-x[n]*(sin(2*3.14*n*k/m));
}
}
}
void idft(float rx[],float cx[],int m,float ry[],float cy[])
{
int k,n;
rx[k]=0;cx[k]=0;ry[k]=0;cy[k]=0;
for(k=0;k<=m-1;k++)
{
for(n=0;n<=m-1;n++)
{ ry[k] += rx[n]*cos(2*3.14*n*k/m) - cx[n]*sin(2*3.14*n*k/m);
cy[k] += cx[n]*cos(2*3.14*n*k/m) + rx[n]*sin(2*3.14*n*k/m);
}
}
for (k=0; k<m; k++)
{
ry[k]=ry[k]/m;
cy[k]=cy[k]/m;
}
}
main()
{int n=0;int m=32;float ry[80]={0};float cy[80]={0};float y[80]={0};
float rx1[80]={0},cx1[80]={0},rx2[80]={0},cx2[80]={0},b[80]={0};
float rz[80]={0},cz[80]={0},x3[80]={0},x4[80]={0},y3[80]={0};
float x[50]={0}, h[50]={0};
for(n=0;n<32;n++)
{x[n]=n+1;
h[n]=1;
}
for(n=32;n<63;n++)
{x[n]=0;
h[n]=0;
}
dft(h,63,rx2,cx2);
dft(x,63,rx1,cx1);
for(n=0;n<63;n++)
{rz[n]=rx1[n]*rx2[n]-cx1[n]*cx2[n]; /*频域乘积的实部*/
cz[n]=rx1[n]*cx2[n]+rx2[n]*cx1[n];
} /*频域乘积的虚部*/
printf("\nidft\n");
idft( rz,cz,63, ry, cy);
for(n=0;n<63;n++)
b[n]=sqrt(ry[n]*ry[n]+cy[n]*cy[n]);
figure1(b,63);
getch();
closegraph();
}
void figure(float x[],int m)/*m为序列数*/
{
int gdriver,gmode,i;float mul=0;
gdriver=VGA;
gmode=VGAHI;
initgraph(&gdriver,&gmode,"");
setfillstyle(0,1);
bar(0,0,640,640);
setcolor(2);
outtextxy(600,460,"n");
outtextxy(10,20,"signal");
line(10,460,610,460);
line(10,200,10,500);
for(i=0;i<m;i++)
{if(x[i]>mul)mul=x[i];}
mul=mul/220;
for(i=0;i<m;i++)
{setcolor(2);
line(600/m*i+10,460-x[i]/mul,600/m*i+10,460);}
}
void DO(float m[],int n)
{
float RX[60]={0},CX[60]={0},X[60]={0};int i;
printf("print the signal?\n");getch();
figure(m,n);outtextxy(50,500,"signal");
}
void figure1(float x[],int m)/*m为序列数*/
{
int gdriver,gmode,i;float mul=0;
gdriver=VGA;
gmode=VGAHI;
initgraph(&gdriver,&gmode,"");
setfillstyle(0,1);
bar(0,0,640,640);
setcolor(2);
outtextxy(600,230,"n");
outtextxy(5,20,"signal");
line(10,240,610,240);
line(10,10,10,500);
for(i=0;i<m;i++)
{if(x[i]>mul)mul=x[i];}
mul=mul/240;
for(i=0;i<m;i++)
{setcolor(2);
line(600/m*i+10,240-x[i]/mul,600/m*i+10,240);}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -