4 信号的运算-卷积

实验原理

数字信号卷积定理

实验内容以及步骤

1、假设卷积下面信号

X(n)= 0≤n<13

0 else

h(n)=1 0≤n<12

0 else

选定循环卷积的长度为N = 21。确定 1y (n) = x(n)h(n)的哪些数值与线性卷积 2y (n) = x(n) *h(n)结果中的数值相同。编写程序代码并输出图形,并分析错误数据的原因,怎样才能使两者数据相同。

n1=0:1:12;

x1=0.9.^n1;

h=ones(1,12);

h=[0 h];

N=length(x1)+length(h)-1;

n=0:N-1;

ny=0:20;

y1=circonvt(x1,h,21);

y2=circonvt(x1,h,N);

x1=[x1 zeros(1,N-length(x1))];

h=[h zeros(1,N-length(h))];

X1= fft(x1,N);

H=fft(h,N);

X=X1.*H;

x=ifft(X);

x=real(x);

subplot(2,2,1);stem(n,x1);title('x1(n)');axis([0,33,0,1]);

subplot(2,2,2);stem(n,h);title('h(n)');axis([0,33,0,1]);

subplot(2,2,3);stem(ny,y1,'fill');title('21点循环卷积');axis([0,33,0,8]);

hold on;subplot(2,2,4);stem(n,x);title('线性卷积');

stem(n,x,'r','--');

hold off

2、已知系统响应为h(n) = sin(0.2n) + cos(0.5n) 0 ≤ n < 20,输入为x(n) = exp(0.2n) 0 ≤ n <10 ,画出用DFT 方法实现求系统输出的系统框图,编写用DFT 实现的程序代码并输出图形

function y = circonvt(x1,x2,N)

if (length(x1)>N || length(x2)>N)

error('N必须大于等于x的长度');

end

x2=[x2 zeros(1,N-length(x2))];

X1=fft(x1,N);X2=fft(x2,N);X=X1.*X2;

y = ifft(X,N);y=real(y);

n1=0:1:19;

hn=sin(0.2*n1)+cos(0.5*n1);

n2=0:1:9;

xn=exp(0.2*n2);

N=length(xn)+length(hn)-1;

n=0:N-1;

ny=0:20;

y1=circonvt(xn,hn,21);

y2=circonvt(xn,hn,N);

xn=[xn zeros(1,N-length(xn))];

hn=[hn zeros(1,N-length(hn))];

X1= fft(xn,N);

H=fft(hn,N);

X=X1.*H;

x=ifft(X);

x=real(x);

subplot(2,2,1);stem(n,xn);title('xn(n)');axis([0,33,0,5]);

subplot(2,2,2);stem(n,hn);title('h(n)');axis([0,33,-2,2]);

stem(ny,y1,'fill');title('21点循环卷积');axis([0,33,-20,30]);

hold on;subplot(2,2,4);stem(n,x);title('线性卷积');

stem(n,x,'r','--');

hold off

实验结果分析

1、假设卷积下面信号

X(n)= 0≤n<13

0 else

0 else

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片