(1) 用Matlab实现差分方程
(i) y(n)=0.6y(n-1)- 0.08y(n-2)+x(n);
(ii) y(n)=0.7y(n-1)- 0.1y(n-2)+2x(n)-x(n-2);
程序如下:
B1=1; A1=[1,0.6,0.08];
xn=[1, zeros(1, 30)];
xi=filtic(B1,A1,xn);
hn1=filter(B1,A1,xn,xi);
n=0:length(hn1)-1;
subplot(3,2,1);stem(n,hn1, '.')
title('a');
xlabel( 'n');ylabel( 'h(n)')
xn=ones(1,30);
sn1=filter(B1,A1,xn,xi);
n=0:length(sn1)-1;
subplot(3,2,2);stem(n,sn1, '.')
title('b');
xlabel( 'n');ylabel( 's(n)')
系统2:
B2=[2,0,-1]; A2=[1, -0.7,0.1];
xn=[1, zeros(1, 30)];
xi=filtic(B2,A2,xn);
hn2=filter(B2,A2,xn,xi);
n=0:length(hn1)-1;
subplot(3,2,3);stem(n,hn2, '.')
title('c');
xlabel( 'n');ylabel( 'h(n)')
xn=ones(1,30);
sn2=filter(B1,A1,xn,xi);
n=0:length(sn1)-1;
subplot(3,2,2);stem(n,sn2, '.')
title('d');
xlabel( 'n');ylabel( 's(n)')
(2) 设3项滑动平均滤波器的输入信号为
sin(n / 6)u(n)
,画出该滤波器的输入和输出
的前15个序列值。
程序如下:
B=[1,1,1]/3; A=1;
n=0:30; xn=sin(n*pi/6);
yn=filter(B,A,xn);
subplot(3,2,1);stem(n, xn, '.') ; ylabel( 'x(n)');
subplot(3,2,3);stem(n, yn, '.') ; xlabel( 'n');ylabel( 'y(n)');