信号与系统课程设计报告循环卷积和离散卷积的计算机计算.docx
- 文档编号:2967110
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:9
- 大小:110.90KB
信号与系统课程设计报告循环卷积和离散卷积的计算机计算.docx
《信号与系统课程设计报告循环卷积和离散卷积的计算机计算.docx》由会员分享,可在线阅读,更多相关《信号与系统课程设计报告循环卷积和离散卷积的计算机计算.docx(9页珍藏版)》请在冰豆网上搜索。
信号与系统课程设计报告循环卷积和离散卷积的计算机计算
数字信号处理
学院学院
班级电
学号U201012067
姓名李晓东
目录
一设计概述
1设计题目………………………………………………3
2设计目的………………………………………………3
3具体步骤………………………………………………3
4实现方法………………………………………………4
二设计目标…………………………………………………4
三设计内容
1原理学习………………………………………………4
1.1循环卷积…………………………………………..5
1.2离散卷积…………………………………………..5
2程序流程图……………………………………………6
3c语言编程与计算
3.1c语言程序………………………………………...7
3.2计算结果…………………………………………..8
4验证计算结果
4.1验算循环卷积……………………………………9
4.2验算离散卷积……………………………………9
四体会与感想……………………………………………..10
五参考文献………………………………………………..10
一设计概述
设计题目:
循环卷积和离散卷积的计算机计算
设计目的:
1、自学C语言以及巩固信号与系统离散卷积与循环卷积的内容;
2、培养独立思考以及灵活应用所学知识的能力;
3、培养和掌握正确的设计思想和认真负责的设计态度;
4、自行检验与调试出精确、简便、实用、可靠的设计方法。
具体步骤:
①仔细分析设计题目、目的及内容;
②分析离散卷积与循环卷积的特点与异同;
③分析计算步骤并画出流程图;
④用C语言进行编程并用VC6.0进行演算;
⑤自行计算进行验算;
⑥分析结果并分享体会
运用软件:
officeword2003VC6.0
实现方法:
通过学习课本及参阅相关书籍以及网络,从理论上分析离散卷积和循环卷积的特点;学习用Word设计程序流程图,C语言编程进行计算,并验证计算结果。
二设计目标
设有两离散序列
和
,则两序列的循环卷积和离散卷积分别为:
画出计算此两卷积的程序框图,并用C语言编写计算程序,计算出结果。
学生用C语言编程,分析计算结果。
三设计内容
离散卷积和循环卷积的计算机计算
1原理学习
卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。
利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。
1.1循环卷积
循环卷积比起线性卷积,在运算速度上有很大的优越性,它可以采用快速傅里叶变换(FFT)技术,若能利用循环卷积求线性卷积,会带来很大的方便。
一般情况下,n≧N时x[n]*v[n]并不等于零,x[n]*v[n]的N点DFT和这些值不一致。
因此,有必要定义一种卷积运算,使得n=0,1,…,N-1之外的卷积信号x[n]*v[n]等于零,这就引出循环卷积的概念。
离散卷积和循环卷积之间的唯一区别是:
用折叠位移(模N)信号代替了离散卷积式中的折叠位移信号。
对于循环卷积来说,不仅要知道这两组数而且要确定N值。
1.2离散卷积
信号与线性系统中,定义x[n],v[n],其卷积为
计算离散卷积时,首先将x[n],v[n]中的离散时间序号n改为i,得到信号x[i],v[i],下一步确定v[n-i]和乘积x[i]v[n-i]。
信号v[n-i]是信号v[i]的反折和平移,通过对x[i]v[n-i]中的i求和即可计算出来,式中i取一定范围的的整数。
计算离散卷积时需要用户输入x[n]和v[m]的值,这样便可以得到所要求的离散卷积的值
3c语言编程与计算
3.1c语言程序
#include
#include
voiddiscreat();
voidcircle();
voidmain()
{inti;
printf("欢迎使用卷积计算程序\n");
printf("请进行选择,输入1进行循环卷积计算,输入2进行离散卷积计算:
");
scanf("%d",&i);
printf("\n");
while(i!
=1&&i!
=2)
{printf("输入错误,请重新选择:
");
scanf("%d",&i);
}
if(i=1)
circle();
else
discreat(),i--;
if(i=1)
discreat();
else
circle();
printf("感谢使用\n");
system("pause");
}
voidcircle()
{
inti,j;
i=j=0;
intt;
floata[100],b[100],c[200];
printf("现在计算循环卷积y\n");
printf("请输入N的值\n");
scanf("%d",&t);
printf("请输入x[n]\n");
for(i=0;i<=t-1;i++)
scanf("%f",&a[i]);
printf("请输入v[m]\n");
for(i=0;i<=t-1;i++)
scanf("%f",&b[i]);
for(j=0;j<=t-1;j++)c[j]=0;
for(j=0;j<=t-1;j++)
for(i=0;i<=t-1;i++)
if((j-i)>=0)
c[j]+=a[i]*b[j-i];
elseif((j-i)<0)
c[j]+=a[i]*b[j-i+t];
printf("循环卷积y[n]为\n");
for(j=0;j<=t-1;j++)
printf("y[%d]=%f\n",j,c[j]);
}
voiddiscreat()
{intn,m,k,q;
n=m=k=q=0;gg
staticfloatx[100],y[100],z[200];
printf("计算离散卷积y\n");
printf("请输入x[n]的长度\n");
scanf("%d",&n);
printf("请输入v[m]的长度\n");
scanf("%d",&m);
printf("请输入x[n]\n");
for(k=0;k<=n-1;k++)
scanf("%f",&x[k]);
printf("请输入v[m]\n");
for(k=0;k<=m-1;k++)
scanf("%f",&y[k]);
for(q=0;q<=m+n-2;q++)
for(k=0;k<=n-1;k++)
if((q-k)>=0)
z[q]+=x[k]*y[q-k];
printf("离散卷积y[n]为\n");
for(q=0;q<=m+n-2;q++)
printf("y[%d]=%f\n",q,z[q]);
printf("其余值均为0\n");
}
3.2计算结果
4验证计算结果
4.1验算循环卷积
=x[0]v[0]+x[1]v[2]+x[2]v[1]=11,n=0
y[n]=x[n]③v[m]=x[0]v[1]+x[1]v[0]+x[2]v[2]=11,n=1
=x[0]v[2]+x[1]v[1]+x[2]v[0]=14,n=2
4.2验算离散卷积
阵列方法:
123
321
321
64
9
3814
y[0]=3,n=0
y[1]=8,n=1
y[n]=x[n]*v[n]=y[2]=14,n=2
y[3]=8,n=3
y[4]=3,n=4
其他为0
验算结果与编程计算结果一致。
四体会与感想
本次课设花了不少心思,主要在细节问题上不能够做到一步到位,所以在检查过程中耗费了不少时间。
同时对于C语言的学习,没有做到稳固。
所以导致以前学的很多知识都已经忘记,不得不又拾起以前的课本。
但至少这一次课设让我温习了以前的知识也懂得了知识需要时时刻刻去温习。
免得以前的知识白学了,当然,在成功后还是蛮有成就感的。
又是一个自己做的成果,很满足。
五参考书目
1.FundamentalsofSignalsandSystems-UsingtheWebandMATLAB
EdwardW.KamenBonnieS.Heck著科学出版社
2.中文版office2003实用教程徐贤军著 清华大学出版社
3.《c程序设计(第三版)》谭浩强著清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 系统 课程设计 报告 循环 卷积 离散 计算机 计算