请求高手编译一下程序,
程序如下
/* 用DFT分析正弦信号频谱的C语言程序 */
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<graphics.h>
#define PI 3.1415926
float x[1024],y[1024], w[1024];
void draw(int);
void axis(int,int);
main()
{
int N,f,n,k;
float T,r,i,c;
/* 键盘输入f、N、T */
printf("The frequency of the Sine wave f=");
scanf("%d",&f); printf("The number of samples N=");
scanf("%d",&N);
printf("The sampling period T=");
scanf("%f",&T);
c=2*PI/N;
/* 产生正弦抽样信号 */
for(n=0;n<N;n++){
x[n]=sin(2*PI*f*n*T);
}
/* 计算DFT */
for(k=0;k<N;k++){
r=i=0.0;
for(n=0;n<N;n++){
r=r+x[n]*cos(c*n*k);
i=i+x[n]*sin(c*n*k);
}
y[k]=r;
w[k]=i;
}
/* 计算DFT的幅度 */
for(k=0;k<N;k++){
w[k]=sqrt(y[k]*y[k]+w[k]*w[k]);
}
/* 画频谱图 */
draw(N);
getch();
closegraph();
}
void draw(int N) /* 作图 */
{
int k,driver,mode,step,x,y;
driver=VGA;
mode=VGAHI;
step=512/N;
x=64;
y=400;
registerbgidriver(driver);
initgraph(&driver,&mode,"c:\\tc");
/* 绘制坐标及刻度 */
axis(x,y);
outtextxy((x+step+546),y+8,"k");
outtextxy((x+step-8),y-290,"X(k)");
outtextxy((x+step-8),y-234,"32");
outtextxy((x+step-8),y-121,"16");
outtextxy((x+step-19),y+8,
"0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1");
/* 绘制频谱图 */
for(k=0;k<N;k++){
line(x,y,x,(y-floor(w[k]*7)));
x+=step;
}
} void axis(int x,int y) /* 绘制横轴与纵轴 */
{
line(10,y,630,y);
line(610,(y-4),630,y);
line(610,(y+4),630,y);
line(x,(y+20),x,(y-280));
line((x-4),(y-260),64,120);
line((x+4),(y-260),64,120);
}
我的软件总是提示错误 |