实验名称:离散时间系统的时域特性分析(实验一)专业班级:学生姓名:学
号:
指导教师:二○一三年月日
一、实验原理
一个离散时间系统是将输入序列变换成输出序列的一种运算。若以T[•]表示
这种运算,则一个离散时间系统y(n)=T[x(n)],离散时间系统中最重要,最常用的是“线性时不变系统”。
二、实验内容
考虑如下差分方程描述的两个离散时间系统:
系统1:y(n)=0.5*x(n)+0.27*x(n-1)+0.77*x(n-2)系统2:y(n)=0.45*x(n)+0.5*x(x-1)+0.45*x(n-2)+0.53*y(n-1)-0.46*y(n-2)
输入x(n)=cos(20*pi*n/256)+cos(200*pi*n/256)0≦n≦299
(1)编程求上述两个系统的输出,并分别画出系统的输入与输出波形。(2)编程求上述两个系统的冲激响应序列,并画出其波形。
(3)若系统的初始状态为零,判断系统2是否为时不变的?是否为线性的?
三、程序及输出结果(1)程序如下:
%系统1:y(n)=0.5*x(n)+0.27*x(n-1)+0.77*x(n-2)
%系统2:y(n)=0.45*x(n)+0.5*x(n-1)+0.45*x(n-2)+0.53*y(n-1)-0.46*y(n-2)
clf;%clf;用来清除图形的命令。一般在画图之前用。n=0:300;%产生300个步长为1的整数
x=cos(20*pi*n/256)+cos(200*pi*n/256);%x(n)的表达式num1num2den1den2
====
[0.50.270.77];[0.450.50.45];[1];
[1-0.53+0.46];
y1=filter(num1,den1,x);%计算出y1y2=filter(num2,den2,x);%计算出y2%画出输入和输出信号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%y1输入信号subplot(2,2,1);plot(n,x);
%生成一个2*2的窗口
xlabel('时间信号n');ylabel('信号幅度');title('y1输入信号');%y1输出信号
subplot(2,2,2);plot(y1);
xlabel('时间信号n');ylabel('信号幅度');title('y1输出信号');
%y2输入信号
subplot(2,2,3);plot(n,x);
%生成一个2*2的窗口
xlabel('时间信号n');ylabel('信号幅度');title('y2输入信号');%y2输出信号
subplot(2,2,4);plot(y2);
xlabel('时间信号n');ylabel('信号幅度');title('y2输出信号');
输出结果:
以上四个窗口为两个系统的输入与输出波形。(2)程序如下:
%系统1:y(n)=0.5*x(n)+0.27*x(n-1)+0.77*x(n-2)
%系统2:y(n)=0.45*x(n)+0.5*x(n-1)+0.45*x(n-2)+0.53*y(n-1)-0.46*y(n-2)
clf;n=30;num1num2den1den2
====
%clf;用来清除图形的命令。一般在画图之前用。%产生30的时间序列
[0.50.270.77];[0.450.50.45];[1];
[1-0.53+0.46];
y1=impz(num1,den1,n);%系统1的冲击响应y2=impz(num2,den2,n);%系统2的冲击响应
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%y1冲击响应
subplot(2,1,1);stem(y1);
%生成一个2*1的窗口
xlabel('时间信号n');ylabel('信号幅度');
title('系统1的冲击响应');grid;%显示网格%y2冲击响应
subplot(2,1,2);stem(y2);
xlabel('时间信号n');ylabel('信号幅度');
title('系统2的冲击响应');grid;
输出结果:
(3)程序如下:
系统2的线性系统判断程序
%系统1:y(n)=0.5*x(n)+0.27*x(n-1)+0.77*x(n-2)
%系统2:y(n)=0.45*x(n)+0.5*x(n-1)+0.45*x(n-2)+0.53*y(n-1)-0.46*y(n-2)clf;
%clf;用来清除图形的命令。一般在画图之前用。
n=0:30;%产生30个步长为1的整数a=2;b=-4;
x1=cos(2*pi*0.1*n);x2=cos(2*pi*0.4*n);x=a*x1+b*x2;
%x为x[n]
num2=[0.450.50.45];den2=[1-0.53+0.46];y1=filter(num2,den2,x1);y2=filter(num2,den2,x2);
%计算出系统2的y1%计算出系统2的y2
y=filter(num2,den2,x);yt=a*y1+b*y2;%计算出系统2的yy为y[n]%y[n]=a*y1[n]+b*y2[n];
%画出输入和输出信号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%系统2的线性系统判断subplot(2,1,1);%生成一个2*2的窗口stem(n,y);
xlabel('时间信号n');ylabel('信号幅度');subplot(2,1,2);stem(n,yt);
xlabel('时间信号n');ylabel('信号幅度');
title('系统2的线性系统判断');
输出结果:
分析:从上图可知,即y(n)=T[a*x1(n)+b*x2(n)]=a*T[x1(n)+b*T[x2(n)]],所以此系统是一个线性系统。
系统2的时不变系统判断程序
%系统1:y(n)=0.5*x(n)+0.27*x(n-1)+0.77*x(n-2)
%系统2:y(n)=0.45*x(n)+0.5*x(n-1)+0.45*x(n-2)+0.53*y(n-1)-0.46*y(n-2)clf;
n=0:30;D=10;
%clf;用来清除图形的命令。一般在画图之前用。%产生30个步长为1的整数
a=2;b=-4;
x1=cos(2*pi*0.1*n);x2=cos(2*pi*0.4*n);x=a*x1+b*x2;xd=[zeros(1,D)x];num2=[0.450.50.45];den2=[1-0.53+0.46];ic=[00];
y=filter(num2,den2,x,ic);%计算出系统2的yyd=filter(num2,den2,xd,ic);N=length(y);
y为y[n]
%x为x[n]
%生成新序列xd=x(n-D),延时D个单位
d=y-yd(1+D:N+D);%求y与yd的差值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%系统2的时不变系统判断subplot(3,1,1);stem(n,y);
%生成一个3*1的窗口
xlabel('时间信号n');ylabel('信号幅度');title('输出y(n)');grid;
subplot(3,1,2);
stem(n,yd(1:length(y)));
xlabel('时间信号n');ylabel('信号幅度');
title('由于输入时延而产生的输出yd[n]');
subplot(3,1,3);stem(n,d);
xlabel('时间信号n');ylabel('信号幅度');title('差值信号');grid;
输出结果:
分析:由图可知,y(n-D)=T[x(n-D)],故此系统为时不变系统。
因篇幅问题不能全部显示,请点此查看更多更全内容