线性卷积与循环卷积的比较.docx
- 文档编号:10266929
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:14
- 大小:138.14KB
线性卷积与循环卷积的比较.docx
《线性卷积与循环卷积的比较.docx》由会员分享,可在线阅读,更多相关《线性卷积与循环卷积的比较.docx(14页珍藏版)》请在冰豆网上搜索。
线性卷积与循环卷积的比较
安康学院
学年论文﹙设计﹚
题目线性卷积与循环卷积的比较
学生姓名学号
所在院(系)
专业班级
指导教师
年月日
线性卷积与循环卷积的比较
(作者:
)
(
【摘要】本文讲述的是运用matlab软件编写线性卷积和循环卷积,运行程序并得到正确结果,附上运行结果图让大家参照对比。
MATLAB是一款在数学类科技应用软件中特别是在数值计算方面首屈一指的软件,它可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
而线性卷积和循环卷积在工程上的应用亦非常广泛,在Matlab软件处理下,实现任意两个序列的线性和循环卷积对于工程上的辅助是相当重要的。
卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。
利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。
本文从线性卷积和循环的定义出发,分析其运算原理以及相关的公式、程序,让大家明白什么是卷积。
【关键词】Matlab;线性卷积;循环卷积;
Linearconvolutioncomparedwithcircularconvolution
Abstract:
Thisisaboutusingmatlabsoftwarelinearconvolutionandcyclicconvolution,operationprocedureandgettherightresult,enclosedoperationresultdiagramleteverybodyreference
MATLABisatypeoftechnologyinapplicationsofmathematics,especiallyinnumericalcalculationoftheleadingsoftware,whichcanbematrixcalculation,anddatamappingfunction,therealizationofalgorithms,creationofuserinterface,connectedtootherprocedures,suchasprogramminglanguages,themainapplicationinengineeringcomputing,controldesign,signalprocessingandcommunications,imageprocessing,signaldetection,financialmodelinginareassuchasdesignandanalysis.AndlinearconvolutionintheapplicationofengineeringhasaverywiderangeofsoftwareinMatlab,therealizationofanytwosequencesoflinearconvolutionsupportforprojectsisveryimportant.Convolutionrelationshipbetweenthemostimportantcase,thatislinearinthesignalanddigitalsignalprocessingsystemortheconvolutiontheorem.Useofthetheoremcanbetime-domainorspacedomaintotheconvolutionoperationinfrequencydomainequivalentofthemultiplicationoperation,thustheuseofFFTandotherfastalgorithms,thecalculationofeffective,cost-savingoperation.
Fromlinearconvolutionandcirculationofthedefinition,analyzesitsoperationprincipleandrelevantformula,procedures,,leteveryoneknowwhatconvolution.
Keywords:
Matlab;Linearconvolution;Circularconvolution;
0引言
在泛函数分析中,卷积(卷积)、旋积或摺积(英语:
Convolution)是通过两个函数f和g生成第三个函数的一种数学算子,表徵函数f与经过翻转和平移与g的重叠部分的累积。
如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“滑动平均”的推广。
卷积是分析数学中一种重要的运算,数学上的卷积在信号处理中有着非常广泛的应用。
只要这个系统是线性的,对于一维空间是这样,二维、三维都是这样,空间域信号是这样,时间域信号也是这样。
一切信号传递处理系统都是卷积系统,但是信号发生系统不像卷积这样,因为信号发生系统不是一个无中生有的系统,它需要消耗能量,而且是一个非线性系统。
卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。
利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。
明确了这些含义以后,我们认为信号放大系统是卷积,信号测量和计数系统也是积。
进一步推广照相系统是卷积,视觉系统也是卷积。
世界上所有的系统都是卷积,例如脉搏是心跳的卷积,水压的波动是泵水电动机转动力的卷积,只要系统是线性的或近似线性的。
卷积的概念还可以推广到数列、测度以及广义函数上去。
因此,我们得到这样一个一般性的结论——卷积在我们的生活中无处不在,它的应用非常广泛。
1MATLAB软件简介
MATLAB名字由MATRIX和LABORATORY两词的前三个字母组合而成。
顾名思义,就是矩阵实验室(matrixlaboratory)。
MATLAB是一种高性能的科学计算软件,并且广泛应用于数学计算、算法开发、数学建模、系统仿真、数据分析可视化和程序设计集成化等,其具有强大的矩阵运算能力和极高的编程效率,而且使用我们熟悉的数字符号表示问题与答案,这对于初学者来说很容易上手,同时也方便了用户对自己需要的应用程序的开发,运行相应的程序还可以在图形用户界面的建立各种波形仿真图。
MATLAB是一个交互系统,它的基本数据元素是数组,尤其适合解决用矩阵和向量组织数据的科学技术计算问题,对于各种信号的处理可以用不同的库函数或者用户自己编辑的程序来处理,由此可以得到不同的结果,并且还可以经过图形显示来验证[1]。
1.1MATLAB的组成
MATLAB很重要的特点,是附加了一个解决专门问题的应用程序大家族,叫工具箱。
它对于MATLAB用户是非常重要的,能让用户学习和应用专门的技术。
工具箱是MATLAB函数的全面集合,扩展了MATLAB解决特殊类型问题的环境。
工具箱可以应用的领域包括信号处理、控制系统、神经网络、磨具逻辑、子波、模拟等方面。
MATLAB这个名字,代表MATRIXLABOROATOR.MATLAB系统由5个主要部分组成:
1.1.1开发环境
这是一组工具程序,帮助用户使用MATLAB功能和文件。
许多工具是图形用户界面,包括MATLAB桌面和命令窗口,命令的历史窗口,编辑器和差错程序,观看帮助信息的浏览器,工作区,文件和收索路径。
1.1.2MATLAB的数学函数库
这是一个计算算法的巨大集合,范围从初等函数,入求和、正弦、余弦和复数运算,到更高级别的函数,像矩阵求逆、矩阵特征值、贝赛尔函数和快速傅里叶变换。
1.1.3MATLAB语言
一个高级的矩阵和数组运算,具有控制流语句、函数、数据结构、输入和输出、面向对象的程序特点。
用这种语言能够快速建立运行快且短小的程序,也能建立大的和复杂的应用程序。
1.1.4图形
MATLAB有广泛的程序,用于把向量和矩阵显示为图形,以及注解和打印这些图像。
它包括高级功能,用于二维和三维数据的形象化、图像处理、动画和演示图形;包括低级功能,让用户完全定制图形外观,以及为用户的应用程序建立完全的图形用户界面。
1.1.5MATLAB应用程序接口(API)
这是一个程序库,允许用户写C和FORTRAN程序与MATLAB交互。
其中包含的程序,用于从MATLAB调用例行程序,调用MATLAB作为计算引擎,以及读取MAT文件。
2卷积分析
2.1卷积的定义
任意信号都可以根据不同需要进行不同的分解。
如信号可以分解为直流分量和交流分量,也可以分解为奇分量和偶分量,或分解为实部分量和虚部分量。
如果信号费解为冲击信号,那么信号分解为一系列不同强度,不同时延的冲击信号的叠加,这个过程称为卷积积分。
一般而言,如果有两个函数
和
,则它们的积分
称为
与
的卷积积分,简称卷积,表达式为:
,即:
2.2线性卷积的运算
卷积运算是线性时不变系统分析的重要工具,很多滤波器的设计中都要用到卷积运算。
给出线性卷积运算的定义,设有离散信号x(n)和y(n),其线性卷积为:
线性卷积有四步运算:
①卷积运算时,y(n)要先反折得到y(-n);②m>0表示y(-n)序列右移,m<0表示左移,不同的m表示不同的值。
线性卷积运算简洁表示为:
式中“∗”表示线性卷积运算符。
由线性卷积的定义,等式右边是乘积求和形式,,因而考虑能否用矩阵相乘的形式来表示线性卷积。
假设序列x(n)长度为4点,y(n)长度为3点,x(n)除区间之外皆为零,y(n)除区间之外皆为零,用矩阵的形式来表达线性卷积Z:
x(n),y(n)序列长度不同,则将短序列补0使两者相同[2]。
2.3循环卷积的运算
有限长序列的循环移位是指y((m-n)),也就是先让序列y(n)以N为周期进行周期延拓,再进行反折,然后朝右移位,只朝一个方向移位的原因是:
对周期序列向右移动一个位置,也就相当于向左移动了N-1个位置,最后取(0,N-1)的N个值就得到了循环移位后的N个序列值。
设有序列x(n)和y(n),其N点循环卷积为:
由于循环移位的关系最后得到的循环卷积的长度就是N点,m取[0,1,2,…,N-1]。
循环卷积的简洁表示为:
式中
表示循环卷积运算符。
例如N=4的循环卷积如下:
其中,N≥length(y(n))。
值得说明的是,当N≥length(y(n))+length(x(n))-1时,圆周卷积的值等于线性卷积。
3线性卷积与循环卷积比较
两个序列的N点循环卷积的定义为:
从定义中可以看到,循环卷积和线性卷积的不同之处在于:
两个N点序列的N点循环卷积的结果仍为N点序列,而它们的线性卷积的结果的长度则为2N-1;循环卷积对序列的位移采取循环位移,而线性卷积对序列采取线性位移。
正是这些不同,导致了线性卷积和循环卷积有不同的结果和性质。
循环卷积和线性卷积虽然是不同的概念,但它们之间由一个有意义的公式联系在一起:
其中
。
也就是说,两个序列的N点循环卷积是他们的线性卷积以N为周期延拓。
设序列
的长度为N1,序列
的长度为N2,此时,线性卷积结果的序列的点数为
;因此如果循环卷积的点数N小于
那么上述周期性延拓的结果就会产生混叠,从而两种卷积会有不同的结果。
而如果N满足
的条件,就会有
这就意味着在时域不会产生混叠。
因此,我们得出结论:
若通过在序列的末尾填充适当的零值,使得
和
成为
点序列,并作出这两个序列的
循环卷积,那么循环卷积与线性卷积的结果在
范围内相同[4]。
根据DFT循环卷积性质中的卷积定理
便可通过两种方法求两个序列的循环卷积:
一是直接根据定义计算;二是根据性质先分别求两个序列的N点DFT,并相乘,然后取IDFT以得到循环卷积。
第二种方法看起来要经过若干个步骤,但由于求序列的DFT和IDFT都有快速算法,因此它的效率比第一种方法高得多。
同样,根据线性卷积和循环卷积的关系,可以通过计算循环卷积以求得线性卷积,提高计算序列线性卷积的效率[3]。
举例进行比较:
已知两序列
=
(
);
=1(
)
0其他0其他
求两序列的线性卷积和它们的N点循环卷积。
实验程序及仿真结果如图3.1所示:
线性卷积的MATLAB设计源程序
functiony=myconv(x1,x2)
x1=input('x1=');
x2=input('x2=');
N1=length(x1);
M=length(x2);
L=N1+M-1;
for(n=1:
L)
y(n)=0;
for(m=1:
M)
k=n-m+1;
if(k>=1&k<=N1)
y(n)=y(n)+x2(m)*x1(k);
end
end
end
y1=conv(x1,x2);
nx1=0:
N1-1;
nx2=0:
M-1;
ny=0:
L-1;
subplot(231);
stem(nx1,x1,'.k');xlabel('n');ylabel('x1(n)');gridon;
title('序列x1')
subplot(232);
stem(nx2,x2,'.k');xlabel('n');ylabel('x2(n)');gridon;
title('序列x2')
subplot(233);
stem(ny,y,'.k');xlabel('n');ylabel('y(n)');gridon;
title('线性卷积')
subplot(234);
stem(y1');xlabel('n');ylabel('y1');gridon;
title('conv直接卷积')
运行程序,输入序列x1和x2
x1=[-1124]
x2=[2.44556]
线性卷积结果:
[-2.4000-1.60003.800017.600025.000036.000032.000024.0000]
运行如下
图3.1线性卷积
根据循环卷积流程图设计matlab源代码
functiony=myconv(x1,x2)
x1=input('x1=');
x2=input('x2=');
N=input('N=');
x1=[x1,zeros(1,N-length(x1))];
x2=[x2,zeros(1,N-length(x2))];
V=circlel(x2)
Z=x1*V;
stem(Z');xlabel('n');ylabel('Z');gridon;
title('循环卷积结果Z')
运行程序,输入序列x1,x2
x1=[-123-5]
x2=[67-10412]
循环卷积结果
[10-5542-33-6986]
运行图形如图3.2所示
图3.2循环卷积
4小结
通过这次设计,我进一步理解并掌握了循环卷积与线性卷积的概念。
虽然这次学年论文较为复杂,但是通过复习课后所学并且进行消化,然后再通过查阅资料,得以提高。
而且通过这次实验,我们也积累出两者之间的关系,相信通过这些,对于我们今后的学习,有着莫大的帮助。
本次学年论文设计,检验了自己的能力,加强了逻辑思维的能力,不过我也发现了自身存在的一些问题,比如在MATLAB软件的应用上还有一些功能不懂如何运用的地方,但是是在老师和同学的帮助下,我认真学习,并且懂得了许多以前不懂的matlab的运用。
还有很多matlab的强大功能,希望能在日后好好学习,取得更好的成绩,也希望日后老师能不厌其烦的指导我,给予我更大的支持。
参考文献
[1]王琦,高军锋等.MATLAB基础与应用实例集萃[M].北京:
人民邮电出版社,2007
[2]程佩青.数字信号处理教程.北京:
清华大学出版社,2000
[3]邹鲲,袁俊泉,龚享铱.MATLAB6.x信号处理[M].北京:
清华大学出版社,2002.5
[4]罗建军,杨琦.MATLAB教程[M].北京:
电子工业出版社,2007
电子与信息工程系学年论文(设计)成绩评定表
学生姓名
弋莹
专业班级
10级电本1班
学号
2010222326
指导老师
余顺园
职称
工作单位
题目:
线性卷积与循环卷积的比较
指导教师评语:
建议成绩:
指导教师(签字):
年月日
教研室意见:
教研室主任(签字):
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 线性 卷积 循环 比较