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
热门跟贴