1.编写褶积的程序。
function y=chenglei_convolution(x1,x2)
x1=input('x1=');
x2=input('x2=');
N=length(x1);
M=length(x2);
L=N+M-1;
for(n=1:L)
y(n)=0;
for(m=1:M)
k=n-m+1;
if(k>=1&k<=N)
y(n)=y(n)+x2(m)*x1(k);
end
end
end
y1=conv(x1,x2);
nx1=0:N-1;
nx2=0:M-1;
ny=0:L-1;
figure(1);
stem(nx1,x1,'.k');xlabel('n');ylabel('x1(n)');grid on; title('序列x1')
figure(2);
stem(nx2,x2,'.k');xlabel('n');ylabel('x2(n)');grid on; title('序列x2')
figure(3);
stem(ny,y,'.k');xlabel('n');ylabel('y(n)');grid on; title('线性卷积')
figure(4);
stem(y1');xlabel('n');ylabel('y1');grid on;
title('conv直接卷积')
2.已知x(n)={1,2,~,100},y(n)={100,99,~,1},计算x(n)*y(n)。
计算结果由图所示:
3.计算x(n)与y(n)的相关。
程序:
x=1:100;
y=100:-1:1;
c=xcorr(x,y);
k=length(y);
e=randn(1,k);
y=y+e;
xk=fft(x,2*k);
yk=fft(y,2*k);
rm=real(ifft(conj(xk).*yk));
rm=ifftshift(rm);
m=-k:k-1;
n=k-1:-1:-k;
figure(1);
stem(n,rm)
xlabel('n');
ylabel('幅度');grid on;
title('x与y的互相关函数');
figure(2);
stem(c');
xlabel('m');
ylabel('幅度');grid on;
title('调用系统xcorr得出x与y的互相关函数');
直接进行相关的结果:
4.利用褶积计算相关
5.比较两种计算的结果,并解释
对比两种方法得出的结论,看以看出自己利用算法得出的卷积结果和系统自带的函数算出的卷积结果几何一致。同时两种方法得出的相关函数结果也几乎一致。