实验二离散时间信号的时域分析
陈一凡20112121006
一、实验目的:
学习使用MATLAB命令产生滑动平均滤波器;
学习使用MATLAB命令产生一个简单的非线性离散时间系统; 学习使用MATLAB命令产生线性与非线性系统;
学习使用MATLAB命令产生时不变系统和时变系统; 学习使用MATLAB命令产生线性时不变系统的冲激响应; 学习使用MATLAB命令产生线性时不变系统的级联;
学习使用MATLAB命令产生有限冲击响应系统的输出序列;
学习使用MATLAB命令产生线性时不变系统的冲击响应的绝对值之和; 学习使用MATLAB命令产生两个离散时间系统; 二、实验原理简述:
运用运算符和特殊符号,基本矩阵和矩阵控制,基本函数,数据分析,二维图形,通用图形函数,信号处理工具箱等命令,产生离散时间系统等。 三、 实验内容与实验结果
1、产生并绘制一个滑动平均滤波器 运行程序 clf;
n=0:100;
s1=cos(2*pi*0.05*n); s2=cos(2*pi*0.47*n); x=s1+s2;
M=input('滤波器所需的长度='); num=ones(1,M);
y=filter(num,1,x)/M; subplot(2,2,1); plot(n,s1);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅'); title('信号#1'); subplot(2,2,2); plot(n,s2);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅'); title('信号#2'); subplot(2,2,3); plot(n,x);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅'); title('输入信号'); subplot(2,2,4);
plot(n,y);
axis([0,100,-2,2]);
xlabel('时间序号n');ylabel('振幅'); title('输出信号'); axis;
滤波器所需的长度=2 实验结果如图1所示 ans =
0 100 -2 2
信号#12121信号#2振幅0-1-2振幅050时间序号n输入信号1000-1-2050时间序号n输出信号1002121振幅0-1-2050时间序号n100振幅0-1-2050时间序号n100
图1
2、生成一个简单的非线性离散时间系统: 运行程序: clf;
n=0:200;
x=sin(2*pi*0.05*n)+1; 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('输出信号'); 实验结果如图2所示
输入信号21.5振幅10.50020406080100120时间序号n输出信号14016018020010.5振幅0-0.5020406080100120时间序号n140160180200
图2
3.生成一个产生线性与非线性系统: 运行程序: clf; n=0:40; a=2;b=-3;
x1=cos(2*pi*0.1*n); x2=cos(2*pi*0.4*n); x=a*x1+b*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); y=filter(num,den,x,ic); yt=a*y1+b*y2; d=y-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('差信号'); 实验结果如图3所示
加权输入:a? x1[n]+b? x2[n]的输出200-20-400510152025303540振幅加权输出t:a? y1[n]+b? y2[n]50振幅0-500x 10-155101520差信号253035405振幅0-50510152025时间序号n303540
图3
4、产生一个时不变系统和时变系统: 运行程序: 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; 实验结果如图4所示
输出y[n]200-20-40500510152025303540振幅由于延时输入x[n10]的输出振幅0-50105101520差值信号25303540振幅0-10510152025时间序号n303540图4
5、产生线性时不变系统的冲激响应: 运行程序: clf; N=40;
num=[2.2403 2.4908 2.2403]; den=[1 -0.4 0.75]; y=impz(num,den,N); stem(y);