实验报告
实验名称:连续时间系统的频率响应
一、实验目的:
1 加深对连续时间系统频率响应理解;
2 掌握借助计算机计算任意连续时间系统频率响应的方法。
二、实验原理:
连续时间系统的频率响应可以直接通过所得表达式计算,也可以通过零极点 图通过用几何的方法来计算,而且通过零极点图可以迅速地判断系统的滤波特 性。
根据系统函数H(s)在s 平面的零、极点分布可以绘制频响特性曲线,包括幅 频特性 H(jw) 曲线和相频特性?(w)曲线。这种方法的原理如下: 假定,系统函数H(s)的表达式为
当收敛域含虚轴时,取s = jw,也即在s 平面中,s 沿虚轴从- j∞移动到+ j∞时, 得到
容易看出,频率特性取决于零、极点的分布,即取决于Zj 、Pi 的位置,而式中K
是系数,对于频率特性的研究无关紧要。分母中任一因子(jw- Pi )相当于由极点 p 引向虚轴上某点 jw的一个矢量;分子中任一因子(jw-Zj)相当于由零点Zj 引至虚轴上某点 jw的一个矢量。
在右图示意画出由零点Zj 和极点 Pi 与 jw点连接 构成的两个矢量,图中Nj 、Mi 分别表示矢量的模,ψj 、θi 表示矢量的辐角(矢量与正实轴的夹角,逆时针为正)。 对于任意零点Zj 、极点Pi ,相应的复数因子(矢量)都可表示为:
于是,系统函数可以改写为
当ω延虚轴移动时,各复数因子(矢量)的模和辐角都随之改变,于是得出幅频特性曲线和相频特性曲线。这种方法称为s 平面几何分析。通过零极点图进行计算的方法是: 1 在S 平面上标出系统的零、极点位置;
2 选择S 平面的坐标原点为起始点,沿虚轴向上移动,计算此时各极点和零点与该点的膜模和夹角;
3 将所有零点的模相乘,再除以各极点的模,得到对应频率处的幅频特性的值; 4 将所有零点的幅角相加,减去各极点的幅角,得到对应频率处的相角。
三、实验内容
用 C 语言编制相应的计算程序进行计算,要求程序具有零极点输入模块, 可以手工输入不同数目的零极点。
计算频率从0~5频段的频谱,计算步长为0.1,分别计算上面两个系统的幅频特性和相频特性,将所得结果用表格列出,并画出相应的幅频特性曲线和相频特性曲线。
判断所给系统的滤波特性,对于带通滤波器,计算出 3dB 带宽的起始频点和结束频点;对于低通或高通滤波器,计算出3dB 带宽的截止或开始的频率。
四、画出系统一和系统二的零极点图
系统一 系统二 五、程序流程图和程序代码 程序流程图如下:
#include #include
#define Pi 3.1415926 struct fushu{
float re; float im; };
struct shuchu{
float w; float fu; float xiang; };
struct fushu jianfa(struct fushu,struct fushu); float MO(struct fushu); float FU(struct fushu); main() {
char i,j; int Li,Ji;
float w,Hw,Jw,ZH;
struct fushu lingdian[10],jidian[10],ww,LJ;
struct shuchu jieguo[51]; //根据分析,可知本实验中最后只有51个结果 FILE *fp;
fp=fopen("D:\\实验二第二个.txt","w");
ZH=180/Pi;
printf("请输入零点个数:\n");
scanf("%d",&Li);
printf("请输入零点:\n"); for(i=0;i
printf("请输入极点:\n"); for(i=0;i
Hw=1;Jw=0;
ww.re=0;ww.im=w; for(j=0;j
//处理零点
//求相频和幅频,循环执行
LJ=jianfa(ww,lingdian[j]); Hw=MO(LJ)*Hw; Jw+=FU(LJ);
//处理极点
}
for(j=0;j
{
LJ=jianfa(ww,jidian[j]); Hw=Hw/MO(LJ);
Jw-=FU(LJ);
//存储数据
}
jieguo[i].w=w; jieguo[i].fu=Hw; jieguo[i].xiang=Jw;
}
for(i=0;i
{
while(1)
{ }
if(jieguo[i].xiang
jieguo[i].xiang=jieguo[i].xiang+2*Pi; else if(jieguo[i].xiang>Pi) jieguo[i].xiang=jieguo[i].xiang-2*Pi; else break;
//将角度限定合适范围
jieguo[i].xiang=ZH*jieguo[i].xiang;
}
printf("最终结果为:\n");
printf(" w值\tH(w)值\t F(w)值\n"); fprintf(fp,"最终结果为:\n");
fprintf(fp," w值\tH(w)值\t F(w)值\n"); for(i=0;i
//列表输出结果
printf("%3.2f\t%5.3f\t%5.3f\n",jieguo[i].w,jieguo[i].fu,jieguo[i].xiang);
fprintf(fp,"%3.2f\t%5.3f\t%5.3f\n",jieguo[i].w,jieguo[i].fu,jieguo[i].xiang); } }
struct fushu jianfa(struct fushu a,struct fushu b) //两个复数相减 {
struct fushu m; m.re=a.re-b.re; m.im=a.im-b.im;
printf("输出完毕\n"); fprintf(fp,"输出完毕");
return(m); }
float MO(struct fushu a) {
//计算a 的模
float m;
m=a.re*a.re+a.im*a.im; m=sqrt(m); return(m); }
float FU(struct fushu m) { float jiao;
if(m.re==0)
{ }
if(m.im>0) jiao=Pi/2; else if(m.im
//在实轴上时的情况
//在虚轴上时的情况(不含原点)
//计算m 的幅角
else if(m.im==0)
{
}
if(m.re>=0) jiao=0;
else if(m.im
//四个象限时的情况
else {
}
jiao=fabs(m.im/m.re); jiao=atan(jiao); if(m.re0) jiao=Pi-jiao; else if(m.re0&&m.im
//先求出对应第一象限的角度
return(jiao);
}
六、所得幅频特性和相频特性用表格列出
系统二所得结果列表
七、画出相应的幅频特性和相频特性曲线 系统一的幅频和相频特性曲线 幅频特性
相频特性
系统二的幅频和相频特性曲线 幅频特性
相频特性
实验报告
实验名称:连续时间系统的频率响应
一、实验目的:
1 加深对连续时间系统频率响应理解;
2 掌握借助计算机计算任意连续时间系统频率响应的方法。
二、实验原理:
连续时间系统的频率响应可以直接通过所得表达式计算,也可以通过零极点 图通过用几何的方法来计算,而且通过零极点图可以迅速地判断系统的滤波特 性。
根据系统函数H(s)在s 平面的零、极点分布可以绘制频响特性曲线,包括幅 频特性 H(jw) 曲线和相频特性?(w)曲线。这种方法的原理如下: 假定,系统函数H(s)的表达式为
当收敛域含虚轴时,取s = jw,也即在s 平面中,s 沿虚轴从- j∞移动到+ j∞时, 得到
容易看出,频率特性取决于零、极点的分布,即取决于Zj 、Pi 的位置,而式中K
是系数,对于频率特性的研究无关紧要。分母中任一因子(jw- Pi )相当于由极点 p 引向虚轴上某点 jw的一个矢量;分子中任一因子(jw-Zj)相当于由零点Zj 引至虚轴上某点 jw的一个矢量。
在右图示意画出由零点Zj 和极点 Pi 与 jw点连接 构成的两个矢量,图中Nj 、Mi 分别表示矢量的模,ψj 、θi 表示矢量的辐角(矢量与正实轴的夹角,逆时针为正)。 对于任意零点Zj 、极点Pi ,相应的复数因子(矢量)都可表示为:
于是,系统函数可以改写为
当ω延虚轴移动时,各复数因子(矢量)的模和辐角都随之改变,于是得出幅频特性曲线和相频特性曲线。这种方法称为s 平面几何分析。通过零极点图进行计算的方法是: 1 在S 平面上标出系统的零、极点位置;
2 选择S 平面的坐标原点为起始点,沿虚轴向上移动,计算此时各极点和零点与该点的膜模和夹角;
3 将所有零点的模相乘,再除以各极点的模,得到对应频率处的幅频特性的值; 4 将所有零点的幅角相加,减去各极点的幅角,得到对应频率处的相角。
三、实验内容
用 C 语言编制相应的计算程序进行计算,要求程序具有零极点输入模块, 可以手工输入不同数目的零极点。
计算频率从0~5频段的频谱,计算步长为0.1,分别计算上面两个系统的幅频特性和相频特性,将所得结果用表格列出,并画出相应的幅频特性曲线和相频特性曲线。
判断所给系统的滤波特性,对于带通滤波器,计算出 3dB 带宽的起始频点和结束频点;对于低通或高通滤波器,计算出3dB 带宽的截止或开始的频率。
四、画出系统一和系统二的零极点图
系统一 系统二 五、程序流程图和程序代码 程序流程图如下:
#include #include
#define Pi 3.1415926 struct fushu{
float re; float im; };
struct shuchu{
float w; float fu; float xiang; };
struct fushu jianfa(struct fushu,struct fushu); float MO(struct fushu); float FU(struct fushu); main() {
char i,j; int Li,Ji;
float w,Hw,Jw,ZH;
struct fushu lingdian[10],jidian[10],ww,LJ;
struct shuchu jieguo[51]; //根据分析,可知本实验中最后只有51个结果 FILE *fp;
fp=fopen("D:\\实验二第二个.txt","w");
ZH=180/Pi;
printf("请输入零点个数:\n");
scanf("%d",&Li);
printf("请输入零点:\n"); for(i=0;i
printf("请输入极点:\n"); for(i=0;i
Hw=1;Jw=0;
ww.re=0;ww.im=w; for(j=0;j
//处理零点
//求相频和幅频,循环执行
LJ=jianfa(ww,lingdian[j]); Hw=MO(LJ)*Hw; Jw+=FU(LJ);
//处理极点
}
for(j=0;j
{
LJ=jianfa(ww,jidian[j]); Hw=Hw/MO(LJ);
Jw-=FU(LJ);
//存储数据
}
jieguo[i].w=w; jieguo[i].fu=Hw; jieguo[i].xiang=Jw;
}
for(i=0;i
{
while(1)
{ }
if(jieguo[i].xiang
jieguo[i].xiang=jieguo[i].xiang+2*Pi; else if(jieguo[i].xiang>Pi) jieguo[i].xiang=jieguo[i].xiang-2*Pi; else break;
//将角度限定合适范围
jieguo[i].xiang=ZH*jieguo[i].xiang;
}
printf("最终结果为:\n");
printf(" w值\tH(w)值\t F(w)值\n"); fprintf(fp,"最终结果为:\n");
fprintf(fp," w值\tH(w)值\t F(w)值\n"); for(i=0;i
//列表输出结果
printf("%3.2f\t%5.3f\t%5.3f\n",jieguo[i].w,jieguo[i].fu,jieguo[i].xiang);
fprintf(fp,"%3.2f\t%5.3f\t%5.3f\n",jieguo[i].w,jieguo[i].fu,jieguo[i].xiang); } }
struct fushu jianfa(struct fushu a,struct fushu b) //两个复数相减 {
struct fushu m; m.re=a.re-b.re; m.im=a.im-b.im;
printf("输出完毕\n"); fprintf(fp,"输出完毕");
return(m); }
float MO(struct fushu a) {
//计算a 的模
float m;
m=a.re*a.re+a.im*a.im; m=sqrt(m); return(m); }
float FU(struct fushu m) { float jiao;
if(m.re==0)
{ }
if(m.im>0) jiao=Pi/2; else if(m.im
//在实轴上时的情况
//在虚轴上时的情况(不含原点)
//计算m 的幅角
else if(m.im==0)
{
}
if(m.re>=0) jiao=0;
else if(m.im
//四个象限时的情况
else {
}
jiao=fabs(m.im/m.re); jiao=atan(jiao); if(m.re0) jiao=Pi-jiao; else if(m.re0&&m.im
//先求出对应第一象限的角度
return(jiao);
}
六、所得幅频特性和相频特性用表格列出
系统二所得结果列表
七、画出相应的幅频特性和相频特性曲线 系统一的幅频和相频特性曲线 幅频特性
相频特性
系统二的幅频和相频特性曲线 幅频特性
相频特性