离散时间系统的时域特性分析
时间:2025-04-23
时间:2025-04-23
数字信号处理实验报告
实验名称:专业班级:学号:二○一三年月日
一、实验原理
一个离散时间系统是将输入序列变换成输出序列的一种运算。若以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)的表达式num1
num2
den1
den2====[0.50.270.77];[0.450.50.45];[1];[1-0.53+0.46];
y1=filter(num1,den1,x);%计算出y1
y2=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;
num1
num2
den1
den2====%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的y
yd=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)],故此系统为时不变系统。
…… 此处隐藏:1355字,全部文档内容请下载后查看。喜欢就下载吧 ……