%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
任何线索?