- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验报告
实验名称:连续时间系统卷积的数值计算
一、实验目的:
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和t0时卷积积分的值;
3 将所得卷积积分值与对应的t 标在图上,连成一条光滑的曲线,即为所求卷积积分的曲线。
三、实验内容
已知进行卷积的两个信号分别为:
令Ts=0.1,用数值计算法计算
用C语言编制相应的计算程序进行计算。
将所得结果用表格列出,并画出相应的曲线。
四、实验原理图示
卷积
五、程序流程图和程序代码如下:
#includestdio.h
float f1t(float);
float f2t(float);
float Jieguo(float *a1, float *a2,char m);
struct juanji {
float t;
float jieguo;
};
float Ts;
main()
{
float F2[41],t,m,F1[41];
struct juanji Shuchu[100];
定义函数f1t、f2t、Jieguo
定义结构体juanji
定义变量Ts、t、m、i、j、Nom
定义数组F1、F2、Shuchu
定义文件指针fp,创建“实验一.txt”
输入时间间隔Ts
将函数f1t离散化取值存于F1
将函数f2t离散化取值存于F2
将F2翻转
Nom=0,t=-2,i=0
t=2
是 否
Shuchu[i].jieguo=Jieguo(F1,(F2+40-i),i+1);
Shuchu[i].jieguo=Jieguo((F1+i-40),F2,81-i);
Nom++,t=t+Ts,i++
直到i=81
在屏幕和实验一.txt中输出“最终结果为:”
i=0
在屏幕输出Shuchu[i].jieguo
在txt中输出Shuchu[i].jieguo
直到i=Nom
unsigned char Nom,i,j;
FILE *fp;
fp=fopen(D:\\实验一.txt,w);
printf(请输入时间间隔:\n);
scanf(%f,Ts);
for(i=0,t=-2;i41;t=t+Ts)
{
F1[i]= f1t(t);
i++;
}
for(i=0,t=0;i41;t=t+Ts)
{
F2[i]= f2t(t);
i++;
}
j=i;
for(i=0,j--;ij;i++,j--)
{
m=F2[i];
F2[i]=F2[j];
F2[j]=m;
}
Nom=0;
for(t=-2,i=0;i81;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)
文档评论(0)