信息工程实验报告3.docx

上传人:b****6 文档编号:5891920 上传时间:2023-01-01 格式:DOCX 页数:32 大小:21.17KB
下载 相关 举报
信息工程实验报告3.docx_第1页
第1页 / 共32页
信息工程实验报告3.docx_第2页
第2页 / 共32页
信息工程实验报告3.docx_第3页
第3页 / 共32页
信息工程实验报告3.docx_第4页
第4页 / 共32页
信息工程实验报告3.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

信息工程实验报告3.docx

《信息工程实验报告3.docx》由会员分享,可在线阅读,更多相关《信息工程实验报告3.docx(32页珍藏版)》请在冰豆网上搜索。

信息工程实验报告3.docx

信息工程实验报告3

实验18

0)这块具体忘了怎么按题分的了,大家自己研究一下吧

#include

#include

#defineNUM20

doublefunc1(doublet,double*fs)

{returnsin(8*atan

(1)*50*t/fs[0]+0.3);}

main()

{

inti,n,h,w,key,kv;

dcomplexx[20],X[20];

doublepi,sumx,sumy,AX[300],AY[300];

doublefs=50,dy;

charbuf[20],sbuf[30];

intdecpt,sign;

pi=4*atan

(1);

for(n=0;n

x[n].r=sin(2*pi*50*n/fs+0.3);

x[n].i=0;

line2(n*1.0,0.0,n*1.0,x[n].r);

}

dft_ccc(x,X,NUM,1);

getch();

}

initgd("");

window2("dfgt",-1.0,1.0,(double)NUM,-1.0,"t","f",WHITE,BLUE);

plotxy2(RED,func1,&fs);

setcolor(BLUE);

getch();

closegraph();

}

setviewport(0,h+10,2*w,2*h+10,1);

setcolor(WHITE);

rectangle(scrr,scrt,scrl,scrb);

setfillstyle(SOLID_FILL,YELLOW);

floodfill(scrr+2,scrt+2,WHITE);

window2(-1.0,50.0,(double)NUM,-2.0,WHITE,BLUE);setcolor(RED);

for(sumx=0,sumy=0,n=0;n

y=X[n].i*X[n].i+X[n].r*X[n].r;

sumx=sumx+x[n].r*x[n].r;

sumy=sumy+y;

y=sqrt(y);

AX[n]=n*1.0;

AY[n]=y;

line2(n*1.0,0.0,n*1.0,y);}

insPoly(AX+(int)(50*NUM/fs-5),AY+(int)(50*NUM/fs-5),10,50*NUM/fs,&y,&dy);

setcolor(GREEN);

line2(0.0,0.0,50*NUM/fs,0.0);

line2(50*NUM/fs,0.0,50*NUM/fs,y);

setviewport(0,2*h+20,2*w,3*h+30,1);*****/

printf("%f,,%f=%f$$$%f",fs,sumx,sumy/NUM,2*y*y/NUM);

outtextxy(10,0,"fs=");outtextxy(10+8*8,0,gcvt(fs,10,buf));

outtextxy(200,0,"M50=f*NUM/fs=");outtextxy(200+8*14,0,gcvt(50*NUM/fs,10,buf));

outtextxy(400,0,"NUM=");outtextxy(400+8*8,0,gcvt(NUM,10,buf));

outtextxy(10,20,"sumx2=");outtextxy(10+8*8,20,gcvt(sumx,10,buf));

outtextxy(10,40,"sumX2=");outtextxy(10+8*8,40,gcvt(sumy/NUM,10,buf));

outtextxy(10,60,"X50=");outtextxy(10+8*8,60,gcvt(2*y*y/NUM,10,buf));

outtextxy(200,30,"leak=");outtextxy(200+8*8,30,gcvt(sumx-2*y*y/NUM,10,buf));

setcolor(WHITE);

outtextxy(200,60,"q:

tobalustereffection,+:

fsincrease,-:

fsdecrease");

key=getch();

if(key=='+')kv=5;

elseif(key=='-')kv=-5;

elsekv=0;

}

cleardevice();

setviewport(0,0,2*w,h,1);window2(-1.0,1.0,(double)256,-1.0,WHITE,BLUE);

plotf_a2(RED,func1,&fs);

setcolor(GREEN);

for(n=0;n<250;n++){

x[n].r=sin(2*pi*50*n/fs+0.3);

x[n].i=0;

line2(n*1.0,0.0,n*1.0,x[n].r);}

dft_ccc(x,X,250,1);

setviewport(0,h+10,2*w,2*h+10,1);

window2(-1.0,50.0,(double)250,-2.0,WHITE,BLUE);setcolor(RED);

for(sumx=0,sumy=0,n=0;n<250;n++){

y=X[n].i*X[n].i+X[n].r*X[n].r;

y=sqrt(y);

line2(n*1.0,0.0,n*1.0,y);}

for(n=250;n<256;n++)

{x[n].r=0;x[n].i=0;}

