matlab里sconv原理_matlab怎样求卷积?

展开全部

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

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

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

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

%f1:32313133353236313431303231363533e78988e69d8331333365646263f1(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))


版权声明:本文为weixin_30430333原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。