实验二 连续时间系统的频率响应
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 连续时间系统的频率响应
39022622 龚小川
一.实验目的:
1. 进一步加深对连续时间系统频率响应理解;
2.掌握借助计算机计算任意连续时间系统频率响应的方法。
二.实验原理
1.本实验的基本内容就是将系统函数的幅频特性曲线以及相频特性曲线给画出来。
而系统函数∏∏==--=
n
i i
m
j j p s z s K s H 1
1
)
)
(()(,令jw s =,则∏∏==--=
n
i i
m
j j p jw z jw K jw H 1
1
)
)
(()(
∑∑∏∏∏∏======-=
=⇒=∑∑=⇒=-=-==n
i i
m
j j
n
i i
m
j j
w j n
i j i m
j j j j i i j j j w M
N
K
jw H e jw H e
M e
N K
jw H e M p jw e
N z jw n
i i m
j j i
j
1
1
1
1)
(1
]
[
1]
[
)(,)()()(,1
1
θψ
ϕϕθψθψ
即(1)计算所有零点模之积及极点模之积,两者之商即为)(s H 的幅度; (2)计算所有零点相角之和及极点相角之和,两者之差即为)(s H 的相角。 2.通过零极点图通过几何的方法来计算,而且通过零极点图可以迅速地判断系统的滤波特性。
通过零极点图进行计算的方法是: (1)在S 平面上标出系统的零极点位置;
(2)选择S 平面的坐标原点为起始点,沿虚轴向上移动,计算此时各极点和零点
与该点的膜和夹角;
(3)将所有零点的模相乘,再除以各极点的模,得到对应频率处的幅频特性的值; (4)将所有零点的幅角相加,减去各极点的幅角,得到对应频率处的相角。
三.实验流程图
j>m
, 否
是
输出temp1,即
为零点模之积
令j=0,temp1=1
i>n ?
,
否
是
输出temp2,即
为极点模之积
令i=0,temp2=1
输出temp1/temp2,极为H(s)之幅度
四.实验代码
#include "stdio.h" #include "math.h" #include "graphics.h"
float atannew(float t1,float t2); int main() { float z[10][2],p[10][2],out[100][3],f[50]; int a,iout; int i,itemp,k,ktemp,j,m,n; float w,temp1,temp2,prew,pretemp1,pretemp2,ptemp,h,fout; int gdriver,gmode=0; char s[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++)
j>m
否
是
输出temp1,即
为零点相角之和
令j=0,temp1=0
i>n ?
否
是
输出temp2,即
为极点相角之和
令i=0,temp2=0
输出temp1-temp2,极为H(s)之相角
{
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;