matlab 不用conv求卷积随便定义两个序列,假设为n1,n2,想实现两个序列卷积,翻折,移位,相乘是自己写的函数,前面都没问题,就是在for循环两个序列相乘得到新的序列,将新的序列求和,将和赋值到一

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/11 00:02:44
matlab 不用conv求卷积随便定义两个序列,假设为n1,n2,想实现两个序列卷积,翻折,移位,相乘是自己写的函数,前面都没问题,就是在for循环两个序列相乘得到新的序列,将新的序列求和,将和赋值到一

matlab 不用conv求卷积随便定义两个序列,假设为n1,n2,想实现两个序列卷积,翻折,移位,相乘是自己写的函数,前面都没问题,就是在for循环两个序列相乘得到新的序列,将新的序列求和,将和赋值到一
matlab 不用conv求卷积
随便定义两个序列,假设为n1,n2,想实现两个序列卷积,翻折,移位,相乘是自己写的函数,前面都没问题,就是在for循环两个序列相乘得到新的序列,将新的序列求和,将和赋值到一个数组中,把数组画出来,求指教
n1=0:2;
x1=[1,2,3];
subplot 321;stem(n1,x1);title('x1');
n2=0:2;
x2=[3,4,5];
subplot 322;stem(n2,x2);title('x2');
k3=length(n1)+length(n2);
a=[];
for i=1:1:k3
[n3,n4]=fan(x2,n2);
subplot 323;stem(n4,n3);title('翻折');
[k1,k2]=sigshift(x2,n2,i);
subplot 324;stem(k2,k1);title('移位');
[n5,n6]=sigmult(x1,n1,k1,k2);
%subplot 325;stem(n6,n5);title('相乘');
a=sum(n5);
end
subplot 325;stem(k3,a);

matlab 不用conv求卷积随便定义两个序列,假设为n1,n2,想实现两个序列卷积,翻折,移位,相乘是自己写的函数,前面都没问题,就是在for循环两个序列相乘得到新的序列,将新的序列求和,将和赋值到一
自己写个卷积的函数行不行?输入的x和y都是行向量:
function jj=juanji(x,y)
M=length(x);
N=length(y);
x=[x,zeros(1,N-1)];
y=[y,zeros(1,M-1)];
sum = 0;
for m=1:M+N-1
for n=1:m
sum = sum + x(n)*y(m+1-n);
end
jj(m)=sum;
sum=0;
end