数字信号处理matlab实验第二章报告
时间:2025-03-14
时间:2025-03-14
离散时间系统的时域特性分析
一、实验目的
1.通过MATLAB仿真一些简单的离散时间系统。
2.研究这些离散时间系统的时域特性。
二、实验要求
1.学习并调试本章所给的例子。
2.回答书后给出的问题。
三、实验过程
Q1.对M=2,运行程序P2.1,生成输入x[n]=s1[n]+s2[n]的输出信号。输入的x[n]的哪个分量被该离散时间系统抑制?
P2.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('Time index n'); ylabel('Amplitude');
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;
答:输入信号的高频分量即s2[n]被抑制。
Q3.对滤波器长度和正弦信号s1[n]和s2[n]的频率取其他值,运行程序P2.1,算出结果。clf;
n = 0:100;
s1 = cos(2*pi*0.06*n);
s2 = cos(2*pi*0.45*n);
x = s1+s2;
M = input('滤波器所需长度= ');
num = [1,1];
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('Time index n');
ylabel('Amplitude');
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;
Q5 用不同频率的正弦信号作为输入信号,计算每个输入信号的输出信号。输出信号是如何受到输入信号频率的影响的?从数学上对你的结论加以证明。
clf;
n = 0:200;
x = cos(2*pi*0.05*n);
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('输出信号');
分别取f=0.05,f=0.5,f=0.01:f=0.05:
f=0.5:
f=0.01:
证明:设输入信号为()()n n x ωcos 2=,则()()()1cos 11+=+n n x ω以及
()()()1cos 2-=n n x ω
故
()()()()[][]
().
sin sin sin sin cos sin sin cos cos cos sin sin cos cos sin sin cos cos cos 22222222222312
2ωω
ωωωω
ωωωωωωωωωωωωω=+=--=+⋅--=-=n n n n n n n n n n n x n x n x n y
Q7. 运行程序P2.3,对由加权输入得到的y[n]在与相同权系数下输出y1[n]和y2[n]相加得到的yt[n]进行比较,这两个序列是否相等?该系统是线性系统么? P2.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);
axis([0,40,-50,50]);
ylabel('振幅');
title('加权输入: a \cdot x_{1}[n] + b \cdot x_{2}[n]的输出');
subplot(3,1,2)
stem(n,yt);
ylabel('振幅');
title('加权输出: a \cdot y_{1}[n] + b \cdot y_{2}[n]');
subplot(3,1,3)
stem(n,d);
xlabel('时间序号n');ylabel('振幅');
结果如图:
由图看出,,d[n]几乎为0,该仿真结果说明这两个序列相等,该系统是线性系统。
Q9.当初始条件非零是重做习题Q7
令ic=[20 20]结果如图:
Q11 假定另一个系统为y[n]=x[n]x[n-1],修改程序P2.3,计算这个系统的输出序列y1[n],y2[n]和y[n]。比较y[n]和yt[n]。这两个序列是否相等?该系统是线性系统吗?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;
x11=[0 x1 0];x12=[0 0 x1];
x21=[0 x2 0]; x22=[0 0 x2];
y1=x11.*x12;
y2=x21.*x22;
y = (a*x11+b*x21).*(a*x12+b*x22);
yt = a*y1 + b*y2;
d = y - yt;
nn=[0 n 0];
subplot(3,1,1)
stem(nn,y);axis([0 40 -5 1]);
ylabel('振幅');
title('加权输入: a \cdot x_{1}[n] + b \cdot x_{2}[n]的输出');
subplot(3,1,2)
stem(nn,yt);axis([0 40 -1 5]);
ylabel('振幅');
title('加权输出: a \cdot y_{1}[n] + b \cdot y_{2}[n]');
subplot(3,1,3)
stem(nn,d);
xlabel('时间序号n');ylabel('振幅');
由图看出d[n]不为0,y[n]与yt[n]两个序列不相等,该系统不是线性系统。
Q13 采用三个不同的延时变量D的值重做习题Q2.12。
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) …… 此处隐藏:4636字,全部文档内容请下载后查看。喜欢就下载吧 ……