1.请用MATLAB编写程序,实现任意两个有限长度序列的卷积和。要求用图
形显示两个序列及卷积结果。
解:y(n)=∑x(i)h(n-i)
假设x(n)={1,2,3,4,5}; h(n)={3,6,7,2,1,6}; y(n)=x(n)*h(n)
验证:y[n]=[1,12,28,46,65,72,58,32,29,30]
【程序】
N=5
M=6
L=N+M-1
x=[1,2,3,4,5]
h=[3,6,7,2,1,6]
y=conv(x,h)
nx=0:N-1
nh=0:M-1
ny=0:L-1
subplot(131);stem(nx,x,'*b');xlabel('n');ylabel('x(n)');grid on
subplot(132);stem(nh,h,'*b');xlabel('n');ylabel('h(h)');grid on
subplot(133);stem(ny,y,'*r');xlabel('n');ylabel('y(h)');grid on
【运行结果】
2.已知两个序列x[n]=cos(n*pi/2), y[n]=e j*pi*n/4x[n],请编写程序绘制
X(e jw)和Y(e jw)和幅度和相角,说明它们的频移关系。
–提示:用abs函数求幅度,用angle求相角。
【程序】
n=0:15;
x=cos(n*pi/2);
y=exp(j*pi*n/4).*x;
X=fft(x);
Y=fft(y);
magX=abs(X);
angX=angle(X);
magY=abs(Y);
angY=angle(Y);
subplot(221);stem(n,magX,'*r');xlabel('频率');ylabel('幅度');grid on;
subplot(222);stem(n,angX,'*b');xlabel('频率');ylabel('相位');grid on;
subplot(223);stem(n,magY,'*r');xlabel('频率');ylabel('幅度');grid on;
subplot(224);stem(n,angY,'*b');xlabel('频率');ylabel('相位');grid on;
【运行结果】
【遇到的问题】
只有当n=15时幅度值才相等,n取其他值,幅度值有差异。【平移关系】
根据运行图示:
它们的幅度值一样,频率相差2个单位。