matlab实现线性卷积和循环卷积

编号:

数字信号处理

实训 (论文) 说明书

题 目: 用matlab 实现两信号的卷积

院 (系): 应用科技学院

专 业: 电子信息工程

学生姓名: 蒋耀华

学 号: 0801130215

指导教师: 严素清 童有为 纪元法

2011 年 6 月 29日

桂林电子科技大学实训专用纸

桂林电子科技大学实训专用纸

摘 要

本文讲述的是运用matlab 软件编写线性卷积和循环卷积,运行程序并得到正确结果,附上运行结果图让大家参照对比。

MATLAB 是一款在数学类科技应用软件中特别是在数值计算方面首屈一指的软件,它可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。而线性卷积和循环卷积在工程上的应用亦非常广泛,在Matlab 软件处理下,实现任意两个序列的线性和循环卷积对于工程上的辅助是相当重要的。卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT 等快速算法,实现有效的计算,节省运算代价。

本文从线性卷积和循环的定义出发,分析其运算原理以及相关的公式、程序,着重介绍并分析了卷积的运算过程,让大家明白什么是卷积。程序运行之后得到正确的结果,将运行后正确的波形图图放在本次论文中让大家直观的做比较。

关键词:Matlab ;线性卷积;循环卷积;波形图;正确

Abstract

This is about using matlab software linear convolution and cyclic convolution, operation procedure and get the right result, enclosed operation result diagram let everybody reference

MATLAB is a type of technology in applications of mathematics, especially in numerical calculation of the leading software, which can be matrix calculation, and data mapping function, the realization of algorithms, creation of user interface, connected to other procedures, such as programming languages, the main application in engineering computing, control design, signal processing and communications, image processing, signal detection, financial modeling in areas such as design and analysis. And linear convolution in the application of engineering has a very wide range of software in Matlab, the realization of any two sequences of linear convolution support for projects is very important. Convolution relationship between the most important case, that is linear in the signal and digital signal processing system or the convolution theorem. Use of the theorem can be time-domain or space domain to the convolution operation in frequency domain equivalent of the multiplication operation, thus the use of FFT and other fast algorithms, the calculation of effective, cost-saving operation.

From linear convolution and circulation of the definition, analyzes its operation principle and relevant formula, procedures, and emphatically introduces and analyses the convolution operation process, let everyone know what convolution. After the program is running properly after operation, the results will be put on the right of the waveform Desmond tutu paper let everybody intuitive to compare.

Key words:Matlab ;Linear convolution;Circular convolution;Sequence ;Wave ;Right

目 录

引言 ....................................................................................................................... 1

1 MATLAB软件简介 ............................................................................................ 1

1.1 MATLAB的优势 . ........................................................................................................... 1

1.2 MATLAB的组成 . ........................................................................................................... 3

2 卷积分析 ......................................................................................................... 3

2.1 卷积的定义 . ................................................................................................................ 3

2.2 线性卷积的运算 . ........................................................................................................ 4

2.3 循环卷积的运算 . ........................................................................................................ 4

3 MATLAB设计线性卷积 . ................................................................................... 5

3.1 线性卷积的分析 . ........................................................................................................ 5

3.2 线性卷积的设计流程图 . ............................................................................................ 5

3.3 线性卷积的MATLAB 设计源程序 . .............................................................................. 6

4 MATLAB设计循环卷积 . ................................................................................... 8

4.1 循环卷积的分析 . ........................................................................................................ 8

4.2 根据循环卷积分析设计流程图 . ................................................................................ 8

4.3 根据循环卷积流程图设计matlab 源代码 . .............................................................. 9

5 总结 ............................................................................................................... 10

谢 辞 ................................................................................................................. 12

参考文献 ............................................................................................................. 13

引言

在泛函分析中,卷积(卷积) 、旋积或摺积(英语:Convolution) 是通过两个函数f 和g 生成第三个函数的一种数学算子,表徵函数f 与经过翻转和平移与g 的重叠部分的累积。如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“滑动平均”的推广。

卷积是分析数学中一种重要的运算,数学上的卷积在信号处理中有着非常广泛的应用。只要这个系统是线性的,对于一维空间是这样,二维、三维都是这样,空间域信号是这样,时间域信号也是这样。一切信号传递处理系统都是卷积系统,但是信号发生系统不像卷积这样,因为信号发生系统不是一个无中生有的系统,它需要消耗能量,而且是一个非线性系统。

卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT 等快速算法,实现有效的计算,节省运算代价。

