实验名称:连续时间系统卷积的数值计算实验报告
班级:120241 姓名:彭壮 学号:12021327
一、实验目的:
1、加深对卷积概念及原理的理解;
2、掌握借助计算机计算任意信号卷积的方法。 二、实验原理:
卷积积分不仅可以通过直接积分或查表的方法来求解,还可以用积分的数值计算方法来求解。在线性系统的分析过程中,有时会遇到复杂的激励信号,或者有时只是一组测试数据或曲线,冲激响应也可能出现同样的情况。显然,此时直接计算积分或查表都有困难,而采用近似的数值计算方法可以解决这个问题,求得卷积积分。
1、卷积的定义
卷积积分可以表示为
2卷积计算的几何算法
卷积积分的计算从几何上可以分为四个步骤:翻转→平移→相乘→叠加。 3卷积积分的应用
卷积积分是信号与系统时域分析的基本手段,主要用于求系统零状态响应,它避开了经典分析方法中求解微分方程时需要求系统初始值的问题。
设一个线性零状态系统,已知系统的单位冲激响应为h(t),当系统的激励信号为e(t)时,系统的零状态响应为
由于计算机技术的发展,通过编程的方法来计算卷积积分已经不再是冗繁的工作,并可以获得足够的精度。因此,信号的时域卷积分析法在系统分析中得到了广泛的应用。
卷积积分的数值运算实际上可以用信号的分段求和来实现,即:
如果我们只求当t = n Δt (n 为正整数,n Δt 记为t )时r(t)的值,则由上式
可以得到:
当Δt 足够小时,r(t ) 就是e(t)和h(t)卷积积分的数值近似,由上面的公式可以得到卷积数值计算的方法如下:
1 将信号取值离散化,即以 Ts 为周期,对信号取值,得到一系列宽度间隔 为 Ts 的矩形脉冲原信号的离散取值点,用所得离散取值点矩形脉冲来表示原来的连续时间信号;
2 将进行卷积的两个信号序列之一反转,与另一信号相乘,并求积分,所得为 t=0 时的卷积积分的值。以 Ts 为单位左右移动反转的信号,与另一信号相乘求积分,求的t0时卷积积分的值;
3 将所得卷积积分值与对应的t 标在图上,连成一条光滑的曲线,即为所求卷积积分的曲线。 三、实验内容
已知进行卷积的两个信号分别为:
令Ts =0.1,用数值计算法计算
用C 语言编制相应的计算程序进行计算。 将所得结果用表格列出,并画出相应的曲线。 四、实验原理图示 卷积 ∞
f t =f 1to f 2t -to d to
-∞
五、程序流程图和程序代码如下: #include float f1t(float); float f2t(float);
()⎰
()()
float Jieguo(float *a1, float *a2,char m); struct juanji { float t;
float jieguo; };
float Ts=0.1; main() {
float F2[41],t,m,F1[41];
struct juanji Shuchu[100]; char Nom,i,j;
for(i=0,t=-2;i
F1[i]= f1t(t); i++; }
for(i=0,t=0;i
F2[i]= f2t(t); i++; } j=i;
for(i=0,j--;i
m=F2[i]; F2[i]=F2[j];
F2[j]=m; }
Nom=0;
for(t=-2,i=0;i
Shuchu[i].t=t; if(t
Shuchu[i].jieguo=Jieguo(F1,(F2+40-i),i+1); else
Shuchu[i].jieguo=Jieguo((F1+i-40),F2,81-i); Nom++; }
printf("结果为:\n");
printf("序号\t t值\tr(t)值\n");
for(i=0;i
{
printf("%3d\t%5.2f\t%5.3f\n",i+1,Shuchu[i].t,Shuchu[i].jieguo); }
printf("输出完毕,共有%d组数据",Nom); }
float f1t(float t) {
float i;
if(t2) i=0;
else i=1; return(i); }
float f2t(float t) {
if(t4) return(0);
else if(t>=0&&t
return(4-t); }
float Jieguo(float *a1,float *a2,char m) {
char i;
float juanji,k,j; i=0;
juanji=0; while(i
j=*(a1+i); k=*(a2+i);
juanji=juanji+(j*k)*Ts; i++; }
return(juanji); }
七、实验所得数据: 结果为:
序号 t值 r(t)值 1 -2.00 0.000 2 -1.90 0.010
4 -1.70 0.060 5 -1.60 0.100 6 -1.50 0.150 7 -1.40 0.210 8 -1.30 0.280 9 -1.20 0.360 10 -1.10 0.450 11 -1.00 0.550 12 -0.90 0.660 13 -0.80 0.780 14 -0.70 0.910 15 -0.60 1.050 16 -0.50 1.200 17 -0.40 1.360 18 -0.30 1.530 19 -0.20 1.710 20 -0.10 1.900 21 0.00 2.100 22 0.10 2.290 23 0.20 2.470 24 0.30 2.640 25 0.40 2.800 26 0.50 2.950 27 0.60 3.090 28 0.70 3.220 29 0.80 3.340 30 0.90 3.450 31 1.00 3.550 32 1.10 3.640 33 1.20 3.720 34 1.30 3.790 35 1.40 3.850 36 1.50 3.900 37 1.60 3.940 38 1.70 3.970 39 1.80 3.990 40 1.90 4.000 41 2.00 4.000 42 2.10 3.990 43 2.20 3.970 44 2.30 3.940 45 2.40 3.900 46 2.50 3.850
48 2.70 3.720 49 2.80 3.640 50 2.90 3.550 51 3.00 3.450 52 3.10 3.340 53 3.20 3.220 54 3.30 3.090 55 3.40 2.950 56 3.50 2.800 57 3.60 2.640 58 3.70 2.470 59 3.80 2.290 60 3.90 2.100 61 4.00 1.900 62 4.10 1.710 63 4.20 1.530 64 4.30 1.360 65 4.40 1.200 66 4.50 1.050 67 4.60 0.910 68 4.70 0.780 69 4.80 0.660 70 4.90 0.550 71 5.00 0.450 72 5.10 0.360 73 5.20 0.280 74 5.30 0.210 75 5.40 0.150 76 5.50 0.100 77 5.60 0.060 78 5.70 0.030 79 5.80 0.010 80 5.90 0.000 81 6.00 0.000
输出完毕,共有81组数据Press any key to continue 六、绘制曲线:
实验名称:连续时间系统卷积的数值计算实验报告
班级:120241 姓名:彭壮 学号:12021327
一、实验目的:
1、加深对卷积概念及原理的理解;
2、掌握借助计算机计算任意信号卷积的方法。 二、实验原理:
卷积积分不仅可以通过直接积分或查表的方法来求解,还可以用积分的数值计算方法来求解。在线性系统的分析过程中,有时会遇到复杂的激励信号,或者有时只是一组测试数据或曲线,冲激响应也可能出现同样的情况。显然,此时直接计算积分或查表都有困难,而采用近似的数值计算方法可以解决这个问题,求得卷积积分。
1、卷积的定义
卷积积分可以表示为
2卷积计算的几何算法
卷积积分的计算从几何上可以分为四个步骤:翻转→平移→相乘→叠加。 3卷积积分的应用
卷积积分是信号与系统时域分析的基本手段,主要用于求系统零状态响应,它避开了经典分析方法中求解微分方程时需要求系统初始值的问题。
设一个线性零状态系统,已知系统的单位冲激响应为h(t),当系统的激励信号为e(t)时,系统的零状态响应为
由于计算机技术的发展,通过编程的方法来计算卷积积分已经不再是冗繁的工作,并可以获得足够的精度。因此,信号的时域卷积分析法在系统分析中得到了广泛的应用。
卷积积分的数值运算实际上可以用信号的分段求和来实现,即:
如果我们只求当t = n Δt (n 为正整数,n Δt 记为t )时r(t)的值,则由上式
可以得到:
当Δt 足够小时,r(t ) 就是e(t)和h(t)卷积积分的数值近似,由上面的公式可以得到卷积数值计算的方法如下:
1 将信号取值离散化,即以 Ts 为周期,对信号取值,得到一系列宽度间隔 为 Ts 的矩形脉冲原信号的离散取值点,用所得离散取值点矩形脉冲来表示原来的连续时间信号;
2 将进行卷积的两个信号序列之一反转,与另一信号相乘,并求积分,所得为 t=0 时的卷积积分的值。以 Ts 为单位左右移动反转的信号,与另一信号相乘求积分,求的t0时卷积积分的值;
3 将所得卷积积分值与对应的t 标在图上,连成一条光滑的曲线,即为所求卷积积分的曲线。 三、实验内容
已知进行卷积的两个信号分别为:
令Ts =0.1,用数值计算法计算
用C 语言编制相应的计算程序进行计算。 将所得结果用表格列出,并画出相应的曲线。 四、实验原理图示 卷积 ∞
f t =f 1to f 2t -to d to
-∞
五、程序流程图和程序代码如下: #include float f1t(float); float f2t(float);
()⎰
()()
float Jieguo(float *a1, float *a2,char m); struct juanji { float t;
float jieguo; };
float Ts=0.1; main() {
float F2[41],t,m,F1[41];
struct juanji Shuchu[100]; char Nom,i,j;
for(i=0,t=-2;i
F1[i]= f1t(t); i++; }
for(i=0,t=0;i
F2[i]= f2t(t); i++; } j=i;
for(i=0,j--;i
m=F2[i]; F2[i]=F2[j];
F2[j]=m; }
Nom=0;
for(t=-2,i=0;i
Shuchu[i].t=t; if(t
Shuchu[i].jieguo=Jieguo(F1,(F2+40-i),i+1); else
Shuchu[i].jieguo=Jieguo((F1+i-40),F2,81-i); Nom++; }
printf("结果为:\n");
printf("序号\t t值\tr(t)值\n");
for(i=0;i
{
printf("%3d\t%5.2f\t%5.3f\n",i+1,Shuchu[i].t,Shuchu[i].jieguo); }
printf("输出完毕,共有%d组数据",Nom); }
float f1t(float t) {
float i;
if(t2) i=0;
else i=1; return(i); }
float f2t(float t) {
if(t4) return(0);
else if(t>=0&&t
return(4-t); }
float Jieguo(float *a1,float *a2,char m) {
char i;
float juanji,k,j; i=0;
juanji=0; while(i
j=*(a1+i); k=*(a2+i);
juanji=juanji+(j*k)*Ts; i++; }
return(juanji); }
七、实验所得数据: 结果为:
序号 t值 r(t)值 1 -2.00 0.000 2 -1.90 0.010
4 -1.70 0.060 5 -1.60 0.100 6 -1.50 0.150 7 -1.40 0.210 8 -1.30 0.280 9 -1.20 0.360 10 -1.10 0.450 11 -1.00 0.550 12 -0.90 0.660 13 -0.80 0.780 14 -0.70 0.910 15 -0.60 1.050 16 -0.50 1.200 17 -0.40 1.360 18 -0.30 1.530 19 -0.20 1.710 20 -0.10 1.900 21 0.00 2.100 22 0.10 2.290 23 0.20 2.470 24 0.30 2.640 25 0.40 2.800 26 0.50 2.950 27 0.60 3.090 28 0.70 3.220 29 0.80 3.340 30 0.90 3.450 31 1.00 3.550 32 1.10 3.640 33 1.20 3.720 34 1.30 3.790 35 1.40 3.850 36 1.50 3.900 37 1.60 3.940 38 1.70 3.970 39 1.80 3.990 40 1.90 4.000 41 2.00 4.000 42 2.10 3.990 43 2.20 3.970 44 2.30 3.940 45 2.40 3.900 46 2.50 3.850
48 2.70 3.720 49 2.80 3.640 50 2.90 3.550 51 3.00 3.450 52 3.10 3.340 53 3.20 3.220 54 3.30 3.090 55 3.40 2.950 56 3.50 2.800 57 3.60 2.640 58 3.70 2.470 59 3.80 2.290 60 3.90 2.100 61 4.00 1.900 62 4.10 1.710 63 4.20 1.530 64 4.30 1.360 65 4.40 1.200 66 4.50 1.050 67 4.60 0.910 68 4.70 0.780 69 4.80 0.660 70 4.90 0.550 71 5.00 0.450 72 5.10 0.360 73 5.20 0.280 74 5.30 0.210 75 5.40 0.150 76 5.50 0.100 77 5.60 0.060 78 5.70 0.030 79 5.80 0.010 80 5.90 0.000 81 6.00 0.000
输出完毕,共有81组数据Press any key to continue 六、绘制曲线: