网站大量收购闲置独家精品文档,联系QQ:2885784924

信号与系统课程设计卷积.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信号与系统课程设计卷积

信号与系统 课程设计报告 学院 电气与电子工程学院 班级 电气1004班 学号 U201011867 姓名 彭鸿昌 一 设计题目 循环卷积和离散卷积的计算机计算 二 设计目标 设有两离散序列和,则两序列的循环卷积和离散卷积分别为: 画出计算此两卷积的程序框图,并用C语言编写计算程序,计算出结果。 用C语言编程,分析计算结果。 三 设计原理 在泛函分析中,卷积(卷积)、旋积或摺积(英语:Convolution)是通过两个函数f 和g 生成第三个函数的一种数学算子,表徵函数f 与经过翻转和平移与g 的重叠部分的累积。如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“滑动平均”的推广。 卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。 1 离散卷积 信号与线性系统中,定义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]的值,这样便可以得到所要求的离散卷积的值。 2 循环卷积 循环卷积比起线性卷积,在运算速度上有很大的优越性,它可以采用快速傅里叶变换(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 循环卷积流程图 五 程序代码 1 离散卷积代码 #include iostream using namespace std; int main() { int n,m,k,q; n=m=k=q=0; double x[100],v[100],y[200]; cout离散卷积y\n; cout输入x[n]的长度\n; cinn; cout输入v[m]的长度\n; cinm; cout输入x[n]\n; for(k=0;k=n-1;k++) cinx[k]; cout输入v[m]\n; for(k=0;k=m-1;k++) cinv[k]; for(q=0;q=m+n-2;q++) for(k=0;k=n-1;k++) if((q-k)=0) y[q]=x[k]*v[q-k]+y[q]; cout离散卷积y[n]为\n; for(q=0;q=m+n-2;q++) couty[q]=y[q]\n; cout其余值均为0\n; return 0; } 2 循环卷积代码 #include iostream using namespace std; int main() { int i,j; i=j=0; int t; double x[100],v[100],y[200]; cout循环卷积y\n; cout输入N的值\n; cint; cout输入x[n]\n; for(i=0;i=t-1;i++) cinx[i]; cout输入v[m]\n; for(i=0;i=t-1;i++) cinv[i]; for(j=0;j=t-1;j++) for(i=0;i=t-1;i++) if((j-i)=0) y[j]=x[i]*v[j-i]+y[j]; else if((j-i)0) y[j]=x[i]*v[j-i+t]+y[j]; cout循环卷积y[n]为\n; for(j=0;j=t-1;j++) couty[j]=y[j]\n; return 0; } 六 计算结果与验证 编程软件使用Code::Blocks,编译器为GNU GCC Compiler 1 循环卷积 验证循环卷积 =x[0]v[0]+x[1]v[2]+x[2]v[1]=11, n=0 y[n]=x[n] ③v[n] =x[0]v[1]+x[1]v[0]+x[2]v[2]=11, n=1

文档评论(0)

zhanghc + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档