明确了这些含义以后,我们认为信号放大系统是卷积,信号测量和计数系统也是积。进一步推广照相系统是卷积,视觉系统也是卷积。世界上所有的系统都是卷积,例如脉搏是心跳的卷积,水压的波动是泵水电动机转动力的卷积,只要系统是线性的或近似线性的。卷积的概念还可以推广到数列、测度以及广义函数上去。因此,我们得到这样一个一般性的结论——卷积在我们的生活中无处不在,它的应用非常广泛。

1 MATLAB软件简介

MATLAB 名字由MATRIX 和 LABORATORY 两词的前三个字母组合而成。顾名思义,就是矩阵实验室( matrix laboratory )。MATLAB 是一种高性能的科学计算软件,并且广泛应用于数学计算、算法开发、数学建模、系统仿真、数据分析可视化和程序设计集成化等,其具有强大的矩阵运算能力和极高的编程效率,而且使用我们熟悉的数字符号表示问题与答案,这对于初学者来说很容易上手,同时也方便了用户对自己需要的应用程序的开发,运行相应的程序还可以在图形用户界面的建立各种波形仿真图。

MATLAB 是一个交互系统,它的基本数据元素是数组,尤其适合解决用矩阵和向量组织数据的科学技术计算问题,对于各种信号的处理可以用不同的库函数或者用户自己编辑的程序来处理,由此可以得到不同的结果,并且还可以经过图形显示来验证。

1.1 MATLAB的优势

MATLAB 编程语言又称为M 语言,是一种交互式的高级编程语言,一种高阶的矩阵/数组语言。它具有以下的特点和优势:

第1页

(1)语法简单和编程效率高

(2)便于用户使用和扩充

(3)方便高校的矩阵和数组运算

(4)方便的图形和图像操作功能

(5)功能强大的工具箱

1.1.1 语法简单编程效率高

MATLAB 是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。新版本的MATLAB 语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。

1.1.2 便于用户使用和补充

新版本的MATLAB 可以利用MATLAB 编译器和C/C++数学库和图形库,将自己的MATLAB 程序自动转换为独立于MATLAB 运行的C 和C++代码。允许用户编写可以和MATLAB 进行交互的C 或C++语言程序

作为强大的科学计算软件,MATLAB 提供了图形界面的设计与开发功能,MATLAB 中的基本图形用户界面对象分为三类:用户界面控制对象、下拉式菜单对象和内容式菜单对象。

1.1.3 方便高校的矩阵和数组运算

MATLAB 是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。在高校中,MATLAB 以成为数学,信息,控制等诸多学科有关课程的有效教学工具

1.1.4 方便图形和图像操作功能

MATLAB 自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。它对一些特殊的可视化要求,例如图形对话等,MATLAB 也有相应的功能函数,保证了用户不同层次的要求。

1.1.5 功能强大的工具箱

MATLAB 对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而

不需要自己编写代码。

1.2 MATLAB的组成

MATLAB 很重要的特点,是附加了一个解决专门问题的应用程序大家族,叫工具箱。它对于MATLAB 用户是非常重要的,能让用户学习和应用专门的技术。工具箱是MATLAB 函数的全面集合,扩展了MATLAB 解决特殊类型问题的环境。工具箱可以应用的领域包括信号处理、控制系统、神经网络、磨具逻辑、子波、模拟等方面。MATLAB 这个名字,代表MATRIX LABOROATOR.MATLAB系统由5个主要部分组成:

1.2.1 开发环境

这是一组工具程序,帮助用户使用MATLAB 功能和文件。许多工具是图形用户界面,包括MATLAB 桌面和命令窗口,命令的历史窗口,编辑器和差错程序,观看帮助信息的浏览器,工作区,文件和收索路径。

1.2.2 MATLAB的数学函数库

这是一个计算算法的巨大集合,范围从初等函数,入求和、正弦、余弦和复数运算,到更高级别的函数,像矩阵求逆、矩阵特征值、贝赛尔函数和快速傅里叶变换。

1.2.3 MATLAB语言

一个高级的矩阵和数组运算,具有控制流语句、函数、数据结构、输入和输出、面向对象的程序特点。用这种语言能够快速建立运行快且短小的程序,也能建立大的和复杂的应用程序。

1.2.4 图形

MATLAB 有广泛的程序,用于把向量和矩阵显示为图形,以及注解和打印这些图像。它包括高级功能,用于二维和三维数据的形象化、图像处理、动画和演示图形;包括低级功能,让用户完全定制图形外观,以及为用户的应用程序建立完全的图形用户界面。

1.2.5 MATLAB应用程序接口(API )

这是一个程序库,允许用户写C 和FORTRAN 程序与MATLAB 交互。其中包含的程序,用于从MATLAB 调用例行程序,调用MATLAB 作为计算引擎,以及读取MAT 文件。 2 卷积分析

2.1 卷积的定义

