基于MATLAB的卷积演示系统论文.docx

上传人:b****2 文档编号:1917595 上传时间:2023-05-02 格式:DOCX 页数:34 大小:462.66KB
下载 相关 举报
基于MATLAB的卷积演示系统论文.docx_第1页
第1页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第2页
第2页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第3页
第3页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第4页
第4页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第5页
第5页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第6页
第6页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第7页
第7页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第8页
第8页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第9页
第9页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第10页
第10页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第11页
第11页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第12页
第12页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第13页
第13页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第14页
第14页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第15页
第15页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第16页
第16页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第17页
第17页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第18页
第18页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第19页
第19页 / 共34页
基于MATLAB的卷积演示系统论文.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于MATLAB的卷积演示系统论文.docx

《基于MATLAB的卷积演示系统论文.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的卷积演示系统论文.docx(34页珍藏版)》请在冰点文库上搜索。

基于MATLAB的卷积演示系统论文.docx

基于MATLAB的卷积演示系统论文

 

《数字信号处理与应用》课程论文

 

题目:

基于MATLAB的卷积演示系统

基于MATLAB的卷积演示系统

摘要

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

MATLAB是一款在数学类科技应用软件中特别是在数值计算方面首屈一指的软件,它可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

而线性卷积和循环卷积在工程上的应用亦非常广泛,在MATLAB软件处理下,实现任意两个序列的线性和循环卷积对于工程上的辅助是相当重要的。

卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。

利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。

本文从线性卷积和循环的定义出发,分析其运算原理以及相关的公式、程序,着重介绍并分析了卷积的运算过程,让大家明白什么是卷积。

程序运行之后得到正确的结果,将运行后正确的波形图放在本次论文中让大家直观的做比较。

关键词:

MATLAB线性卷积循环卷波形图

 

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,andemphaticallyintroducesandanalysestheconvolutionoperationprocess,leteveryoneknowwhatconvolution.Aftertheprogramisrunningproperlyafteroperation,theresultswillbeputontherightofthewaveformDesmondtutupaperleteverybodyintuitivetocompare.

Keywords:

MATLABLinearconvolutionCircularconvolutionSequenceWave

目录

一背景1

1.1MATLAB的优点1

1.1.1语法简单编程效率高1

1.1.2便于用户使用和补充1

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

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

1.1.5功能强大的工具箱2

1.2MATLAB的组成2

1.2.1开发环境3

1.2.2MATLAB的数学函数库3

1.2.3MATLAB语言3

1.2.4图形4

1.2.5MATLAB应用程序接口(API)4

二设计原理及分析5

2.1卷积的定义5

2.2线性卷积的运算5

2.3循环卷积的运算6

三设计内容与分析8

3.1设计内容8

3.2线性卷积的分析8

3.3循环卷积的分析8

四实验代码及结果10

4.1线性卷积的MATLAB设计源程序10

4.3分析两类卷积关系14

4.4动态演示基于重叠相加法的长序列快速卷积14

4.5用MATLAB设计一个卷积演示界面17

五收获与体会21

参考文献22

附录23

 

一背景

1.1MATLAB的优点

MATLAB编程语言又称为M语言,是一种交互式的高级编程语言,一种高阶的矩阵/数组语言。

它具有以下的特点和优势:

