完全重叠后,我的卷积代码停止工作。有什么建议吗?

时间:2019-09-03 11:52:33

标签: matlab signal-processing convolution

%in1 = input('Enter the input sequence:');
%in2 = input('Enter the impulse sequence:');

x= [1 2 3];
h= [1 1 1];

if length(in2)>length(in1)
    x= in2;
    h= in1;
end

c= zeros(1,length(h)+length(x)-1);
w= length(h);
h= flip(h); h=[h, zeros(1,(length(x)+length(h)-2))];disp(h);
x= [zeros(1,w-1), x, zeros(1,w-1)]; disp(x);disp(w);

for n=1:length(x)-(w-1)
    c(n)= sum((h(1+n-1):h(w+n-1)).*(x(1+n-1):x(w+n-1)));disp(c);
    h= circshift(h,1);disp(h);disp(x);
end


我尝试检查它在什么时候停止。在“ h”完全重叠“ x”之后。但在此之前,它按预期工作。我不确定我在这里缺少什么,因为逻辑似乎很合理。

这使我相信也许我缺少某种语法或不能完全控制MATLAB。

     c= 1     0     0     0     0


     h= 0     1     1     1     0     0     0

     x= 0     0     1     2     3     0     0

     c= 1     3     0     0     0


     h= 0     0     1     1     1     0     0

     x= 0     0     1     2     3     0     0

     c= 1     3     6     0     0


     h= 0     0     0     1     1     1     0

     x= 0     0     1     2     3     0     0

    %At this point I just get zeros

     c= 1     3     6     0     0


     h= 0     0     0     0     1     1     1

     x= 0     0     1     2     3     0     0

     c= 1     3     6     0     0

任何线索?

0 个答案:

没有答案