二○一○ ~二○一一学年第 二 学期
信息科学与工程学院
信号与系统实验报告
实验2 时域离散信号的表示及运算
班 级: 学 号: 200912135049
姓 名:
指导教师: 盛玉霞
二○一一 年 四 月
一、 实验内容及步骤
1. 利用MATLAB命令画出下列序列的波形图。
3n()nsin5 (1)(20.5)u(n) (2)2n
(1)代码:
k=-20:20;
uk=[zeros(1,20),ones(1,21)];
m=(2-0.5.^k).*uk;
stem(k,m)
实验结果图:
(2)代码:
n=-20:20
f=((1.5).^n).*sin(n*pi/5)
stem(n,f)
实验结果图:
f(n)的累加和、f(32n)2. 已知f(n)的波形如图2-11所示,做出f(n)的一阶后向差分、
以及f(n)*f(32n)的波形。
10.80.60.40.20-2-1012345n图2-11 原序列f(n)
源程序:
n=-2:5;
s=diff(f(n));
f2=(3-2*n);
f3=conv(f(n),f2);
subplot(2,2,1)
stem(-2:5,f(n))
grid on
title('f(n)的波形')
subplot(2,2,2)
stem(-2:4,s)
grid on
title('f(n)一阶后向差分的波形')
subplot(2,2,3)
stem(f2)
grid on
title('f(3-2*n)的波形')
subplot(2,2,4)
stem(f3)
grid on
title('f(n)*f(3-2*n)的波形')
function y=f(n) %自定义函数f(n)=u(n)-u(n-4)
y=u(n)-u(n-4);
function y=u(n) %自定义阶跃序列
y=(n>=0);
实验结果图:
对f(n)累加求和:
t=[sum(f(-2)) sum(f(-2:-1)) sum(f(-2:0)) sum(f(-2:1)) sum(f(-2:2)) sum(f(-2:3)) sum(f(-2:4)) sum(f(-2:5))];
stem(-2:5,t);
grid on
axis([-2 5 -1 5]);
title('f(n)的累加和的波形')
实验结果图:
总结实验中的主要结论,你的收获和体会。
1. 离散信号用stem函数作图。
2. 可以利用全零矩阵函数zeros和单位矩阵函数ones构造单位冲击序列和单位阶跃序列,也可以自定义函数构造。
3. 序列的前向差分、后向差分在Matlab中直接根据定义式来实现。
4. 累加和由函数sum(f(n1:n2))来实现,计算从n1到n2的累加和。
5. 求离散时间信号卷积和的命令为conv。用MATLAB进行卷积和运算时,无法实现无限的累加,只能计算时限信号的卷积。同时注意序列长度的变化。
6. 在matlab中3/2与1.5不可以等同,例如在程序
n=-20:20
f=((1.5).^n).*sin(n*pi/5)
stem(n,f)
中,若将1.5替换为3/2则会出现程序编译错误。
7. 在第二题计算f(n)的累加和的过程中,最初是想利用for循环来实现,但是构造的函数始终不理想,最终采用矩阵的方式,不仅实现的更为简便容易,而且在运算时间上大大减少。