任意信号都可以根据不同需要进行不同的分解。如信号可以分解为直流分量和交流

分量,也可以分解为奇分量和偶分量,或分解为实部分量和虚部分量。如果信号费解为冲击信号,那么信号分解为一系列不同强度,不同时延的冲击信号的叠加,这个过程称为卷积积分。

一般而言,如果有两个函数f 1(t )和f 2(t ),则它们的积分y (t )=⎰f 1(τ)f 2(t -τ)d τ称-∞+∞

为f 1(t )与f 2(t )的卷积积分,简称卷积,表达式为:y (t )=f 1(t )*f 2(t ),即:

y (t )=f 1(t )*f 2(t )=⎰f 1(τ)f 2(t -τ)d τ -∞+∞

2.2 线性卷积的运算

卷积运算是线性时不变系统分析的重要工具,很多滤波器的设计中都要用到卷积运算。给出线性卷积运算的定义,设有离散信号x(n)和y(n),其线性卷积为:

线性卷积有四步运算:①卷积运算时,y(n)要先反折得到y(-n);②m>0表示y(-n)序列右移,m

式中 “∗”表示线性卷积运算符。

由线性卷积的定义,等式右边是乘积求和形式,,因而考虑能否用矩阵相乘的形式来表示线性卷积。假设序列x(n) 长度为4点,y(n) 长度为3点,x(n) 除区间之外皆为零,y(n) 除区间之外皆为零,用矩阵的形式来表达线性卷积Z:

0 0

Z= 0

0 0

0 0 0

x(n),y(n)序列长度不同,则将短序列补0使两者相同。

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的循环卷积如下:

Z=

其中,N ≥length(y(n))。

值得说明的是,当N ≥length(y(n))+ length(x(n))-1时,圆周卷积的值等于线性卷积。 3 MATLAB设计线性卷积

3.1 线性卷积的分析

两个序列的线性卷积可以分为下列4个步骤:

(1)反折:先将x(n)和h(n)的变量n 换成m ,变成x(n)和h(m),再将h(m)以y 轴为对称轴反褶成h(-m)。

(2)移位:将h(-m)移位n ,得h(n-m)。当n 为正数时,右移n 位;当n 为负数时,左移n 位。

(3)相乘:将h(n-m)和x(m)的对应点值相乘。

(4)求和:将以上所有对应点的乘积累加起来,即得y(n)。

3.2 线性卷积的设计流程图

根据线性卷积的分析,可设计流程图如图3.1所示

图3.1线性卷积流程图

3.3 线性卷积的MATLAB 设计源程序

本次实训的源程序如下: function y=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

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)');grid on; title('序列x1') subplot(232);

stem(nx2,x2,'.k');xlabel('n');ylabel('x2(n)');grid on; title('序列x2') subplot(233);

stem(ny,y,'.k');xlabel('n');ylabel('y(n)');grid on; title('线性卷积') subplot(234);

