当前位置:文档之家› dsp卷积相关的matlab实现

dsp卷积相关的matlab实现

dsp卷积相关的matlab实现
dsp卷积相关的matlab实现

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.比较两种计算的结果,并解释

对比两种方法得出的结论,看以看出自己利用算法得出的卷积结果和系统自带的函数算出的卷积结果几何一致。同时两种方法得出的相关函数结果也几乎一致。

相关主题
文本预览
相关文档 最新文档