K=1; f=0.05; w=2*pi*f; x=cos(w*n)+K; x1=[x 0 0]; x2=[0 x 0]; x3=[0 0 x];
y=x2.*x2-x1.*x3; y=y(2:202); subplot(2,1,1) plot(n,x)
xlabel('时间序号n');ylabel('振幅'); title('输入信号') subplot(2,1,2) plot(n,y)
xlabel('时间序号n');ylabel('振幅'); title('输出信号')
输入信号21.5振幅10.50020406080100120时间序号n输出信号14016018020042振幅0-2020406080100120时间序号n140160180200图11
Q2.11假定另一个系统为y[n]=x[n]x[n-1],修改程序P2.3,计算这个系统的输出序列y1[n],y2[n],和y[n].比较y[n]和yt[n]。运行程序如下,结果如图12; clf; n=0:40;
x1=cos(2*pi*0.1*n); x2=cos(2*pi*0.4*n);
y=x1.*x2;
num=[2.2403 2.4908 2.2403]; den=[1 -0.4 0.75]; ic=[0 0];
y1=filter(num,den,x1,ic); y2=filter(num,den,x2,ic); y3=filter(num,den,y,ic); yt=y1+y2; d=y3-yt;
subplot(3,1,1) stem(n,y); ylabel('振幅');
title('加权输入:a\\cdot x_{1}[n]+b\\cdot x_{2}[n]的输出'); subplot(3,1,2) stem(n,y); ylabel('振幅');
title('加权输出t:a\\cdot y_{1}[n]+b\\cdot y_{2}[n]'); subplot(3,1,3) stem(n,d);
xlabel('时间序号n');ylabel('振幅'); title('差信号');
加权输入:a? x1[n]+b? x2[n]的输出1振幅0-10510152025303540加权输出t:a? y1[n]+b? y2[n]1振幅0-11005101520差信号25303540振幅0-100510152025时间序号n303540
图12
Q2.17考虑另一个系统,y[n]=nx[n]+x[n-1],修改程序P2.4。运行程序如下,结果如图13; clf;
n=0:40;D=10;a=3.0;b=-2;
x=a*cos(2*pi*0.1*n)+b*cos(2*pi*0.4*n); xd=[zeros(1,D) x];
num=[2.2403 2.4908 2.2403]; den=[1 -0.4 0.75]; ic=[0,0];
y=filter(num,den,x,ic); yd=filter(num,den,xd,ic); d=y-yd(1+D:41+D); subplot(3,1,1) stem(n,y); ylabel('振幅');
title('输出y[n]');grid; subplot(3,1,2) stem(n,yd(1:41)); ylabel('振幅');
title(['由于延时输入x[n',num2str(D),']的输出']);grid; subplot(3,1,3) stem(n,d);
xlabel('时间序号n');ylabel('振幅'); title('差值信号');grid;
输出y[n]200-20-40500510152025303540振幅由于延时输入x[n10]的输出振幅0-50105101520差值信号25303540振幅0-10510152025时间序号n303540
图13
Q2.20修改程序P2.,5产生如下因果线性时不变系统的冲激响应的前45个样本:y[n]+0.71- y[n-1]-0.46y[n-2]-0.62y[n-3]=0.9x[n]-0.45x[n-1]+0.35x[n-2]+0.002x[n-3]。运行程序如下,结果如
图14; clf; N=45;
num=[1 0.71-0.46 -0.62]; den=[0.9 -0.45 0.35 0.002]; y=impz(num,den,N); stem(y);
xlabel('时间序号n');ylabel('振幅'); title('冲激响应');grid;
冲激响应1.210.80.60.4振幅0.20-0.2-0.4-0.6-0.80510152025时间序号n30354045
图14
Q2.26修改程序P2.6,将两个二阶系统顺序颠倒并在零初始条件下重复此过程。运行程序如下,结果如图15; clf;
x=[1 zeros(1,40)]; n=0:40;
den=[1 1.6 2.28 1.325 0.68];
num=[0.06 -0.19 0.27 -0.26 0.12]; y=filter(num,den,x);
num1=[0.2 -0.5 0.3];den1=[1 0.7 0.85]; num2=[0.3 -0.2 0.4];den2=[1 0.9 0.8]; y1=filter(num1,den1,x); y2=filter(num2,den2,y1); d=y-y2;
subplot(3,1,1);
stem(n,y);
ylabel('振幅');
title('四阶实现的输出');grid subplot(3,1,2); stem(n,y2);
ylabel('振幅');
title('级联实现的输出');grid subplot(3,1,3); stem(n,d);
xlabel('时间序号n');ylabel('振幅'); title('差值信号');grid
四阶实现的输出1振幅0-110510152025303540级联实现的输出振幅0-10x 10-155101520差值信号253035405振幅0-50510152025时间序号n303540
图15
Q2.28修改程序P2.7,用FIR滤波器h[n]对输入x[n]滤波,求得y1[n]。运行程序如下,结果如图16; clf;
h=[3 2 1 -2 1 0 -4 0 3]; x=[1 -2 3 -4 3 2 1]; y=conv(h,x); n=0:14;
subplot(2,1,1); stem(n,y);
xlabel('时间序号n');ylabel('振幅'); title('用卷积得到的输出');grid;