stem(y1');xlabel('n');ylabel('y1');grid on; title('conv直接卷积')

运行程序,输入序列x1和x2 x1=[-1 2 3 -5] x2=[6 7 -10 4 12]

线性卷积结果:

[-6 5 42 -33 -69 86 16 -60] 运行结果如图3.2所示:

图3.2线性卷积运行结果

4 MATLAB设计循环卷积

4.1 循环卷积的分析

两个序列的循环卷积可以分三个步骤完成:

(1)初始化:确定循环点数N ,测量输入2个序列的长度,长度小于N 的在后面补0。 (2)循环右移函数:将序列x(n)循环右移,一共移N 次(N 为循环卷积的循环次数),最后将每次循环成的新序列组成一个矩阵V 。

(3)相乘:将x(n)移位后组成的矩阵V 与第二个序列h(n)对应相乘,即得循环卷积结果。

4.2 根据循环卷积分析设计流程图

循环卷积流程图如图4.1所示: (1)

主流程图

(2)循环函数流程图

图4.1循环卷积流程图

4.3 根据循环卷积流程图设计matlab 源代码

function y=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');grid on; title('循环卷积结果Z') 运行程序,输入序列x1,x2 x1=[-1 2 3 -5] x2=[6 7 -10 4 12] 循环卷积结果

[10 -55 42 -33 -69 86] 运行图形如图4.2所示

图4.2循环卷积运行结果

5 总结

总结本次数字信号处理实训,我受益匪浅。

首先就是方案的确定。由于这个学期我学习了DSP 这门课程,课程中我了解到要实现两信号的卷积,可以通过定义来实现,也可以通过DFT 来计算线性卷积。对于有限长序列,存在两种形式的卷积:线性卷积与圆周卷积。由于圆周卷积可以采用DFT 的快速算法——快速傅里叶变换进行运算,运算速度上有很大的优越性。

其中,设计线性卷积有4个步骤,反折、移位 、相乘、求和,而循环卷积则是通过循环移位后得到的矩阵与序列相乘。根据上DSP 课上老师讲的求法,画出了思路的流程图,然后根据流程图写出程序,事半功倍。

将结果与直接调用matlab 自带的函数比较,结果显示,自己设计的程序是正确的。 通过这次实训,我对线性卷积和循环的定义、原理、以及实现方法都有了深入的认识。同时也对MATLAB 软件产生了更加浓厚的兴趣。在做完本次实训要求的线性卷积之后,我运用了同样的思路,设计出了循环卷积,算是对本次实训的一个扩展,同时也提高了自己的编程水平和对matlab 的运用。

本次实训,检验了自己的能力,加强了逻辑思维的能力,不过我也发现了自身存在的一些问题,比如在MATLAB 软件的应用上还有一些功能不懂如何运用的地方,但是是在老师和同学的帮助下,我认真学习,并且懂得了许多以前不懂的matlab 的运用。还有很多matlab 的强大功能,希望能在日后好好学习,取得更好的成绩,也希望日后老师能不厌其烦的指导我,给予我更大的支持。

谢 辞

本次实训,我非常的感谢严素清老师在实训期间给了我很多的指导与帮助,首先是全面的为我们讲解实训中的一些注意事项,然后在我遇到不懂的程序思路问题上提醒了我如何解决,并且在时间上督促我们按时完成相应的进度,保证了我们实训能够按时完成。还要感谢符强老师,感谢他提出建议让我以C 语言的思路去写matlab 的程序,并举得了成功,同时要求我们能够在做完自己课题之后做一些相关的扩展,是因为符强老师的监督,才让我有想法去做实训的扩展,并运行成功。最后感谢纪元法老师,在问问题的时候能够耐心的回答我们,并鼓励我们多看书。

最后,再次衷心地感谢所有关心、支持、帮助过我的老师、同学和亲友!

参考文献

[1]戴明桢等编著.TMS320C54X DSP 结构原理及应用. 北京:航空航天大学出版社,第2版,2007; [2]彭启琮编著.DSP 技术的发展与应用. 北京:高等教育出版社,2002;

[3]胡广书编著. 数字信号处理理论、算法与实现. 北京:清华大学出版社,2005;

[4]北京合众达电子技术有限公司编著.SEED-DTK 系列实验手册. 北京合众达电子技术有限公司出版,2007。

[5] 李真芳,苏涛等.DSP 程序开发一MATLAB 调试及直接目标代码生成「M].西安:西安电子科技大学出版社,2003.87--163.

[6] 楼顺天,李博函. 基于MATLAB 的系统分析与设计一信号处理[M].西安:西安电子科技大学出版社,1998.81--88.

[7]王秀芳,关凌涛. 基于MatLab 与DSP 的滤波器的快速设计方法[期刊文章].现代计算机,2008,总第二七七期:97--99

[8]赵秀玲. 基于定点DSP 的FIR 数字滤波器的研究与设计[硕士论文].曲阜师范大学,2007.15--32 [9]罗军辉,罗勇江等.MATLAB 在数字信号处理中的应用「M].北京:机械工业出版社,2005.63--128.

编号:

数字信号处理

实训 (论文) 说明书

题 目: 用matlab 实现两信号的卷积

院 (系): 应用科技学院

专 业: 电子信息工程

学生姓名: 蒋耀华

学 号: 0801130215

指导教师: 严素清 童有为 纪元法

2011 年 6 月 29日

桂林电子科技大学实训专用纸

桂林电子科技大学实训专用纸

摘 要

本文讲述的是运用matlab 软件编写线性卷积和循环卷积,运行程序并得到正确结果,附上运行结果图让大家参照对比。

MATLAB 是一款在数学类科技应用软件中特别是在数值计算方面首屈一指的软件,它可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。而线性卷积和循环卷积在工程上的应用亦非常广泛,在Matlab 软件处理下,实现任意两个序列的线性和循环卷积对于工程上的辅助是相当重要的。卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT 等快速算法,实现有效的计算,节省运算代价。

本文从线性卷积和循环的定义出发,分析其运算原理以及相关的公式、程序,着重介绍并分析了卷积的运算过程,让大家明白什么是卷积。程序运行之后得到正确的结果,将运行后正确的波形图图放在本次论文中让大家直观的做比较。

关键词:Matlab ;线性卷积;循环卷积;波形图;正确

Abstract

This is about using matlab software linear convolution and cyclic convolution, operation procedure and get the right result, enclosed operation result diagram let everybody reference

