如何利用matlab实现两个有限长序列的卷积

如题所述

基本数学原理
我们假设有两个长度有限的任意序列A(n)和B(n),其中A(n)和B(n)的具体数学表达式可以看下图一。那么这两个有限长序列的卷积就应该为C(n)=A(n)*B(n),其具体表达式请参看一下图二。
2
相关函数指令
Matlab中的conv和deconv指令不仅可以用于多项式的乘除运算,还可以用于两个有限长序列的卷积和解积运算。
Matlab提供的函数conv,语法格式:w=conv(u,v),其中u和v分别是有限长度序列向量,w是u和v的卷积结果序列向量。如果向量u和v的长度分别为N和M,则向量w的长度为N+M-1.如果向量u和v是两个多项式的系数,则w就是这两个多项式乘积的系数。下面我们看一下deconv指令。功能:求向量反褶积和进行多项式除法运算。语法格式:[q,r]=deconv(v,u)
,参数q和r分别返回多项式v除以多项式u的商多项式和余多项式。具体实例请看下一步。
3
conv和deconv指令实例
具体实例请看下图,这里我们求多项式(x2+2x+1)与多项式(2x2+x+3)的积,再求积与(x2+2x+1)的商。需要注意的是向量c代表多项式(2x4+5x3+7x2+7x+3)。
END
两个有限长序列的卷积实例
具体序列的数学形式
在这一步我们将具体的有限长时间序列按数学方式显示,具体请看下图。
解法一:循环求合法求卷积
在本例中我们将按照原理方法第一步中图二的方式进行卷积计算,即循环求合法求卷积。具体的代码及结果请看下图。图一是是生成有限长度时间序列,图二是根据原理方法第一步中图二的方式即循环求合法求卷积的具体代码,图三是是图二的计算结果。
解法二:0起点序列法
下面就说一下第二种方法,即“0起点序列法”,所采用的指令就是我们在原理方法中介绍的conv函数指令。具体代码看下图。
解法三:非平凡区间序列法
下面就说一下第二种方法,即“0起点序列法”,所采用的指令就是我们在原理方法中介绍的conv函数指令。具体代码看下图。图一为计算代码,图二为计算结果。
绘图比较
这一步我们将解法二和解法三的计算结果绘制在一张图片中进行比较,其中第一幅是“0起点法”的计算结果图,第二幅是“非平凡区间法”的计算结果图。其中画图代码为:
subplot(2,1,1),stem(kc,c),text(20,6,'0
起点法')
%画解法二的结果
CC=[zeros(1,KC(1)),C];
%补零是为了两子图一致
subplot(2,1,2),stem(kc,CC),text(18,6,'非平凡区间法')
%画解法三的结果
xlabel('n')
6
小结
有以上可以得出如下结论:
1、“解法三”最简洁、通用;
2、“解法二”使用于序列起点时刻N1或(和)M1小于0的情况,比较困难;
3、“解法一”最繁琐,效率低下。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-05-18
卷积运算可以说是一种有别于其他运算的新型运算,在信号处理工作中,它是一种常用的工具。随着信号与系统理论研究的深入以及计算机技术的发展,卷积运算被广泛地运用到诸多新处理领域中,如:现代地震勘测,超声诊断,光学诊断,光学成像,系统辨识及其他。

信号的卷积是针对时域信号处理的一种分析方法,它一般用于求取信号通过某系统后的响应。在信号与系统中,我们通常求取某系统的单位冲激响应,所求得的h(k)可作为系统的时域表征。任意系统的系统响应可用卷积的方法求得:y(k)=x(k)*h(k)本回答被提问者和网友采纳
第2个回答  2015-03-30
我记得是这个函数吧:conv或者conv2

如何利用matlab实现两个有限长序列的卷积
解法一:循环求合法求卷积 在本例中我们将按照原理方法第一步中图二的方式进行卷积计算,即循环求合法求卷积。具体的代码及结果请看下图。图一是是生成有限长度时间序列,图二是根据原理方法第一步中图二的方式即循环求合法求卷积的具体代码,图三是是图二的计算结果。解法二:0起点序列法 下面就说一...

怎么用MATLAB实现 用循环卷积定义式计算两有限长序列的循环卷积
问题比较简单,直接给程序。看不懂再问 a,b是两个向量,N是循环卷积点数,要变动可以自己改 clc;clear a=[1 2 3 4 5];b=[1 1 ];N=3;tmp=conv(a,b);if N<length(tmp)zeropadding = N-mod(length(tmp),N);tmp=[tmp zeros(1,zeropadding)];tmp=reshape(tmp,N,length(tmp)\/N);...

matlab怎么表示卷积
Matlab中的卷积函数 conv(xn,hn) 其中xn、hn的点数分别为N1、N2,输出点数为 N1+N2-1 。upfirdn(xn,hn,length) 作用为把xn中的每个值乘以序列hn,然后移位相加,length表示了移位的长度。其中xn、hn的点数分别为N1、N2,输出点数为 N2+(N1-1)×length 。

怎么用matlab进行卷积???
1、函数f与g的卷积可以定义为:z(t)=f(t)*g(t)= ∫f(m)g(t-m)dm.2、两个序列的卷积定义:y(n)= Σx(m)h(n-m)3、卷积的作用:时域的卷积等于频域的乘积,即有Y(s)=F(s)×H(s) 在通信系统里,我们关心的以及要研究的是信号的频域,不是时域,原因是因为信号的频率是携带有信息的...

matlab如何实现两个连续信号的卷积?
通过以下步骤实现MATLAB中两个连续信号的卷积操作:首先,定义两个连续信号。例如,信号A和信号B。接着,选择一个卷积核,这通常是一个具有加权系数的一维或二维数组。将卷积核沿着信号A和信号B进行滑动,每次移动一单位。在每次滑动时,计算卷积核与当前窗口内信号值的点积,形成一个新的数值。重复步骤3...

matlab怎样求两个序列的线性卷积
先构造xn与hn两个函数,ifn>=0&&n<=11 x(n)=0.8;elsex(n)=0;end ifn>=0&&n<=5 h(n)=1;elseh(n)=0;end 之后直接用conv函数求卷积就好了。令输出结果为y,y=conv(x,h);

matlab中用function [f,k]=conv(f1,f2,k1,k2,p) 函数求两个连续函数的...
function [f,k]=sconv(f1,f2,k1,k2,p) f=conv(f1,f2); k0=k和heaviside函数都放上来我才好调试或你的f1,f2,k1,k2,p这些参数给传 追问你好,我在edit里面写的是图片中的程序:然后保存为.m文件。接着在命令行输入 p=0.00001;k1=-1:p:1;f=trimf(k1,[-1,0,1]);k2=0:p:8 f2=...

matlab实现 两门函数的卷积图 Error using ==> plot,Vectors must be t...
两个序列卷积,输出序列的长度是序列1的长度+序列2的长度-1;你的ft1和ft2的长度都是11,卷积得到的ft的长度为2*11-1 = 21;画图用stem(-20:2:20,ft)或者直接用stem(ft)就好了。

MATLAB编程问题,已知f1={1,1,1,2},f2={1,2,3,4,5},求两序列的卷积和
f1=[1,1,1,2];f2=[1,2,3,4,5];conv(f1,f2)这样就好了

怎么用MATLAB求两个函数的卷积,其中y1=t\/2(0
按照以下方法求卷积 t1=0:0.01:2;y1=t1.\/2;t2=0:0.01:2;y2=heaviside(t2+0.5);c=conv(y1,y2);

相似回答