matlab怎样求卷积?

 我来答
A九尾妖姬
高粉答主

2018-04-12 · 每个回答都超有意思的
知道小有建树答主
回答量:207
采纳率:100%
帮助的人:7.1万
展开全部

function [f,k]=sconv(f1,f2,k1,k2,p)

%计算连续信号卷积积分f(t)=f1(t)*f2(t)

%f:卷积积分f(t)对应的非零样值向量

%k:f(t)的对应时间向量

%f1:f1(t)非零样值向量

%f2:f2(t)的非零样值向量

%k1:f1(t)的对应时间向量

%k2:f2(t)的对应时间向量

%p:取样时间间隔

f=conv(f1,f2);

f=f*p;

k0=k1(1)+k2(1);

k3=length(f1)+length(f2)-2;

k=k0:p:k0+k3*p;

subplot(2,2,1)

plot(k1,f1);

title('f1(t)');

xlabel('t');

ylabel('f1(t)');

subplot(2,2,2);

plot(k2,f2);

title('f2(t)')

subplot(2,2,3)

plot(k,f);

h=get(gca,'position');

h(3)=2.5*h(3);

set(gca,'position',h);

title('f(t)=f1(t)*f2(t)')

xlabel('t');

ylabel('f(t)')

如果你就当这两个都是从1开始的, 直接卷积掉, 结果是5个数, 第一个数就是x(1)*h(1), 这也是你要的卷积当中的一个, 只是在你要的结果里,这个是x(0)*h(-1) ,所以在结果的序号是-1而不是1, 所以你只要把结果平移就可以了

因为matlab不支持负数序号的数组, 所以你最好只是“在心里平移”就好了, 就是说你保存的还是这个结果, 只是写程序的时候记住了, 这个是从-1开始的

你只需要在画图的时候指定横坐标

plot(-1:3, conv(x, h))

匿名用户
2013-11-19
展开全部
如果你要的是符号卷积那就没有直接的功能函数要自己写出卷积表达式,再用符号积分函数去积,经常积不出如果是数值积分(序列)有conv这一族函数(help里面有相关函数那些)其实你要卷积还不如直接去算F变换再去求反变换来的方便
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
常山赵子龙66
2018-04-03 · TA获得超过1.4万个赞
知道小有建树答主
回答量:145
采纳率:100%
帮助的人:6.7万
展开全部
  1. 在MATLAB中,可以用函数y=filter(p,d,x)实现差分方程的仿真,也可以用函数 y=conv(x,h)计算卷积;

  2. 即y=filter(p,d,x)用来实现差分方程,d表示差分方程输出y的系数,p表示输入x的系数,而x表示输入序列。输出结果长度数等于x的长度。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式