MATLAB is a type of technology in applications of mathematics, especially in numerical calculation of the leading software, which can be matrix calculation, and data mapping function, the realization of algorithms, creation of user interface, connected to other procedures, such as programming languages, the main application in engineering computing, control design, signal processing and communications, image processing, signal detection, financial modeling in areas such as design and analysis. And linear convolution in the application of engineering has a very wide range of software in Matlab, the realization of any two sequences of linear convolution support for projects is very important. Convolution relationship between the most important case, that is linear in the signal and digital signal processing system or the convolution theorem. Use of the theorem can be time-domain or space domain to the convolution operation in frequency domain equivalent of the multiplication operation, thus the use of FFT and other fast algorithms, the calculation of effective, cost-saving operation.

From linear convolution and circulation of the definition, analyzes its operation principle and relevant formula, procedures, and emphatically introduces and analyses the convolution operation process, let everyone know what convolution. After the program is running properly after operation, the results will be put on the right of the waveform Desmond tutu paper let everybody intuitive to compare.

Key words:Matlab ;Linear convolution;Circular convolution;Sequence ;Wave ;Right

目 录

引言 ....................................................................................................................... 1

1 MATLAB软件简介 ............................................................................................ 1

1.1 MATLAB的优势 . ........................................................................................................... 1

1.2 MATLAB的组成 . ........................................................................................................... 3

2 卷积分析 ......................................................................................................... 3

2.1 卷积的定义 . ................................................................................................................ 3

2.2 线性卷积的运算 . ........................................................................................................ 4

2.3 循环卷积的运算 . ........................................................................................................ 4

3 MATLAB设计线性卷积 . ................................................................................... 5

3.1 线性卷积的分析 . ........................................................................................................ 5

3.2 线性卷积的设计流程图 . ............................................................................................ 5

3.3 线性卷积的MATLAB 设计源程序 . .............................................................................. 6

4 MATLAB设计循环卷积 . ................................................................................... 8

4.1 循环卷积的分析 . ........................................................................................................ 8

4.2 根据循环卷积分析设计流程图 . ................................................................................ 8

4.3 根据循环卷积流程图设计matlab 源代码 . .............................................................. 9

5 总结 ............................................................................................................... 10

谢 辞 ................................................................................................................. 12

参考文献 ............................................................................................................. 13

引言

在泛函分析中,卷积(卷积) 、旋积或摺积(英语:Convolution) 是通过两个函数f 和g 生成第三个函数的一种数学算子,表徵函数f 与经过翻转和平移与g 的重叠部分的累积。如果将参加卷积的一个函数看作区间的指示函数,卷积还可以被看作是“滑动平均”的推广。

卷积是分析数学中一种重要的运算,数学上的卷积在信号处理中有着非常广泛的应用。只要这个系统是线性的,对于一维空间是这样,二维、三维都是这样,空间域信号是这样,时间域信号也是这样。一切信号传递处理系统都是卷积系统,但是信号发生系统不像卷积这样,因为信号发生系统不是一个无中生有的系统,它需要消耗能量,而且是一个非线性系统。

卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT 等快速算法,实现有效的计算,节省运算代价。

明确了这些含义以后,我们认为信号放大系统是卷积,信号测量和计数系统也是积。进一步推广照相系统是卷积,视觉系统也是卷积。世界上所有的系统都是卷积,例如脉搏是心跳的卷积,水压的波动是泵水电动机转动力的卷积,只要系统是线性的或近似线性的。卷积的概念还可以推广到数列、测度以及广义函数上去。因此,我们得到这样一个一般性的结论——卷积在我们的生活中无处不在,它的应用非常广泛。

1 MATLAB软件简介

MATLAB 名字由MATRIX 和 LABORATORY 两词的前三个字母组合而成。顾名思义,就是矩阵实验室( matrix laboratory )。MATLAB 是一种高性能的科学计算软件,并且广泛应用于数学计算、算法开发、数学建模、系统仿真、数据分析可视化和程序设计集成化等,其具有强大的矩阵运算能力和极高的编程效率,而且使用我们熟悉的数字符号表示问题与答案,这对于初学者来说很容易上手,同时也方便了用户对自己需要的应用程序的开发,运行相应的程序还可以在图形用户界面的建立各种波形仿真图。

MATLAB 是一个交互系统,它的基本数据元素是数组,尤其适合解决用矩阵和向量组织数据的科学技术计算问题,对于各种信号的处理可以用不同的库函数或者用户自己编辑的程序来处理,由此可以得到不同的结果,并且还可以经过图形显示来验证。

1.1 MATLAB的优势

MATLAB 编程语言又称为M 语言,是一种交互式的高级编程语言,一种高阶的矩阵/数组语言。它具有以下的特点和优势:

