华科信号课程设计卷积.docx
- 文档编号:8072167
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:15
- 大小:175.96KB
华科信号课程设计卷积.docx
《华科信号课程设计卷积.docx》由会员分享,可在线阅读,更多相关《华科信号课程设计卷积.docx(15页珍藏版)》请在冰豆网上搜索。
华科信号课程设计卷积
华中科技大学
电气与电子工程学院
信号与系统课程设计报告
设计题目设计卷积计算
学生专业班级电气1009班
学生姓名苏婧媛
学生学号u201012053
指导教师徐垦
完成时间2012年8月12日
2012年8月20日
目录
课程设计目的和任务1
分析与设计1
变量意义说明1
设计算法1
程序流程图2
系统实施3
源程序代码3
程序运行说明5
带入验证6
存在的问题9
总结与体会10
一、课程设计目的和任务
离散卷积和循环卷积的计算机计算。
设有两离散序列和,则两序列的离散卷积和循环卷积分别为:
试画出计算此两卷积的程序框图,并用C++语言编写计算程序,计算出结果。
要求:
画出计算程序流程图;完成C语言编程与计算;验证计算结果
二、分析与设计
1.变量意义说明
设计前提:
两个数列x[n],v[n],长度范围在100以内,如有需要可以再扩大数列长度;
注:
课程设计中文字说明部分的x[n],v[n]中的n表示时间离散;程序中定义的变量n表示数列长度较大的一个;程序输出结果中的文字n是讨论卷积结果时数列在数轴上或圆周上的位移,与书上意义一致,方便使用程序的人理解。
虽然3个n不易区分,但考虑到使用者只看见程序执行时的界面,只有1个n,不会有理解困难。
1)n1:
数列x[n]的长度;n2:
数列v[n]的长度;N:
循环卷积模的大小;
n:
取n1、n2中大的值为其赋值,进行之后的计算;
2)i,j,a:
用来控制进行循环加法的变量;
3)y:
每一次离散卷积的结果;在一次对应卷积的结果输出后置零,进行下一次卷积对应的循环加法,y循环使用;
4)p[n],q[n]:
搭配使用得到需要的v[n-i],方便带入进行循环卷积;
5)z[n]:
每一次循环卷积的结果;每次不同的n对应的卷积结果存在对应的z[n]中;
2.设计算法
分类讨论得到的x[n]、v[n]:
先比较n1、n2的大小:
n1>n2时:
对v[n]补零,使之与x[n]一样长,令n=n1;
n1 对x[n]补零,使之与v[n]一样长,令n=n2; n1=n2时: 不补零,令n=n1; 再比较n与N,进行之后的两种卷积计算。 n≥N时: 离散卷积: 利用v[i-j](程序中的写法)和循环计算等价出向右平移0—n-1个单位时v[-n](意义与书上一致,下同),算出与x[n]的离散卷积;再用v[n-1+i-j](程序中的写法)和循环计算等价出向右平移n—2n-2个单位时v[-n],算出与x[n]的离散卷积; 循环卷积: 利用p[n]得到循环卷积情况下的v[-n],在结合循环计算,用对应p[n]对q[n]赋值,得到循环卷积中0—n-1个位移的v[-n],最后计算出循环卷积并输出。 n<N时: 在得到输入的x[n]、v[n]后,先对两数列不足N长的后半部补零,之后的离散卷积、循环卷积的算法与n≥N的情况相同。 3.程序流程图: 离散卷积、循环卷积的流程图如下图一所示 n1>n2n1 n1=n2 n≥Nn<N 图一离散卷积、循环卷积程序的流程图 三、系统实施 1.源程序代码(已上机调试) #include usingnamespacestd; inti,j; intmain() {cout<<"pleaseinputthelengthofx[n]"< intn1; cin>>n1; cout<<"pleaseinputthelengthofv[n]"< intn2; cin>>n2; cout<<"pleaseinputthemod"; intN; cin>>N; intn; doublex[100],v[100]; if(n1>n2) {n=n1; for(i=n2;i<=n1-1;i++)v[i]=0;}//对v[n]补零 elseif(n1 {n=n2; for(i=n1;i<=n2-1;i++)x[i]=0;}//对x[n]补零 elsen=n1; cout<<"pleaseinputx[n]";//录入两个数列的值 for(i=0;i<=n1-1;i++)cin>>x[i]; cout<<"pleaseinputv[n]"; for(i=0;i<=n2-1;i++)cin>>v[i]; if(n>=N) {for(i=0;i<=n-1;i++)//完成离散卷积 {doubley=0; for(j=0;j<=i;j++)y=y+x[j]*v[i-j]; cout<<"whenn="< for(i=1;i<=n-1;i++) {doubley=0; for(j=i;j<=n-1;j++)y=y+x[j]*v[n-1+i-j]; cout<<"whenn="< doublez[100],p[100],q[100]; p[0]=v[0]; for(i=1;i<=N-1;i++)p[i]=v[N-i];//得到v[-i] for(i=0;i<=N-1;i++)z[i]=0;//对所有循环卷积结果赋初值0 inta; for(a=0;a<=N-1;a++) {q[0]=v[a]; for(i=1;i<=N-1;i++) {if(i-a>=0)q[i]=p[i-a]; elseq[i]=p[N+i-a];}//得到v[a-i] for(i=0;i<=N-1;i++)z[a]=z[a]+x[i]*q[i];
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号 课程设计 卷积