MATLAB 离散信号卷积求助

%5.4 求信号 卷积和 f1(n)*f2(n)
%具体的信号 f1(n)和f2(n)见图片
clear all;
clc;
n1=-3:20;
n2=1:15;
N1=length(n1);
f1=zeros(1,N1);
N2=length(n2);
f2=zeros(1,N2);
n=(n1(1)+n2(1)):(n1(N1)+n2(N2));%卷积和上下限
%对f1(n)进行定义
for k=1:N1
if k<=6
f1(k)=3*n1(k)+9;
end
if (k>6)&&(k<=10)
f1(k)=-n1(k)^2+22;
end
if (k>10)&&(k<=14)
f1(k)=-7;
end
if (k>14)&&(k<=19)
f1(k)=10*cos(0.5^n1(k));
end
if k>19
f1(k)=100*exp(-0.2*n1(k));
end
end
%对f2(n)进行定义
for k=1:N2
if k<=3
f2(k)=4*n2(k)^0.3;
end
if (k>3)&&(k<=6)
f2(k)=n2(k)-10;
end
if (k>6)&&(k<=10)
f2(k)=-n2(k)+12;
end
if (k>10)&&(k<=13)
f2(k)=0;
end
if (k>13)&&(k<=15)
f2(k)=2;
end
end
figure(1)
subplot(2,1,1)
stem(n1,f1)
title('graphics for f1(n)');
subplot(2,1,2)
stem(n2,f2)
title('graphics for f2(n)');
figure(2)
subplot(1,1,1)
y=convn(f1,f2);%这里的卷积不知道对不对,因为这里的信号f1不是一个因果信号,所以我不知道这样子得到的f1数组是否会对卷积有影响
% 比方说
% f1 =
% Columns 1 through 12
% 0 3.0000 6.0000 9.0000 12.0000 15.0000 13.0000 6.0000 -3.0000 -14.0000 -7.0000 -7.0000
% Columns 13 through 24
% -7.0000 -7.0000 10.0000 10.0000 10.0000 10.0000 10.0000 4.0762 3.3373 2.7324 2.2371 1.8316
% f1其实的n=0位置是 9 即f1(4)这个位置 这样子直接用 y=convn(f1,f2) 卷积得到的结果会不会不正确
stem(n,y);
grid on;
title('graphics for y(n)=f1(n)*f2(n)');
结果是对的,只是结果的第一个数值不是对应 n=0;
先Mark,有时间我再来看。