第1页

(1)语法简单和编程效率高

(2)便于用户使用和扩充

(3)方便高校的矩阵和数组运算

(4)方便的图形和图像操作功能

(5)功能强大的工具箱

1.1.1 语法简单编程效率高

MATLAB 是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。新版本的MATLAB 语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。

1.1.2 便于用户使用和补充

新版本的MATLAB 可以利用MATLAB 编译器和C/C++数学库和图形库,将自己的MATLAB 程序自动转换为独立于MATLAB 运行的C 和C++代码。允许用户编写可以和MATLAB 进行交互的C 或C++语言程序

作为强大的科学计算软件,MATLAB 提供了图形界面的设计与开发功能,MATLAB 中的基本图形用户界面对象分为三类:用户界面控制对象、下拉式菜单对象和内容式菜单对象。

1.1.3 方便高校的矩阵和数组运算

MATLAB 是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。在高校中,MATLAB 以成为数学,信息,控制等诸多学科有关课程的有效教学工具

1.1.4 方便图形和图像操作功能

MATLAB 自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。它对一些特殊的可视化要求,例如图形对话等,MATLAB 也有相应的功能函数,保证了用户不同层次的要求。

1.1.5 功能强大的工具箱

MATLAB 对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而

不需要自己编写代码。

1.2 MATLAB的组成

MATLAB 很重要的特点,是附加了一个解决专门问题的应用程序大家族,叫工具箱。它对于MATLAB 用户是非常重要的,能让用户学习和应用专门的技术。工具箱是MATLAB 函数的全面集合,扩展了MATLAB 解决特殊类型问题的环境。工具箱可以应用的领域包括信号处理、控制系统、神经网络、磨具逻辑、子波、模拟等方面。MATLAB 这个名字,代表MATRIX LABOROATOR.MATLAB系统由5个主要部分组成:

1.2.1 开发环境

这是一组工具程序,帮助用户使用MATLAB 功能和文件。许多工具是图形用户界面,包括MATLAB 桌面和命令窗口,命令的历史窗口,编辑器和差错程序,观看帮助信息的浏览器,工作区,文件和收索路径。

1.2.2 MATLAB的数学函数库

这是一个计算算法的巨大集合,范围从初等函数,入求和、正弦、余弦和复数运算,到更高级别的函数,像矩阵求逆、矩阵特征值、贝赛尔函数和快速傅里叶变换。

1.2.3 MATLAB语言

一个高级的矩阵和数组运算,具有控制流语句、函数、数据结构、输入和输出、面向对象的程序特点。用这种语言能够快速建立运行快且短小的程序,也能建立大的和复杂的应用程序。

1.2.4 图形

MATLAB 有广泛的程序,用于把向量和矩阵显示为图形,以及注解和打印这些图像。它包括高级功能,用于二维和三维数据的形象化、图像处理、动画和演示图形;包括低级功能,让用户完全定制图形外观,以及为用户的应用程序建立完全的图形用户界面。

1.2.5 MATLAB应用程序接口(API )

这是一个程序库,允许用户写C 和FORTRAN 程序与MATLAB 交互。其中包含的程序,用于从MATLAB 调用例行程序,调用MATLAB 作为计算引擎,以及读取MAT 文件。 2 卷积分析

2.1 卷积的定义

任意信号都可以根据不同需要进行不同的分解。如信号可以分解为直流分量和交流

分量,也可以分解为奇分量和偶分量,或分解为实部分量和虚部分量。如果信号费解为冲击信号,那么信号分解为一系列不同强度,不同时延的冲击信号的叠加,这个过程称为卷积积分。

一般而言,如果有两个函数f 1(t )和f 2(t ),则它们的积分y (t )=⎰f 1(τ)f 2(t -τ)d τ称-∞+∞

为f 1(t )与f 2(t )的卷积积分,简称卷积,表达式为:y (t )=f 1(t )*f 2(t ),即:

y (t )=f 1(t )*f 2(t )=⎰f 1(τ)f 2(t -τ)d τ -∞+∞

2.2 线性卷积的运算

卷积运算是线性时不变系统分析的重要工具,很多滤波器的设计中都要用到卷积运算。给出线性卷积运算的定义,设有离散信号x(n)和y(n),其线性卷积为:

线性卷积有四步运算:①卷积运算时,y(n)要先反折得到y(-n);②m>0表示y(-n)序列右移,m

式中 “∗”表示线性卷积运算符。

由线性卷积的定义,等式右边是乘积求和形式,,因而考虑能否用矩阵相乘的形式来表示线性卷积。假设序列x(n) 长度为4点,y(n) 长度为3点,x(n) 除区间之外皆为零,y(n) 除区间之外皆为零,用矩阵的形式来表达线性卷积Z:

