您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 连续时间系统卷积的数值计算实验报告
实验报告实验名称:连续时间系统卷积的数值计算一、实验目的: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.hfloatf1t(float);floatf2t(float);floatJieguo(float*a1,float*a2,charm);structjuanji{floatt;floatjieguo;};floatTs;main(){floatF2[41],t,m,F1[41];structjuanjiShuchu[100];tototftoftfd21unsignedcharNom,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);elseShuchu[i].jieguo=Jieguo((F1+i-40),F2,81-i);Nom++;}printf(\n最终结果为:\n);printf(序号\tt值\tr(t)值\n);fprintf(fp,最终结果为:\n);fprintf(fp,序号\tt值\tr(t)值\n);for(i=0;iNom;i++){printf(%3d\t%5.2f\t%5.3f\n,i+1,Shuchu[i].t,Shuchu[i].jieguo);fprintf(fp,%3d\t%5.2f\t%5.3f\n,i+1,Shuchu[i].t,Shuchu[i].jieguo);}printf(输出完毕,共有%d组数据,Nom);fprintf(fp,输出完毕,共有%d组数据,Nom);}定义函数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=0t=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=Nomfloatf1t(floatt){floati;if(t-2||t2)i=0;elsei=1;return(i);}floatf2t(floatt){if(t0||t4)return(0);elseif(t=0&&t2)return(t);elsereturn(4-t);}floatJieguo(float*a1,float*a2,charm){unsignedchari;floatjuanji,k,j;i=0;juanji=0;while(im){j=*(a1+i);k=*(a2+i);juanji=juanji+(j*k)*Ts;i++;}return(juanji);}六、实验所得数据以Ts=0.1为步长值,共取得81个值,列表如下0.000.010.030.060.100.150.210.280.360.450.550.660.780.911.051.201.361.531.711.902.102.292.472.642.802.953.093.223.343.453.553.643.723.793.853.903.943.973.994.004.003.993.973.943.903.853.853.793.723.643.553.453.343.223.092.952.802.642.472.292.101.901.711.531.361.201.050.910.780.660.550.450.360.280.210.150.100.060.030.010.00七、绘制曲线其中,横坐标为t值,纵坐标为卷积值-0.500.511.522.533.544.5-4-202468系列1
本文标题:连续时间系统卷积的数值计算实验报告
链接地址:https://www.777doc.com/doc-4648010 .html