fft_ccc(x,256,1);

setviewport(0,2*h+20,2*w,3*h+30,1);

window2(-1.0,50.0,(double)256,-2.0,WHITE,BLUE);setcolor(RED);

for(sumx=0,sumy=0,n=0;n<256;n++){

y=x[n].i*X[n].i+x[n].r*x[n].r;

y=sqrt(y);

line2(n*1.0,0.0,n*1.0,y);}

 

1)

#include

#include

#defineNUM100

#definePI4*atan

(1)

main()

{

inti,n;

dcomplexx[NUM],X[NUM];

/*doublepi;*/

doublefs=100;

doublesumT,sumF;

doubleEt,Ef;

/*pi=4*atan

(1);*/

for(n=0;n

{

x[n].r=sin(2*PI*50*n/fs+0.5);

x[n].i=0;

}

initgd("");

window2("draw1DFTdatagraph",-1,-2,10,2,"n","x[n]",BLUE,GREEN);

setcolor(RED);

for(n=0;n

/*for(n=0;n

getch();

dft_ccc(x,X,NUM,1);

dft_ccc(X,x,NUM,-1);

setcolor(GREEN);

for(n=0;n

/*for(n=0;n

getch();

initgd("");

window2("draw1DFTdatagraph",-1,50,100,-2,"n","x5[n]",BLUE,GREEN);

setcolor(RED);

for(n=0;n

/*for(n=0;n

getch();

closegraph();

for(sumT=0,sumF=0,Et=0,Ef=0,n=0;n

{

sumT=sumT+x[n].r*x[n].r;

sumF=sumF+X[n].r*X[n].r+X[n].i*X[n].i;

if(n==50)

{

Et=2*x[50].r*x[50].r;

Ef=2*(X[50].r*X[50].r+X[50].i*X[50].i)/(NUM);

}

}

printf("sumT=%f,sumF=%f\n",sumT,sumF/(NUM));

printf("Et=%f,Ef=%f\n",Et,Ef);

getch();

}

 

2)

#include

#include

#defineNUM100

#definePI4*atan

(1)

main()

{

inti,n;

dcomplexx[NUM],X[NUM];

doublefs=110;

doublesumT,sumF;

doubleEt,Ef;

for(n=0;n

{

x[n].r=sin(2*PI*50*n/fs+0.5);

x[n].i=0;

}

initgd("");

window2("draw2DFTdatagraph",-1,-2,100,5,"n","x[n]",BLUE,GREEN);

setcolor(RED);

for(n=0;n

/*for(n=0;n

getch();

dft_ccc(x,X,NUM,1);

dft_ccc(X,x,NUM,-1);

setcolor(GREEN);

for(n=0;n

/*for(n=0;n

getch();

initgd("");

window2("draw2DFTdatagraph",-1,50,100,-2,"n","x5[n]",BLUE,GREEN);

setcolor(RED);

for(n=0;n

/*for(n=0;n

getch();

closegraph();

for(sumT=0,sumF=0,Et=0,Ef=0,n=0;n

{

sumT=sumT+x[n].r*x[n].r;

sumF=sumF+X[n].r*X[n].r+X[n].i*X[n].i;

if(n==50)

{

Et=2*x[50].r*x[50].r;

Ef=2*(X[50].r*X[50].r+X[50].i+X[50].i)/NUM;

}

}

printf("sumT=%f,sumF=%f\n",sumT,sumF/(NUM));

printf("Et=%f,Ef=%f\n",Et,Ef);

getch();}

3)

#include

#include

#defineNUM100

#definePI4*atan

(1)

 

main()

{

inti,n;

dcomplexx[NUM],X[NUM];

doublefs=200;

doublesumT,sumF;

doubleEt,Ef;

for(n=0;n

{

x[n].r=sin(2*PI*50*n/fs+0.5);

x[n].i=0;

}

initgd("");

window2("draw3DFTdatagraph",-1,-2,100,5,"n","x[n]",BLUE,GREEN);

setcolor(RED);

for(n=0;n

/*for(n=0;n

getch();

dft_ccc(x,X,NUM,1);

dft_ccc(X,x,NUM,-1);

setcolor(GREEN);

for(n=0;n

/*for(n=0;n

getch();

initgd("");

window2("draw3DFTdatagraph",-1,50,100,-2,"n","x5[n]",BLUE,GREEN);

setcolor(RED);

for(n=0;n

/*for(n=0;n

getch();

closegraph();

for(sumT=0,sumF=0,Et=0,Ef=0,n=0;n

{

sumT=sumT+x[n].r*x[n].r;

sumF=sumF+X[n].r*X[n].r+X[n].i*X[n].i;

if(n==50)

{

Et=2*x[50].r*x[50].r;

Ef=2*(X[50].r*X[50].r+X[50].i*X[50].i)/NUM;

}

}

printf("sumT=%f,sumF=%f\n",sumT,sumF/(NUM));

printf("Et=%f,Ef=%f\n",Et,Ef);

getch();

}

 

4)

#include

#include

#defineNUM100

#definePI4*atan

(1)

main()

{

inti,n;

dcomplexx[NUM],X[NUM];

doublefs=230;

doublesumT,sumF;

doubleEt,Ef;

for(n=0;n

{

x[n].r=sin(2*PI*50*n/fs+0.5);

x[n].i=0;

}

initgd("");

window2("draw4DFTdatagraph",-1,-2,100,5,"n","x[n]",BLUE,GREEN);

setcolor(RED);

for(n=0;n

/*for(n=0;n

getch();

dft_ccc(x,X,NUM,1);

dft_ccc(X,x,NUM,-1);

setcolor(GREEN);

for(n=0;n

/*for(n=0;n

getch();

initgd("");

window2("draw4DFTdatagraph",-1,50,100,-2,"n","x[n]",BLUE,GREEN);

setcolor(RED);

for(n=0;n

/*for(n=0;n

getch();

closegraph();

for(sumT=0,sumF=0,Et=0,Ef=0,n=0;n

{

sumT=sumT+x[n].r*x[n].r;

sumF=sumF+X[n].r*X[n].r+X[n].i*X[n].i;

if(n==50)

{

Et=2*x[50].r*x[50].r;

Ef=2*(X[50].r*X[50].r+X[50].i*X[50].i)/NUM;

}

}

printf("sumT=%f,sumF=%f\n",sumT,sumF/(NUM));

printf("Et=%f,Ef=%f\n",Et,Ef);

getch();

}

 

5)

#include

#include

#defineNUM100

#definePI4*atan

(1)

main()

{

inti,n;

dcomplexx[NUM],X[NUM];

doublefs=250;

doublesumT,sumF;

doubleEt,Ef;

for(n=0;n

{

x[n].r=sin(2*PI*50*n/fs+0.5);

x[n].i=0;

}

initgd("");

window2("draw5DFTdatagraph",-1,-2,100,5,"n","x[n]",BLUE,GREEN);

setcolor(RED);

for(n=0;n

/*for(n=0;n

getch();

dft_ccc(x,X,NUM,1);

dft_ccc(X,x,NUM,-1);

setcolor(GREEN);

for(n=0;n

/*for(n=0;n

getch();

initgd("");

window2("draw5DFTdatagraph",-1,50,100,-2,"n","x[n]",BLUE,GREEN);

setcolor(RED);

for(n=0;n

/*for(n=0;n

getch();

closegraph();

for(sumT=0,sumF=0,Et=0,Ef=0,n=0;n

{

sumT=sumT+x[n].r*x[n].r;

sumF=sumF+X[n].r*X[n].r+X[n].i*X[n].i;

if(n==50)

{

Et=2*x[50].r*x[50].r;

Ef=2*(X[50].r*X[50].r+X[50].i*X[50].i)/NUM;

}

}

printf("sumT=%f,sumF=%f\n",sumT,sumF/(NUM));

printf("Et=%f,Ef=%f\n",Et,Ef);

getch();}

实验19和21

19

#include

voidconvol(double*x,intN,double*h,intM,double*y,intL)

/*y[0]..y[L-1],x[0]..x[N-1],h[0]..h[M-1];general:

L=M+N-1;

as:

0<=k<=M+N-2,0<=n-k<=M-1,0<=k<=N-1

so:

K>=0,K>=n-M+1;

k<=N-1,K<=n;*/

{

intn,k,kk;

for(n=0;n

for(k=(n>=M)?

n-M+1:

0,kk=(N>n)?

n:

N-1,y[n]=0;k<=kk;k++)

y[n]+=x[k]*h[n-k];

}

doubleyuanshi(doublet,doubley[],intL)

{if(t>=0&&t<=L)returny[(int)t];

elsereturn0;

}

doubledaifushu(doublet,dcomplex*y,intL)

{if(t>=0&&t<=L)returnsqrt(y[(int)t].r*y[(int)t].r+y[(int)t].i*y[(int)t].i);

elsereturn0;

}

main()

{

intN=5,M=3,L=10,i,a;/*n,gd=VGA,gm=1,w,key,kv;*/

doublex[8]={1,2,3,4,5},h[8]={3,2,1},y[20];

dcomplexf[8]={1,0,2,0,3,0,4,0,5,0};

dcomplexr[8]={3,0,2,0,1,0,0,0};

initgd("C:

\xxgc");

 

/***step1***/

window2("functionconvolution",

-1,100,30,0,

"t","f",RED,BLUE);

printf("

(1)directlyconvolution...\n");

convol(h,M,x,N,y,L);

for(i=0;i

plotxy2(RED,yuanshi,y,L);

getch();

clearviewport();

clrscr();

 

/***step2***/

window2("functionconvolution",

-1,100,30,0,

"t","f",RED,BLUE);

printf("

(2)fftconvolution\n");

for(i=M+N-1,L=1;i!

=0;){i=i>>1

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1