0 0

Z= 0

0 0

0 0 0

x(n),y(n)序列长度不同,则将短序列补0使两者相同。

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的循环卷积如下:

Z=

其中,N ≥length(y(n))。

值得说明的是,当N ≥length(y(n))+ length(x(n))-1时,圆周卷积的值等于线性卷积。 3 MATLAB设计线性卷积

3.1 线性卷积的分析

两个序列的线性卷积可以分为下列4个步骤:

(1)反折:先将x(n)和h(n)的变量n 换成m ,变成x(n)和h(m),再将h(m)以y 轴为对称轴反褶成h(-m)。

(2)移位:将h(-m)移位n ,得h(n-m)。当n 为正数时,右移n 位;当n 为负数时,左移n 位。

(3)相乘:将h(n-m)和x(m)的对应点值相乘。

(4)求和:将以上所有对应点的乘积累加起来,即得y(n)。

3.2 线性卷积的设计流程图

根据线性卷积的分析,可设计流程图如图3.1所示

图3.1线性卷积流程图

3.3 线性卷积的MATLAB 设计源程序

本次实训的源程序如下: function y=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

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)');grid on; title('序列x1') subplot(232);

stem(nx2,x2,'.k');xlabel('n');ylabel('x2(n)');grid on; title('序列x2') subplot(233);

stem(ny,y,'.k');xlabel('n');ylabel('y(n)');grid on; title('线性卷积') subplot(234);

stem(y1');xlabel('n');ylabel('y1');grid on; title('conv直接卷积')

运行程序,输入序列x1和x2 x1=[-1 2 3 -5] x2=[6 7 -10 4 12]

线性卷积结果:

[-6 5 42 -33 -69 86 16 -60] 运行结果如图3.2所示:

图3.2线性卷积运行结果

4 MATLAB设计循环卷积

4.1 循环卷积的分析

两个序列的循环卷积可以分三个步骤完成:

(1)初始化:确定循环点数N ,测量输入2个序列的长度,长度小于N 的在后面补0。 (2)循环右移函数:将序列x(n)循环右移,一共移N 次(N 为循环卷积的循环次数),最后将每次循环成的新序列组成一个矩阵V 。

(3)相乘:将x(n)移位后组成的矩阵V 与第二个序列h(n)对应相乘,即得循环卷积结果。

4.2 根据循环卷积分析设计流程图

循环卷积流程图如图4.1所示: (1)

主流程图

(2)循环函数流程图

图4.1循环卷积流程图

4.3 根据循环卷积流程图设计matlab 源代码

function y=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');grid on; title('循环卷积结果Z') 运行程序,输入序列x1,x2 x1=[-1 2 3 -5] x2=[6 7 -10 4 12] 循环卷积结果

[10 -55 42 -33 -69 86] 运行图形如图4.2所示

图4.2循环卷积运行结果

5 总结

总结本次数字信号处理实训,我受益匪浅。

首先就是方案的确定。由于这个学期我学习了DSP 这门课程,课程中我了解到要实现两信号的卷积,可以通过定义来实现,也可以通过DFT 来计算线性卷积。对于有限长序列,存在两种形式的卷积:线性卷积与圆周卷积。由于圆周卷积可以采用DFT 的快速算法——快速傅里叶变换进行运算,运算速度上有很大的优越性。

其中,设计线性卷积有4个步骤,反折、移位 、相乘、求和,而循环卷积则是通过循环移位后得到的矩阵与序列相乘。根据上DSP 课上老师讲的求法,画出了思路的流程图,然后根据流程图写出程序,事半功倍。

将结果与直接调用matlab 自带的函数比较,结果显示,自己设计的程序是正确的。 通过这次实训,我对线性卷积和循环的定义、原理、以及实现方法都有了深入的认识。同时也对MATLAB 软件产生了更加浓厚的兴趣。在做完本次实训要求的线性卷积之后,我运用了同样的思路,设计出了循环卷积,算是对本次实训的一个扩展,同时也提高了自己的编程水平和对matlab 的运用。

本次实训,检验了自己的能力,加强了逻辑思维的能力,不过我也发现了自身存在的一些问题,比如在MATLAB 软件的应用上还有一些功能不懂如何运用的地方,但是是在老师和同学的帮助下,我认真学习,并且懂得了许多以前不懂的matlab 的运用。还有很多matlab 的强大功能,希望能在日后好好学习,取得更好的成绩,也希望日后老师能不厌其烦的指导我,给予我更大的支持。

谢 辞

本次实训,我非常的感谢严素清老师在实训期间给了我很多的指导与帮助,首先是全面的为我们讲解实训中的一些注意事项,然后在我遇到不懂的程序思路问题上提醒了我如何解决,并且在时间上督促我们按时完成相应的进度,保证了我们实训能够按时完成。还要感谢符强老师,感谢他提出建议让我以C 语言的思路去写matlab 的程序,并举得了成功,同时要求我们能够在做完自己课题之后做一些相关的扩展,是因为符强老师的监督,才让我有想法去做实训的扩展,并运行成功。最后感谢纪元法老师,在问问题的时候能够耐心的回答我们,并鼓励我们多看书。

最后,再次衷心地感谢所有关心、支持、帮助过我的老师、同学和亲友!

参考文献

[1]戴明桢等编著.TMS320C54X DSP 结构原理及应用. 北京:航空航天大学出版社,第2版,2007; [2]彭启琮编著.DSP 技术的发展与应用. 北京:高等教育出版社,2002;

[3]胡广书编著. 数字信号处理理论、算法与实现. 北京:清华大学出版社,2005;

[4]北京合众达电子技术有限公司编著.SEED-DTK 系列实验手册. 北京合众达电子技术有限公司出版,2007。

[5] 李真芳,苏涛等.DSP 程序开发一MATLAB 调试及直接目标代码生成「M].西安:西安电子科技大学出版社,2003.87--163.

