连续时间系统卷积的计算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告
实验名称:连续时间系统卷积的数值计算
班级: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 为单位左右移动反转的信号,与另一信号相乘求积分,求的t<0和t>0时卷积积分的值;
3 将所得卷积积分值与对应的t 标在图上,连成一条光滑的曲线,即为所求卷积积分的曲线。

三、实验内容
已知进行卷积的两个信号分别为:
令Ts =0.1,用数值计算法计算
用C 语言编制相应的计算程序进行计算。

将所得结果用表格列出,并画出相应的曲线。

四、实验原理图示
卷积
五、程序流程图和程序代码如下:
#include<stdio.h>
float f1t(float);
float f2t(float); ()()()
to to t f to f t f d 21⎰∞∞--=
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<41;t=t+Ts)
{
F1[i]= f1t(t);
i++;
}
for(i=0,t=0;i<41;t=t+Ts)
{
F2[i]= f2t(t);
i++;
}
j=i;
for(i=0,j--;i<j;i++,j--)
{
m=F2[i];
F2[i]=F2[j];
F2[j]=m;
}
Nom=0;
for(t=-2,i=0;i<81;t=t+Ts,i++)
{
Shuchu[i].t=t;
if(t<=2)
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<Nom;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(t<-2||t>2) i=0;
else i=1;
return(i);
}
float f2t(float t)
{
if(t<0||t>4)
return(0);
else if(t>=0&&t<2)
return(t);
else
return(4-t);
}
float Jieguo(float *a1,float *a2,char m)
{
char i;
float juanji,k,j;
i=0;
juanji=0;
while(i<m)
{
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
3 -1.80 0.030
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。

相关文档
最新文档