fpbl.net
当前位置:首页 >> mAtlAB求序列卷积 >>

mAtlAB求序列卷积

你好.只要使用conv函数就可以了.例子:u=ones(1,100);v=2*u;w = conv(u,v);plot(w);

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 .

u=@(t) t>=0;f1=@(t) exp(-2*t).*u(t);f2=@(t) u(t)-u(t-4);t=-5:0.1:5;f3=conv(f1(t),f2(t));t_new=-10:0.1:10;figure;subplot(1,3,1); plot(t,f1(t)); title('f1');subplot(1,3,2); plot(t,f2(t)); title('f2');subplot(1,3,3); plot(t_new,f3); title('conv(f1,f2)');

原理方法1基本数学原理 我们假设有两个长度有限的任意序列A(n)和B(n),其中A(n)和B(n)的具体数学表达式可以看下图一.那么这两个有限长序列的卷积就应该为C(n)=A(n)*B(n),其具体表达式请参看一下图二.2相关函数指令 Matlab中的conv

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

如果你要的是符号卷积那就没有直接的功能函数要自己写出卷积表达式,再用符号积分函数去积,经常积不出如果是数值积分(序列)有conv这一族函数(help里面有相关函数那些)其实你要卷积还不如直接去算F变换再去求反变换来的方便

假如你知道这两个连续函数的表达式,那么就可以利用卷积的定义,用符号积分int来求.可以自己编一个M函数,以供需要时调用.由于函数定义域的不同,有时可能需要手动干预.

不可以求表达式的, 因为在matlab里面运算时都是以离散的、数字的形式出现的,是对连续信号的采样.你只能求出卷积之后每一点所对应的值,而且做卷积运算之后得到的将是一个离散的序列

%互相关与卷积运算类似,都是两个序列滑动相乘,matlab用xcorr函数求序列互相关函数%两者的差异为:%互相关的两个序列都不翻转,直接滑动相乘,求和;%卷积的其中一个序列需要先翻转,然后滑动相乘,求和.%所以,f(t)和g(t) 做相关等于 f*(t) 与 g(-t) 做卷积.%求卷积a=[1 2 3]b=1:5;c=conv(a,b)%互相关d=conv(a,fliplr(b))dd=xcorr(a,b)

clear,clcg=[3, 4, -2, 0, 1, -4];h=[1, -3, 0, 4, -2, 3];f=conv(g,h);结果f = 3 -5 -14 18 11 -14 28 -2 -18 11 -12

网站首页 | 网站地图
All rights reserved Powered by www.fpbl.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com