[6] 楼顺天,李博函. 基于MATLAB 的系统分析与设计一信号处理[M].西安:西安电子科技大学出版社,1998.81--88.

[7]王秀芳,关凌涛. 基于MatLab 与DSP 的滤波器的快速设计方法[期刊文章].现代计算机,2008,总第二七七期:97--99

[8]赵秀玲. 基于定点DSP 的FIR 数字滤波器的研究与设计[硕士论文].曲阜师范大学,2007.15--32 [9]罗军辉,罗勇江等.MATLAB 在数字信号处理中的应用「M].北京:机械工业出版社,2005.63--128.


相关文章

  • 循环卷积与线性卷积的matlab实现
  • 上海电力学院 信号与系统实验报告题目:循环卷积与线性卷积的实现 班级:2011023 专业:电气工程及其自动化 学号:20111257 2013年月17 日12 循环卷积与线性卷积的实现 一.实验目的 1.进一步理解并掌握循环卷积与线性卷积 ...查看


  • 连续信号卷积
  • 实验二 连续信号卷积 一. 实验目的 卷积积分可理解为某线性时不变系统在给定激励下的零状态响应.理解和掌握卷积运算对于线性系统分析来说至为关键.本实验的主要目的就是学习在MATLAB 环境中如何计算和分析连续时间信号的卷积 二. 实验内容 ...查看


  • 数字信号处理讲义(一)卷积
  • 第一部分 卷积 [目的] 1.加深理解卷积的重要作用,更好的利用卷积进行数字信号处理. 2.掌握循环卷积和线性卷积两者之间的关系. [原理] 卷积的定义:g (t ) =f 1(t )*f 2(t )=对于离散序列,则有: ⎰ ∞ -∞ f ...查看


  • 方波和方波信号的卷积及卷积过程演示
  • 课程设计任务书 目 录 1 引 言 ...................................................................................................... ...查看


  • 离散序列卷积和(用matlab实现)
  • 数字信号处理实验报告 实验一 离散时间序列卷积和MATLAB 实现 (一)实验目的:学会用MATLAB 对信号与系统分析的方法,理解离散序列卷积和的计算对进行离散信号与系统分析的重要性. (二)实验原理: 1.离散时间序列f1(k)和f2( ...查看


  • 巴特沃斯低通滤波器的实现方法研究
  • 第15卷第1期2013年1月 大连民族学院学报JournalofDalianNationalitiesUniversity Vol.15,No.1January2013 文章编号:1009-315X(2013)01-0072-04 巴特沃斯 ...查看


  • 运用MATLAB进行连续时间信号卷积运算
  • 实验项目名称:运用MATLAB 进行连续时间信号卷积运算 ( 所属课程:信号与系统 ) 院 系: 专业班级: 姓 名: 学 号: 实验日期: 实验地点: 合 作 者: 指导老师: 本实验项目成绩: 教师签字: 日期: 一:实验目的 1,掌握 ...查看


  • 毕业论文-基于MATLAB的数字图像处理
  • 摘 要 数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务.数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术.数字 ...查看


  • 通信系统中的信道编码方法
  • 通信系统中的信道编码方法 Xx (xx大学信息工程学院, 湖北武汉 430070) 摘要:目前,中国固定和移动两大网络的规模都已位居世界第2位,上网用户也在不断增加,中国的信息通信制造业也得到很大的发展.中国将加快建设新一代信息通信网络技术 ...查看


热门内容