(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.2MATLAB的组成

MATLAB很重要的特点,是附加了一个解决专门问题的应用程序大家族,叫工具箱。

它对于MATLAB用户是非常重要的,能让用户学习和应用专门的技术。

工具箱是MATLAB函数的全面集合,扩展了MATLAB解决特殊类型问题的环境。

工具箱可以应用的领域包括信号处理、控制系统、神经网络、磨具逻辑、子波、模拟等方面。

MATLAB这个名字,代表MATRIXLABOROATOR.MATLAB系统由5个主要部分组成:

1.2.1开发环境

这是一组工具程序,帮助用户使用MATLAB功能和文件。

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

1.2.2MATLAB的数学函数库

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

1.2.3MATLAB语言

一个高级的矩阵和数组运算,具有控制流语句、函数、数据结构、输入和输出、面向对象的程序特点。

用这种语言能够快速建立运行快且短小的程序,也能建立大的和复杂的应用程序。

1.2.4图形

MATLAB有广泛的程序,用于把向量和矩阵显示为图形,以及注解和打印这些图像。

它包括高级功能,用于二维和三维数据的形象化、图像处理、动画和演示图形;包括低级功能,让用户完全定制图形外观,以及为用户的应用程序建立完全的图形用户界面。

1.2.5MATLAB应用程序接口(API)

这是一个程序库,允许用户写C和FORTRAN程序与MATLAB交互。

其中包含的程序,用于从MATLAB调用例行程序,调用MATLAB作为计算引擎,以及读取MAT文件。

 

二设计原理及分析

2.1卷积的定义

任意信号f(t)都可以根据不同需要进行不同的分解。

如信号f(t)可以分解为直流分量和交流分量,也可以分解为奇分量和偶分量,或分解为实部分量和虚部分量。

如果信号费解为冲击信号,那么信号分解为一系列不同强度,不同时延的冲击信号的叠加,这个过程称为卷积积分。

一般而言,如果有两个函数

,则它们的积分

称为

的卷积积分,简称卷积,表达式为:

,即:

2.2线性卷积的运算

卷积运算是线性时不变系统分析的重要工具,很多滤波器的设计中都要用到卷积运算。

给出线性卷积运算的定义,设有离散信号x(n)和y(n),其线性卷积为:

线性卷积有四步运算:

①卷积运算时,y(n)要先反折得到y(-n);②m>0表示y(-n)序列右移,m<0表示左移,不同的m表示不同的∁xy(m)值。

线性卷积运算简洁表示为:

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

由线性卷积的定义

,等式右边是乘积求和形式,,因而考虑能否用矩阵相乘的形式来表示线性卷积。

假设序列x(n)长度为4点,y(n)长度为3点,x(n)除区间之外皆为零,y(n)除区间之外皆为零,用矩阵的形式来表达线性卷积Z:

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

2.3循环卷积的运算

有限长序列的循环移位是指也就是先让序列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.1设计内容

自行设计两个有限长序列,要求:

(1)序列的长度和内容由运行时输入;

(2)分别动态演示它们进行线性卷积和循环卷积的过程,要求体现翻转、移位、相乘、求和等过程;

(3)根据卷积结果,分析两类卷积的关系;

(4)动态演示基于重叠相加法的长序列快速卷积,长短序列内容自定;

(5)用MATLAB设计一个卷积演示界面。

3.2线性卷积的分析

两个序列的线性卷积可以分为下列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.3循环卷积的分析

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

(1)初始化:

确定循环点数N,测量输入2个序列的长度,长度小于N的在后面补0。

(2)循环右移函数:

将序列x(n)循环右移,一共移N次(N为循环卷积的循环次数),最后将每次循环成的新序列组成一个矩阵V。

(3)相乘:

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

 

四实验代码及结果

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

1.线环卷积源程序:

functiony=conv(x1,x2);%定义一个函数

x1=input('x1=');%输入序列x1

x2=input('x2=');%输入序列x2

N1=length(x1);%定义x1的长度

M=length(x2);%定义x2的长度

L=N1+M-1;%序列的长度

for(n=1:

L)%n取1、2、……L,每个值都执行for循环中的代码一次

y(n)=0;

for(m=1:

M)%m取1、2、……M,每个值都执行for循环中的代码一次

k=n-m+1;

if(k>=1&k<=N1)

y(n)=y(n)+x2(m)*x1(k);%定义序列y(n)

end

end

end

y1=conv(x1,x2);%x1和x2进行卷积

nx1=0:

N1-1;%定义nx1取值

nx2=0:

M-1;%定义nx2取值

ny=0:

L-1;%定义ny的取值

subplot(2,3,1);%画出卷积结果图

stem(nx1,x1,'.k');xlabel('n');ylabel('x1(n)');gridon;

title('序列x1')%命名x轴,y轴

subplot(2,3,2);

stem(nx2,x2,'.k');xlabel('n');ylabel('x2(n)');gridon;

title('序列x2')

subplot(2,3,3);%画出运行结果图形

stem(ny,y,'.k');xlabel('n');ylabel('y(n)');gridon;

title('线性卷积')

subplot(2,3,4);

stem(y1');xlabel('n');ylabel('y1');gridon;

title('conv直接卷积')%对图形进行命名

运行程序,输入序列x1和x2

X1=[-123-5]

X2=[67-10412]

线性卷积结果为:

运行结果如下图4-1所示:

图4-1现行卷积运行结果

4.2循环卷积的MATLAB设计源程序

1.循环卷积源程序:

x1=input('x1=');%输入序列x1

x2=input('x2=');%输入序列x2

N=input('N=');%输入点数N

xn1=length(x1);%定义x1的长度

xxn1=0:

xn1-1;%定义xxn1取值

subplot(3,1,1);%画出运行结果图形

stem(xxn1,x1,'.');

title('x2');

xn2=length(x2);%定义x2的长度

xxn2=0:

xn2-1;%定义xxn2取值

subplot(3,1,2);%画出循环卷积图

stem(xxn2,x2,'.');

title('x2');%命名为x2

if(length(x1)>N);

x1=[x1,zeros(1,N-length(x1))];%把序列x1按点数扩展,不足补零

x2=[x2,zeros(1,N-length(x2))];%把序列x1按点数扩展,不足补零

m=0:

N-1;

x=zeros(N,N);%N行N列矩阵

forn=0:

N-1%n取1、2、……N-1,每个值都执行for循环中的代码一次

x(:

n+1)=x2(mod((n-m),N)+1);

end;

yn=x1*x;

subplot(3,1,3);%画出运行结果图形

stem(m,yn,'r','.');

title('序列x1和序列x2的循环卷积结果');%图形命名

运行程序,输入序列x1,x2

x1=[-123-5]

x2=[67-10412]

N=10

循环卷积结果如下图4-2:

图4-2N=10时循环卷积运行结果图

当输入序列x1=[-123-5],x2=[67-10412],N=8时。

 

结果如下图4-3:

图4-3N=8时循环卷积运行结果图

4.3分析两类卷积关系

循环卷积是线性卷积进行循环移位后的结果,当循环卷积的点数N>=线性卷积两个信号长度的和减1,则循环卷积与线性卷积的结果是一样的。

假设lfm信号长度是N,lfm_back长度是N,循环卷积的长度是L,则L应该>=2*N-1.

4.4动态演示基于重叠相加法的长序列快速卷积

1.重叠相加法快速卷积源程序如下:

N=8;%分段的长度,也就是做fft的长度

h=[1,3,2,1];%系统冲击响应h(n)

fori=0:

9%定义x(n)

x(i+1)=5-i;

end

fori=10:

18

x(i+1)=i-15;

end

Lenx=length(x);

M=length(h);

M1=M-1;%重叠部分的长度

L=N-M1;%不重叠部分的长度

h=fft(h,N);

K=ceil(Lenx/L);%分的段数

fori=Lenx:

K*L-1%将x(n)补成长度为K*L的序列

x(i+1)=0;

end

Y=zeros(K,N);%保存结果矩阵初始化

YY=zeros(1,(K-1)*L+N);%最终结果矩阵初始化

fork=0:

K-1

xk=[x(k*L+1:

k*L+L),zeros(1,M1)];

Y(k+1,:

)=(ifft(fft(xk).*h));

YY(k*L+1:

k*L+N)=YY(k*L+1:

k*L+N)+Y(k+1,:

end

运行后结果如下:

4.5用MATLAB设计一个卷积演示界面

(1)启动MATLABR2010a

在正确完成MATLAB的安装并启动计算机之后,选择“开始”|“所有程序”|MATLAB|R2010a|MATLABR2010a命令,或者直接双击桌面上的MATLAB的快捷方式图标

,启动MATLABR2010a。

(2)MATLABR2010a的主界面

MATLAB的默认窗口如图4所示,其中包括主菜单栏、工具栏、命令窗口、历史命令窗口、工作区浏览器和当前路径窗口等。

图4-4MATLAB默认窗口

(3)点击工具栏的

按钮,将弹出以下的菜单,如图4-5:

图4-5MATLAB窗口

在空白处写下所要实现的卷积源程序代码,如下图4-6:

图4-6程序输入窗口

(4)源程序代码写好后,此时按下F5按钮,将弹出以下的菜单,如图4-7:

图4-7保存程序窗口

 

点击保存按钮,将弹出以下界面,如图8。

图4-8运行程序窗口

(5)输入X1=[-123-5],X2=[67-10412]后,按下Enter键:

出现以下结果:

同时弹出以下的运行界面,如图9

图4-9程序运行结果图

五收获与体会

总结本次数字信号处理课程论文,我受益匪浅。

首先就是方案的确定。

由于这个学期我学习了数字信号处理这门课程,课程中我了解到要实现两信号的卷积,可以通过定义来实现,也可以通过DFT来计算线性卷积。

对于有限长序列,存在两种形式的卷积:

线性卷积与循环卷积。

由于循环卷积可以采用DFT的快速算法——快速傅里叶变换进行运算,运算速度上有很大的优越性。

其中,设计线性卷积有4个步骤,翻转、移位、相乘、求和,而循环卷积则是通过循环移位后得到的矩阵与序列相乘。

根据上数字信号处理课上老师讲的求法,画出了思路的流程图,然后根据流程图写出程序,事半功倍。

将结果与直接调用MATLAB自带的函数比较,结果显示,自己设计的程序是正确的。

通过这次课程论文,我对线性卷积和循环的定义、原理、以及实现方法都有了深入的认识。

同时也对MATLAB软件产生了更加浓厚的兴趣。

在做完本次课程设计要求的线性卷积之后,我运用了同样的思路,设计出了循环卷积,算是对本次课程设计的一个扩展,同时也提高了自己的编程水平和对MATLAB的运用。

 

参考文献

[1]高西全,丁玉美等.数字信号处理(第三版)[M].西安:

西安电子科技大学出版社,2008.5

[2]高西全,丁玉美.数字信号处理(2版)[M].西安:

西安电子科技大学出版社,2001

[3]薛山编.MATLAB基础教程[M].北京:

清华大学出版社,2010.10

[4]王宏编.MATLAB6.5及其在信号处理中的应用[M].北京:

清华大学出版社,2004

[5]李海涛,邓樱等.MATLAB6.1基础及应用技巧[M].北京:

国防工业出版社,2002

 

附录

1.线环卷积源程序:

functiony=conv(x1,x2);%定义一个函数

x1=input('x1=');%输入序列x1

x2=input('x2=');%输入序列x2

N1=length(x1);%定义x1的长度

M=length(x2);%定义x2的长度

L=N1+M-1;%序列的长度

for(n=1:

L)%n取1、2、

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2