实验二 连续时间系统的频率响应Word文件下载.docx
《实验二 连续时间系统的频率响应Word文件下载.docx》由会员分享,可在线阅读,更多相关《实验二 连续时间系统的频率响应Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
#include "
graphics、h"
float atannew(floatt1,floatt2);
intmain()
{
floatz[10][2],p[10][2],out[100][3],f[50];
inta,iout;
int i,itemp,k,ktemp,j,m,n;
ﻩfloatw,temp1,temp2,prew,pretemp1,pretemp2,ptemp,h,fout;
ﻩintgdriver,gmode=0;
ﻩchars[10];
gdriver=0;
/**/
for(i=0;
i<
=10;
i++)
{
a=scanf("
%f %fj"
&z[i][0],&
z[i][1]);
ﻩ if(a!
=0);
else
ﻩ{
ﻩfflush(stdin);
/*清空输入缓冲区,使得第二个scanf不被忽略*/
for(k=0;
k<
=10;
k++)
ﻩﻩ{
a=scanf("%f%fj",&
p[k][0],&p[k][1]);
if(a!
=0);
else
ﻩﻩﻩbreak;
ﻩ}
ﻩbreak;
ﻩ}
ﻩ}
/**/
ﻩinitgraph(&gdriver,&
gmode,"e:
\\tc\\bgi");
ﻩsetbkcolor(10);
setcolor(4);
setlinestyle(1,0,1);
rectangle(50,20,600,420);
for(ptemp=20;
ptemp<
=420;
ptemp=ptemp+50)
line(50,ptemp,600,ptemp);
for(ptemp=50;
ptemp<
=600;
ptemp=ptemp+50)
line(ptemp,20,ptemp,420);
setlinestyle(0,0,1);
setcolor
(1);
line(200,20,200,420);
line(50,420,600,420);
line(200,20,190,30);
line(200,20,210,30);
outtextxy(210,30,"
A"
);
line(600,420,590,410);
line(600,420,590,430);
outtextxy(600,430,"
w"
for(iout=0;
iout<
=5;
iout++)
{
sprintf(s,"
%d",iout);
outtextxy(iout*50+200,430,s);
}
for(fout=1、0;
fout<
=8;
fout=fout+1)
ﻩsprintf(s,"
%.1f"
fout/10);
outtextxy(170,420-fout*50,s);
}
setcolor(4);
/*printf("
w幅度 相角\n"
);
*/
ﻩfor(w=0,j=0;
w<
=5、0;
j++)
{
ﻩﻩtemp1=1;
for(itemp=0;
itemp<
=i-1;
itemp++)
ﻩﻩﻩtemp1=temp1*sqrt(z[itemp][0]*z[itemp][0]+(z[itemp][1]-w)*(z[itemp][1]-w));
ﻩfor(ktemp=0;
ktemp<=k-1;
ktemp++)
ﻩﻩﻩtemp1=temp1/sqrt(p[ktemp][0]*p[ktemp][0]+(p[ktemp][1]-w)*(p[ktemp][1]-w));
ﻩ
out[j][0]=w;
out[j][1]=temp1;
if(j>
0)
ﻩline(prew*40+200,420-pretemp1*500,w*40+200,420-temp1*500);
prew=w;
pretemp1=temp1;
w=w+0、1;
for(m=0;
m<
=50;
m++)
{
if(out[m][1]>
out[m+1][1])
ﻩ break;
}
printf("
%.4f,%f"
,out[m][1],out[m][0]);
line(100,420-out[m][1]/sqrt
(2)*500,500,420-out[m][1]/sqrt(2)*500);
getch();
closegraph();
initgraph(&
gdriver,&gmode,"
e:
\\tc\\bgi");
setbkcolor(10);
setcolor(4);
setlinestyle(1,0,1);
rectangle(50,20,600,420);
for(ptemp=20;
ptemp<
=420;
ptemp=ptemp+50)
line(50,ptemp,600,ptemp);
for(ptemp=50;
ptemp=ptemp+50)
line(ptemp,20,ptemp,420);
for(w=0,j=0;
w<
j++)
temp2=0;
ﻩfor(ktemp=0;
ktemp<=k-1;
ktemp++)
temp2=temp2-atannew(-p[ktemp][0],w-p[ktemp][1]);
ﻩﻩfor(itemp=0;
itemp<
=i-1;
itemp++)
ﻩtemp2=temp2+atannew(-z[itemp][0],w-z[itemp][1]);
ﻩ
ﻩif(temp2>
=180)
ﻩtemp2=temp2-360;
elseif(temp2<
=-180)
ﻩﻩ temp2=temp2+360;
ﻩout[j][2]=temp2;
ﻩ
if(j>
0)
ﻩline(prew*50+200,180+pretemp2,w*50+200,180+temp2);
ﻩﻩprew=w;
pretemp2=temp2;
ﻩﻩw=w+0、1;
ﻩ}
getch();
closegraph();
for(j=0;
j<=50;
j++)
printf("%.2f,%.4f,%.2f***",out[j][0],out[j][1],out[j][2]);
printf("
\n\n"
for(n=0,j=0;
n<
n++)
ﻩf[n]=fabs(out[m][1]/sqrt
(2)-out[n][1]);
for(n=0,h=f[0],j=0;
=m;
n++)
ﻩif(h>
f[n])
{
h=f[n];
ﻩ j=n;
ﻩ }
}
printf("
Fl=%.1f\n",out[j][0]);
for(n=m,h=f[0],j=0;
n<
=50;
n++)
if(h>
f[n])
{
h=f[n];
j=n;
ﻩ}
}
printf("
Fh=%.1f"
out[j][0]);
getch();
return0;
}
floatatannew(floatt1,float t2)
{
if(t1>
0&&
t2>
returnatan(t2/t1)/3、14*180;
ﻩelseif(t1<
0&&
t2<
return180+atan(t2/t1)/3、14*180;
ﻩelseif(t1<0&
&t2>
return180+atan(t2/t1)/3、14*180;
ﻩelseif(t1>
0&
&
t2<0)
ﻩreturnatan(t2/t1)/3、14*180;
elseif(t1==0&&
t2>0)
return90;
ﻩelseif(t1==0&
t2<0)
ﻩreturn-90;
ﻩelse if(t1==0&
t2==0)
return0;
else if(t1>0&
t2==0)
return180;
elseif(t1<
t2==0)
ﻩ return-180;
五.实验数据及所绘图形
零点z1=0;
极点p1=-1-j,p2=-1+j
w
|H(jw)|
φ(jw)
|H(jw)|
φ(jw)
0、1
0、049999
84、2671
2、6
0、368813
-42、4736
0、2
0、09998
78、47115
2、7
0、357173
-44、4137
0、3
0、149848
72、56595
2、8
0、34606
-46、2052
0、4
0、199363
66、50633
2、9
0、335472
-47、8636
0、5
0、248069
60、25955
3
0、325396
-49、4023
0、6
0、295255
53、81075
3、1
0、315814
-50、8334
0、7
0、339946
47、16826
3、2
0、306705
-52、1674
0、8
0、38097
40、3675
3、3
0、298046
-53、4135
0、9
0、417092
33、47159
3、4
0、289812
-54、5799
1
0、447214
26、567
3、5
0、281981
-55、6739
1、1
0、47058
19、7542
3、6
0、274528
-56、7019
1、2
0、486921
13、13498
3、7
0、267431
-57、669