用matlab实现两个离散序列的卷积(不使用conv函数)

合集下载

离散序列卷积(matlab实现)

离散序列卷积(matlab实现)

数字信号处理实验报告实验一 离散时间序列卷积和MATLAB 实现(一)实验目的:学会用MATLAB 对信号与系统分析的方法,理解离散序列卷积和的计算对进行离散信号与系统分析的重要性。

(二)实验原理:1、离散时间序列f1(k)和f2(k)的卷积和定义:f(k)=f1(k)*f2(k)=∑∞-∞=-•i i k f i f )(2)(12、在离散信号与系统分析中有两个与卷积和相关的重要结论:a 、f(k)=∑∞-∞=-•i i k i f )()(δ=f(k)* δ(k)即离散序列可分解为一系列幅度由f(k)决定的单位序列δ(k)及其平移序列之积。

b 、对线性时不变系统,设其输入序列为f(k),单位响应为h(k),其零状态响应为y(k),则有:y(k)=∑∞-∞=-•i i k h i f )()(3、上机:conv.m 用来实现两个离散序列的线性卷积。

其调用格式是:y=conv(x,h)若x 的长度为N ,h 的长度为M ,则y 的长度L=N+M-1。

(三)实验内容1、题一:令x(n)= {}5,4,3,2,1,h(n)={}246326,,,,,,y(n)=x(n)*h(n),求y(n)。

要求用subplot 和stem 画出x(n),h(n),y(n)与n 的离散序列图形。

源程序: N=5; M=6;L=N+M-1; x=[1,2,3,4,5]; h=[6,2,3,6,4,2]; y=conv(x,h); nx=0:N-1; nh=0:M-1; ny=0:L-1;subplot(131); stem(nx,x,'*k'); xlabel('n'); ylabel('x(n)'); grid on ;subplot(132); stem(nh,h,'*k'); xlabel('n'); ylabel('h(n)'); grid on ;subplot(133); stem(ny,y,'*k'); xlabel('n'); ylabel('y(n)'); grid on ;实验结果:24nx (n)5nh (n )510ny (n )分析实验结果:根据实验结果分析可知,实验所得的数值跟x (n )与y (n )所卷积的结果相同。

【免费下载】matlab实验二 离散信号的卷积和

【免费下载】matlab实验二 离散信号的卷积和

(数字信号处理)实验报告实验名称 实验二 离散信号的卷积和 实验时间 年 月 日专业班级 学 号 姓 名 成 绩 教师评语: 一、实验目的1、掌握两个离散信号卷积和的计算方法和编程技术。

2、进一步熟悉用MATLAB 描绘二维图像的方法。

二、实验原理与计算方法两个离散序列x(n)与y(n)的卷积和f(n)定义为∑∞-∞=-=*=m m n y m x n y n x n f )()()()()(由于通常信号处理中所碰到的都是有始信号或有限时间信号,因此在实际计算卷积和时,求和是在有限范围内进行的。

计算过程中上下限的选取和所得结果的分布区间取决于参与卷积的两个序列,下面将分别进行讨论:1、两个从n = 0开始的序列和的卷积和)()()(n u n x n x =)()()(n u n y n y = (1)∑∑=∞-∞=-=--=nm m n u m n y m x m n u m n y m u m x n f 0)()]()([)()()()()(上式右边因子u(n)表示卷积和的结果也是一个从n = 0开始的序列。

2、从n =n1开始的序列和从n = n2开始的序列)()()(1n n u n x n x -=的卷积和,其中n1和n2为任意整数。

)()()(2n n u n y n y -= (2)∑∑-=∞-∞=---=----=21)()]()([)()()()()(2121n n n m m n nn u m n y m x n m n u m n y n m u m x n f 上式右边因子u(n-n1-n2)表示卷积和是一个从n = n1+n2开始的序列。

3、从n = n1开始的长度为N1的加窗序列和从n = n2开始的长)()()(1n w n x n x N =度为N2的加窗序列的卷积和,其中)()()(2n w n y n y N = ⎩⎨⎧-+≤≤=otherwise 0 11 )(1111N n n n n w N ⎩⎨⎧-+≤≤=otherwise 0 1 1 )(2222N n n n n w N则 ∑∞-∞=--=m N N m n w m n y m wm x n f )()()()()(21(3)所得卷积和也是一个加窗序列,从n = n1+ n2开始,长度为N1+ N2-1。

用matlab实现两信号的卷积 论文

用matlab实现两信号的卷积 论文

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

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

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

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

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

为了让大家对其有更直观的了解,本文还附上了线性卷积在Matlab中运行所得到的卷积结果及波形图。

关键词:Matlab;线性卷积;序列;波形图AbstractMATLAB 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.In this paper, the definition of linear convolution, the analysis of its operation principle and the related formulas, procedures, and focuses on an analysis of the computing process of convolution, so that everyone understands the meaning of convolution. In order to let everyone have a more intuitive for their understanding, this article is also accompanied by a linear convolution operation in Matlab has been in the deconvolution results and waveforms.Key words:Matlab;Linear convolution;Sequence;Wave目录引言 (1)1 MATLAB简介 (1)1.1 MATLAB的优势 (1)1.1.1 友好的工作平台和编程环境 (1)1.1.2 简单易用的程序语言 (2)1.1.3 强大的科学计算机数据处理能力 (2)1.1.4 出色的图形处理功能 (2)1.1.5 应用广泛的模块集合工具箱 (2)1.1.6 实用的程序接口和发布平台 (2)1.1.7 应用软件开发(包括用户界面) (2)1.2 MATLAB的组成 (3)1.2.1 开发环境 (3)1.2.2 MATLAB的数学函数库 (3)1.2.3 MATLAB语言 (3)1.2.4 图形 (3)1.2.5 MATLAB应用程序接口(API) (3)2 卷积的理论分析 (3)2.1 卷积的定义 (3)2.2 线性卷积的运算 (4)3 卷积的MATLAB实现 (5)3.1 利用定义计算卷积 (5)3.2 设计分析 (6)3.3 设计流程图 (6)3.4 MATLAB源程序 (7)4 总结 (9)谢辞 (11)参考文献 (12)引言卷积是分析数学中一种重要的运算,数学上的卷积在信号处理中有着非常广泛的应用。

实验一:离散时间序列卷积和MATLAB实现

实验一:离散时间序列卷积和MATLAB实现

实验一:离散时间序列卷积和MATLAB 实现(一)实验目的1、掌握离散卷积计算方法;2、学会线性常系数差分方程的迭代解法;3、学会针对具体系统设计程序;(二)实验内容1、用MATLAB 画出如下表达式的脉冲序列()8.0() 3.4(1) 1.8(2) 5.6(3) 2.9(4)0.7(5)f n n n n n n n δδδδδδ=+-+-+-+-+-例如:x(1)=8.0; n=0:5;fn=[8.0 3.4 1.8 5.6 2.9 0.7]; stem(n,fn); xlabel('n'); ylabel('fn');nf n2、 计算卷积用MATLAB 计算序列{1 2 3 3 2 1 1}和序列{-1 2 0 1}的离散卷积。

首先用手工计算,然后用MATLAB 函数conv(x,y)编程验证。

MATLAB 部分参考程序如下: a=[1 2 3 3 2 1 1]; c=conv(a,b); M=length(c)-1; stem(n,c);xlabel('n'); ylabel('幅度');subplot(3,1,1); a=[1 2 3 3 2 1 1]; stem(a); subplot(3,1,2)b=[-1 2 0 1]; stem(b); subplot(3,1,3); c=conv(a,b); M=length(c)-1;stem(c);xlabel('n'); ylabel('幅度');3、参考教材P14页,使用通用卷积convu 函数,计算如下卷积已知h(n)=R 5(n+2),x(n)=3R 4(n-3),计算y(n)=x(n)*h(n)编程实现并在一幅图内分别画出h(n),x(n),y(n),标好横坐标与纵坐标。

subplot(3,1,1); h=ones(1,5);nh=-2;2; stem(h);xlabel('n'); ylabel('幅度'); subplot(3,1,2);x=3*ones(1,4);nx=3:6; stem(x);xlabel('n'); ylabel('幅度'); subplot(3,1,3); [y,ny]=convu(h,nh,x,nx); stem(y);xlabel('n'); ylabel('幅度');4、编写教材P31第15题的MATLAB 程序。

用matlab计算序列卷积和并绘图

用matlab计算序列卷积和并绘图

用m a t l a b计算序列卷积和并绘图(总5页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--(一)实验目的:学会用MATLAB对信号与系统分析的方法,理解离散序列卷积和的计算对进行离散信号与系统分析的重要性。

(二)实验原理:1、离散时间序列f1(k)和f2(k)的卷积和定义:f(k)=f1(k)*f2(k)=∑∞-∞=-•iikfif)(2)(12、在离散信号与系统分析中有两个与卷积和相关的重要结论:a、f(k)= ∑∞-∞=-•iikif)()(δ=f(k)* δ(k)即离散序列可分解为一系列幅度由f(k)决定的单位序列δ(k)及其平移序列之积。

b、对线性时不变系统,设其输入序列为f(k),单位响应为h(k),其零状态响应为y(k),则有:y(k)= ∑∞-∞=-•iikhif)()(3、上机:用来实现两个离散序列的线性卷积。

其调用格式是:y=conv(x,h)若x的长度为N,h的长度为M,则y的长度L=N+M-1。

(三)实验内容1、题一:令x(n)= {}5,4,3,2,1,h(n)={}246326,,,,,,y(n)=x(n)*h(n),求y(n)。

要求用subplot和stem画出x(n),h(n),y(n)与n的离散序列图形。

源程序:N=5;M=6;L=N+M-1;x=[1,2,3,4,5];h=[6,2,3,6,4,2];y=conv(x,h);nx=0:N-1;nh=0:M-1;ny=0:L-1;subplot(131); stem(nx,x,'*k'); xlabel('n');ylabel('x(n)'); grid on ;subplot(132); stem(nh,h,'*k'); xlabel('n');ylabel('h(n)'); grid on ;subplot(133); stem(ny,y,'*k'); xlabel('n');ylabel('y(n)'); grid on ;实验结果:nx (n)nh (n)ny (n )分析实验结果:根据实验结果分析可知,实验所得的数值跟x (n )与y (n )所卷积的结果相同。

离散序列卷积(matlab实现)

离散序列卷积(matlab实现)

离散序列卷积(matlab实现)————————————————————————————————作者:————————————————————————————————日期:数字信号处理实验报告实验一 离散时间序列卷积和MATLAB 实现(一)实验目的:学会用MATLAB 对信号与系统分析的方法,理解离散序列卷积和的计算对进行离散信号与系统分析的重要性。

(二)实验原理:1、离散时间序列f1(k)和f2(k)的卷积和定义:f(k)=f1(k)*f2(k)=∑∞-∞=-•i i k f i f )(2)(12、在离散信号与系统分析中有两个与卷积和相关的重要结论:a 、f(k)=∑∞-∞=-•i i k i f )()(δ=f(k)* δ(k)即离散序列可分解为一系列幅度由f(k)决定的单位序列δ(k)及其平移序列之积。

b 、对线性时不变系统,设其输入序列为f(k),单位响应为h(k),其零状态响应为y(k),则有:y(k)=∑∞-∞=-•i i k h i f )()(3、上机:conv.m 用来实现两个离散序列的线性卷积。

其调用格式是:y=conv(x,h)若x 的长度为N ,h 的长度为M ,则y 的长度L=N+M-1。

(三)实验内容1、题一:令x(n)= {}5,4,3,2,1,h(n)={}246326,,,,,,y(n)=x(n)*h(n),求y(n)。

要求用subplot 和stem 画出x(n),h(n),y(n)与n 的离散序列图形。

源程序: N=5; M=6;L=N+M-1; x=[1,2,3,4,5]; h=[6,2,3,6,4,2]; y=conv(x,h); nx=0:N-1; nh=0:M-1; ny=0:L-1;subplot(131); stem(nx,x,'*k'); xlabel('n'); ylabel('x(n)'); grid on ;subplot(132); stem(nh,h,'*k'); xlabel('n'); ylabel('h(n)'); grid on ;subplot(133); stem(ny,y,'*k'); xlabel('n'); ylabel('y(n)'); grid on ;实验结果:2400.511.522.533.544.55nx (n )5123456nh (n )510010203040506070ny (n )分析实验结果:根据实验结果分析可知,实验所得的数值跟x (n )与y (n )所卷积的结果相同。

如何通过Matlab进行卷积与卷积运算

如何通过Matlab进行卷积与卷积运算

如何通过Matlab进行卷积与卷积运算使用Matlab 进行卷积与卷积运算引言:卷积与卷积运算在信号处理、图像处理、机器学习等领域中起着至关重要的作用。

Matlab作为一款强大的数学工具,提供了丰富的函数和工具箱,能够便捷地进行卷积与卷积运算。

本文将介绍如何使用Matlab进行卷积与卷积运算,并通过实例说明其应用。

一、卷积的基本概念卷积是一种数学运算,常用于信号处理中。

它将两个函数进行混合,输出一个新的函数。

在离散卷积中,输入的两个函数通常是序列或矩阵。

卷积的定义如下:[f * g](n) = ∑[f(k) * g(n-k)] (k=-∞ to ∞)其中,f * g 表示卷积运算,f 表示输入函数,g 表示卷积核函数,n 表示输出函数的索引。

二、Matlab中的卷积函数在Matlab中,可以使用conv函数来进行一维离散卷积的计算。

conv函数的语法如下:y = conv(x,h)其中,x 表示输入函数,h 表示卷积核函数,y 表示输出函数。

在使用conv函数时,需要注意输入函数和卷积核函数的维度匹配,以及输入函数和卷积核函数的长度关系。

在长度不一致的情况下,可以使用padarray函数进行填充。

三、卷积运算的应用举例为了更好地理解卷积与卷积运算的应用,下面将通过几个实例进行详细讲解。

实例一:图像模糊图像模糊是一种常见的图像处理技术,可以用于去除图像中的噪声和细节。

在Matlab中,可以通过卷积运算实现图像模糊。

首先,需要构建一个卷积核函数,例如:h = ones(5, 5) / 25;此处构建了一个5x5的全1卷积核函数,并将其除以25,以实现平均模糊。

然后,使用conv函数对输入图像进行卷积运算:blurred_image = conv(input_image, h);实例二:音频信号滤波在音频处理中,常常需要对音频信号进行滤波以去除噪声或者强调特定频率。

卷积运算可以实现各种滤波器的设计和应用。

离散卷积的算法分析及MATLAB实现(程序实例)

离散卷积的算法分析及MATLAB实现(程序实例)

离散卷积的算法分析及MATLAB实现(实例程序)摘自:张登奇,陈佳.离散卷积的算法分析及MATLAB实现[J].湖南理工学院学报(自然科学版). 2013(02)摘要:离散卷积是信号处理的基本运算,快速卷积和分段卷积是计算离散卷积的重要算法.文章以离散线性卷积的概念为基础,介绍了计算卷积的常用方法和运算流程,列举了MATLAB实现的程序.这些程序能动态演示卷积运算的全部过程,既可帮助理解卷积运算的原理流程,也可作为教学讲解的演示工具. 1、离散卷积常规算法的动态演示程序clear;clc;close all;format compact;xn=[5,4,3,2,1],M=length(xn),%输入任意序列并计算长度Mhn=[1,1,1],N=length(hn),%输入任意脉冲响应并计算长度Nm=[-(M-1):M+N-2],%设置代换变量的范围以便x(m)翻转和移位xm=[zeros(1,M-1),xn,zeros(1,N-1)],%补零以便与m对应绘图subplot(4,1,1);stem(m,xm,'r.'),%%绘输入序列x(m)ylabel('x(m)'), grid,title('(a) 输入序列x(m)'),%%加标签网格和标题hm=[zeros(1,M-1),hn,zeros(1,M-1)],%补零以便与m对应绘图subplot(4,1,2);stem(m,hm,'r.'),%%绘脉冲响应ylabel('h(m)'),grid,title('(b) 脉冲响应h(m)'),%%加标签网格和标题yn=zeros(1,2*M+N-2);%卷积输出初始化for n=0:M+N-2,%逐个计算卷积输出if n==0;xmfy=[fliplr(xn),zeros(1,M+N-2)],%实现翻转else for k=M:-1:1; xmfy(k+n)=xmfy(k+n-1);end ; xmfy(n)=0; xmfy,%实现翻转后移位并显示endsubplot(4,1,3);stem(m,xmfy,'b.'),%%绘制翻转移位序列ylabel('x(n-m)'), grid,title('(c) 翻转移位x(n-m)'),%%加标签网格和标题yn(M+n)=sum(xmfy.*hm);%计算第n位输出并与m位置对应subplot(4,1,4);stem(m,yn,'r.'),%%绘制卷积输出序列axis([min(m),max(m),min([0,conv(xn,hn)]),max([0,conv(xn,hn)])]),%%控制绘图坐标ylabel('y(n)'), grid,title('(d) 卷积输出y(n)'),%%加标签网格和标题pause,%每算完一位卷积输出后暂停,按任意键继续endyn, %显示线性卷积结果2、循环卷积运算过程的动态演示程序clc;close all;clear;format compact;xn=[5,4,3,2,1],M=length(xn),%输入任意序列并计算长度Mhn=[1,1,1],N=length(hn),%输入任意脉冲响应并计算长度NL=8,if L<max(M,N); L=max(M,N),end,%输入循环卷积的长度m=0:L-1,%设置代换变量并与两圆周上的编号对应xm=[xn,zeros(1,L-M)],%按圆周编号方向排列不足补零subplot(4,1,1);stem(m,xm,'r.'),%%绘输入序列x(m)ylabel('x(m)'),grid,title('(a) 输入序列x(m)'),%%加标签网格和标题hm=[hn,zeros(1,L-N)],%按圆周编号方向排列不足补零subplot(4,1,2);stem(m,hm,'r.'),%%绘脉冲响应h(m)ylabel('h(m)'),grid,title('(b) 脉冲响应h(m)'),%%加标签网格和标题ycn=zeros(1,L);%循环卷积输出初始化for n=0:L-1%逐个计算循环卷积xn_m=xm(mod(n-m,L)+1),%按圆周编号方向反排后正转n位subplot(4,1,3);stem(m,xn_m,'b.'),%%绘反排正转序列ylabel('x((n-m))L'),grid,title('(c) 反排正转x((n-m))L'),%%加标签网格和标题ycn(n+1)=sum(xn_m.*hm);%计算第n位循环卷积输出subplot(4,1,4);stem(m,ycn,'r.'),%%绘循环卷积输出序列axis([min(m),max(m),min([0,conv(xn,hn)]),max([0,conv(xn,hn)])]) %%控制绘图坐标ylabel('yc(n)'),grid,title('(d) 循环卷积yc(n)'),%%加标签网格和标题pause,%每算完一位循环卷积后暂停,按任意键继续endycn, %显示循环卷积结果3、快速算法计算线性卷积的程序clc;close all;clear;format compact;xn=[5,4,3,2,1], M=length(xn),%输入任意序列并计算长度Mhn=[1,1,1], N=length(hn),%输入任意脉冲响应并计算长度NL=2^nextpow2(M+N-1),%确定适合基2-FFT算法的长度xnL=[xn,zeros(1,L-M)], hnL=[hn,zeros(1,L-N)],%序列补零至L长Xk=fft(xnL); Hk=fft(hnL);%快速傅里叶变换Yk=Xk.*Hk; ycn=ifft(Yk),%对应相乘后求逆输出yn=conv(xn,hn),%与直接线性卷积结果对比4、重叠相加法进行线性卷积的动态演示程序clc;close all;clear;format compact;xn=[4,3,2,1,1,2,3,4,4,3,2,1,1,2],Lx=length(xn),%输入任意序列并计算长度Lxhn=[1,1,1,1],N=length(hn),%输入任意脉冲响应并计算长度NL=2^nextpow2(2*N),%确定适合基2-FFT算法的长度M=L-N+1,T=ceil(Lx/M),%计算每段的点数M及总段数Lxn=[xn,zeros(1,(T+1)*M-Lx)],%输入补零至最后缓存数据可以输出yn=zeros(1,(T+1)*M);%卷积输出变量初始化tn=zeros(1,N-1);%缓存变量初始化n=0:(T+1)*M-1,%序列号赋值nmin=min(n)-0.01;nmax=max(n)+0.01;%%确定绘图横坐标并保证能绘出首尾数据xnmin=min([0,xn]);xnmax=max([0,xn]);%%确定输入序列绘图纵坐标hnmin=min([0,hn]);hnmax=max([0,hn]);%%确定脉冲响应绘图纵坐标ynmin=min([0,conv(xn,hn)]);ynmax=max([0,conv(xn,hn)]); %%确定输出序列绘图纵坐标subplot(6,1,1);stem(n,xn,'r.'),%%绘输入序列x(n)axis([nmin,nmax,xnmin,xnmax]);%%控制绘图坐标ylabel('x(n)'),grid,title('(a) 输入序列x(n)'),%%加标签网格和标题subplot(6,1,2);stem(n,[hn,zeros(1,(T+1)*M-N)],'r.'),%%绘脉冲响应axis([nmin,nmax,hnmin,hnmax]);%%控制绘图坐标ylabel('h(n)'),grid,title('(b) 脉冲响应h(n)'),%%加标签网格和标题for i=0:T;disp('分段卷积段号:'),i, %依次分段处理并显示段号ix=i*M+1,%各段在MATLAB变量中的起始位置xi_seg=xn(ix:ix+M-1),%从输入序列中取出一段xin=zeros(1,(T+1)*M);%%为了只绘第i段输入序列先置零处理subplot(6,1,3);xin(ix:ix+M-1)=xn(ix:ix+M-1);stem(n,xin,'b.'), %% 绘第i段输入axis([nmin,nmax,xnmin,xnmax]);%%控制绘图坐标ylabel('xi(n)'),grid,title('(c)第i段输入xi(n)'),%%加标签网格和标题yi_seg=conv(xi_seg,hn),%分段卷积实际上是用快速算法且X(k)在循环前算出保存yin=zeros(1,(T+1)*M);%%为了只绘第i段输出序列先置零处理if i<T; yin(ix:ix+L-1)=yi_seg(1:L);else yin(ix:ix+M-1)=0;end,%%最后段输出特殊处理subplot(6,1,4);stem(n,yin,'b.'),%% 绘第i段输出axis([nmin,nmax,ynmin,ynmax]); %%控制绘图坐标ylabel('yi(n)'),grid,title('(d)第i段输出yi(n)'),%%加标签网格和标题tin=zeros(1,(T+1)*M);%%为了只绘前段缓存序列先置零处理subplot(6,1,5);tin(ix:ix+N-2)=tn(1:N-1);stem(n,tin,'b.'),%%绘前段缓存序列axis([nmin,nmax,ynmin,ynmax]); %%控制绘图坐标ylabel('t(n)'),grid,title('(e)前段缓存t(n)'),%%加标签网格和标题yi_seg(1:N-1)=yi_seg(1:N-1)+tn(1:N-1),%重叠相加运算yn(ix:ix+M-1)=yi_seg(1:M),tn(1:N-1)=yi_seg(M+1:L),%取前M个数据输出取后N-1个数据缓存subplot(6,1,6);stem(n,yn,'r.'),%%绘输出序列y(n)axis([nmin,nmax,ynmin,ynmax]); %%控制绘图坐标ylabel('y(n)'),grid,title('(f)卷积输出y(n)'),%%加标签网格和标题pause,%每算完一段后暂停,按任意键继续endyn=yn(1:Lx+N-1),conv(xn,hn),%取出线性卷积结果并与直算结果对比。

MATLAB信号卷积

MATLAB信号卷积

利用MATLAB实现信号的时域卷积一.引言MATLAB具有强大的图形处理功能及符号运算功能,为实现信号的可视化以及时域分析提供了强有力的工具,所以我们要利用MATLAB编程辅助分析与计算。

现在我们利用MATLAB 编程辅助计算连续时间信号、离散时间信号的卷积。

我们利用MATLAB编制一个M函数dconv(),该函数可以计算离散序列x1n 和x2n的卷积xn=x1n*x2n,此程序要计算xn,返回xn的非零点对应向量,还将绘制出序列x1n, x2n和xn 的时域波形图;我们要验证并调用这个dconv()函数计算“hn=xn=un-u(n-4)”这两个序列的卷积和运算,并绘制图像。

现在我们再利用MATLAB编制一个计算连续时间信号卷积积分的M函数ddconv(),此函数要计算出两个连续信号f1(t)和f2(t)的卷积积分f (t)的近似值,并绘制f1(t)、f2(t)和f (t)的时域波形图。

编完之后,我们利用ddconv()函数求“et=ut+12-ut-1,ht=12t[ut-ut-2]”这两个连续时间信号的卷积积分运算,并绘制图形。

二.基本原理对于信号的时域卷积有:(1)离散时间信号的卷积和:它的定义为,离散时间信号x1n和x2n的卷积和为:xn=x1n*x2n=m=-∞∞x1(m)x2n-m设序列x1n在区间n1~ n2非零,序列x2n在m1~ m2非零,那么就有xn=x1n*x2n的非零区间就为n1+m1~(n2+m2)并且区间长度为n1+m1-n2+m2+1,则只需计算序列xn的非零区间就可以表示整个序列.那么由上可知,在利用MATLAB的conv()函数的时候就要注意其卷积后的区间长度已经发生变化,在绘制卷积后的图像的时候就要有意识的先减去扩大的区间长度,不然绘制的卷积后的时域图像就是错误的,和横坐标不是正确的对应关系,并且我们在使用conv()函数的时候要先构造x1n和x2n,让它们有限,才能返回序列xn的非零样值时间序列。

用matlab计算序列卷积和并绘图

用matlab计算序列卷积和并绘图

(一)实验目的:学会用MATLAB对信号与系统分析的方法,理解离散序列卷积和的计算对进行离散信号与系统分析的重要性。

(二)实验原理:1、离散时间序列f1(k)和f2(k)的卷积和定义:f(k)=f1(k)*f2(k)=∑∞-∞=-•iikfif)(2)(12、在离散信号与系统分析中有两个与卷积和相关的重要结论:a、f(k)= ∑∞-∞=-•iikif)()(δ=f(k)* δ(k)即离散序列可分解为一系列幅度由f(k)决定的单位序列δ(k)及其平移序列之积。

b、对线性时不变系统,设其输入序列为f(k),单位响应为h(k),其零状态响应为y(k),则有:y(k)= ∑∞-∞=-•iikhif)()(3、上机:用来实现两个离散序列的线性卷积。

其调用格式是:y=conv(x,h)若x的长度为N,h的长度为M,则y的长度L=N+M-1。

(三)实验内容1、题一:令x(n)= {}5,4,3,2,1,h(n)={}246326,,,,,,y(n)=x(n)*h(n),求y(n)。

要求用subplot和stem画出x(n),h(n),y(n)与n的离散序列图形。

源程序:N=5;M=6;L=N+M-1;x=[1,2,3,4,5];h=[6,2,3,6,4,2];y=conv(x,h);nx=0:N-1;nh=0:M-1;ny=0:L-1;subplot(131); stem(nx,x,'*k'); xlabel('n');ylabel('x(n)'); grid on ;subplot(132); stem(nh,h,'*k'); xlabel('n');ylabel('h(n)'); grid on ;subplot(133); stem(ny,y,'*k'); xlabel('n');ylabel('y(n)'); grid on ;实验结果:分析实验结果:根据实验结果分析可知,实验所得的数值跟x (n )与y (n )所卷积的结果相同。

卷积运算matlab

卷积运算matlab

卷积运算matlab一、什么是卷积运算在数字信号处理和图像处理领域,卷积运算是一种常用的数学运算方法,它可以通过两个函数产生一个新的函数。

在信号处理中,卷积运算常用于信号滤波、图像边缘检测等领域。

而在图像处理中,卷积运算可以实现图像的模糊、锐化和特征提取等功能。

二、卷积运算的原理卷积运算的原理可以用以下公式表示:$$(f*g)(t)=\in t_{-\i nf ty}^{\in ft y}f(\t au)g(t-\ta u)d\ta u$$其中,$f(t)$和$g(t)$表示两个函数,$*$表示卷积运算符,$(f*g)(t)$表示卷积运算的结果。

在离散情况下,卷积运算可以用以下公式表示:$$(f*g)[n]=\su m_{m=-\i nf ty}^{\in fty}f[m]g[n-m]$$其中,$f[n]$和$g[n]$表示两个离散序列,$[n]$表示序列的下标,$*$表示卷积运算符,$[m]$表示离散序列的下标。

三、在MATL AB中进行卷积运算M A TL AB中提供了方便快捷的函数用于进行卷积运算。

具体步骤如下:1.准备输入序列首先,我们需要准备两个输入序列,分别表示$f[n]$和$g[n]$。

f=[1,2,3,4,5];g=[1,1,1];2.执行卷积运算接下来,使用MA TL AB的`c on v`函数执行卷积运算。

r e su lt=c on v(f,g);3.查看结果最后,我们可以通过打印`r es ul t`来查看卷积运算的结果。

d i sp(r es ul t);四、实际应用案例卷积运算在实际应用中具有广泛的应用性。

下面以图像处理中的边缘检测为例说明卷积运算的应用。

1.准备图像首先,我们需要准备一张待处理的图像。

i m ag e=im re ad('ima g e.jp g');2.定义边缘检测算子接下来,我们需要定义一个边缘检测算子,例如S ob el算子。

s o be l=[1,0,-1;2,0,-2;1,0,-1];3.执行卷积运算然后,使用M AT LA B的`co nv2`函数执行卷积运算。

基于Matlab的离散卷积

基于Matlab的离散卷积

基于Matlab的离散卷积刘国良【摘要】卷积运算广泛用于通讯、电子、自动化等领域的线性系统的仿真、分析及数字信号处理等方面.在Matlab中可以使用线性卷积、圆周卷积和快速傅里叶运算实现离散卷积.线性卷积是工程应用的基础,但圆周卷积和快速傅里叶运算实现线性离散卷积具有速度快等优势,圆周卷积采用循环移位,在Matlab中没有专用函数,需要根据圆周卷积的运算过程编制程序代码;快速傅里叶运算(FFT)是DSP的核心算法,在序列比较长时FFT是一种最合适的方法,运算速度快、程序简单,序列越长其优势越明显.以同一个例子介绍了进行离散卷积仿真运算的两种方法与特点.【期刊名称】《现代电子技术》【年(卷),期】2009(032)005【总页数】3页(P125-126,138)【关键词】Matlab;数字信号处理;离散卷积运算;快速傅里叶运算【作者】刘国良【作者单位】洛阳理工学院,河南,洛阳,471000【正文语种】中文【中图分类】TP3110 引言在数字信号处理(DSP)系统中,无论在时域或频域都离不开卷积运算和快速傅里叶(FFT)运算。

Matlab具有强大的矩阵运算能力,方便实用的绘图功能和语言的高度集成性,在DSP开发中,使用Matlab可以快速对系统进行仿真运算。

设输入信号为x(t),其频谱函数为X(jΩ),该信号通过滤波器h(t)后,其输出信号y(t)的频谱函数Y(jΩ)是频谱函数X(jΩ)与滤波器的频谱函数H(jΩ)的乘积,即:Y(jΩ)=X(jΩ)H(jΩ)(1)该信号通过低通滤波器的示意图如图1所示。

而在时域,输出信号y(t)实际是输入信号x(t)与滤波器h(t)的卷积。

就是说频谱函数的乘积相当于时间函数的卷积,反之亦然。

即:y(t) =x(t)*h(t)=x(τ)h(t-τ)dτ(2)图1 信号通过低通滤波器的示意图由于DSP主要依靠计算机完成,而计算机无论在时域或频域只能处理有限长的离散信号,因此上述关系可表示为:Y(ω)=X(ω)H(ω)(3)(4)式中:n表示离散时间;数字频率ω=ΩTs=2πf/fs;f为输入信号频率;fs,Ts为抽样频率和周期。

卷积和相关的matlab实现

卷积和相关的matlab实现

两个序列的卷积:c(n)=a(n)*b(n)即k c(n)=a(k)b(n-k)∑如果a 和b 的脚标范围为:12[,]a a 与12[,]b b ,则c 的脚标范围为1122[,]a b a b ++,但是由于matlab 的索引是从1开始的,这里假设a 和b 都是从n=1开始。

知道最后的范围即可:function c = convolution(a,b)M= length(a); %a 序列的长度N=length(b); %b 序列的长度c=zeros(1,N+M-1); %用来存放卷积的结果for n = 2:(M+N) %卷积之后的索引本应该的范围tmp_max=min(n-1,M); %根据求和表达式,由1=<k<=M 且 1=<n-k<=N tmp_min=max(n-N,1); %确定最终求和变量k 的取值for k =tmp_min:1:tmp_max;c(n-1) = c(n-1) +a(k)*b(n-k);%求和,同时由于c 从1开始索引,%将n 的范围2:M+N%对应到c 的1:M+N-1中去endend调用matlab 自带卷积函数conv 验证:>> x = 1:9;>> y=2:8;>> conv(x,y)ans =2 7 16 30 50 77 112 147 182 197 200 190 166 127 72>> convolution(x,y)ans =2 7 16 30 50 77 112 147 182 197 200 190 166 127 72两个序列的相关:()((),())c n cor a n b n =即()()*()k c n a n k b k =+∑同样,如果a 和b 的脚标范围为:12[,]a a 与12[,]b b ,则c 的脚标范围为1221[,]a b a b -+,但是由于matlab 的索引是从1开始的,这里假设a 和b 都是从n=1开始。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档