南京邮电大学
实 验 报 告
实验名称:信号的产生和运算
连续时间信号的频域分析
信号的时域采样和重建
离散傅里叶变换与应用
连续时间系统的频域和复频域分析
数字滤波器的设计与应用
信号处理的综合应用
课程名称
信号分析与处理实验
班级学号
B18011416
姓
名
李文进
开课时间 2019 /2020 学年 第二学期
实验一 信号的产生和运算
基础知识回顾
1. 单位样本序列(通常称为离散时间冲激或单位冲激)用 [ ]n 表示,其定义为
[ ]
n
1,
0,
n
n
0
0
2. 单位阶跃序列用 [ ]n 表示,其定义为
3. 指数序列由
[ ]
n
1,
0,
n
n
0
0
[ ]
x n
n
A
给定,其中 A 和可以是任意实数或任意复数,表示为
[ ]
x n
A e
o
n j
(
)
n
o
e
(
oj
o
),
A
j
A e
A e
o
n
cos(
)
n
o
j A e
o
n
sin(
)
n
o
4. 带有常数振幅的实正弦序列形如
[ ]
x n
A
cos(
)
n
0
其中 A , 0 和是实数。参数 A , 0 和分别称为正弦序列 [ ]x n 的振幅、角
频率和初始相位。
5. 长度为 N 的两个序列 [ ]x n 和 [ ]h n 的乘积,产生长度也为 N 的序列 [ ]y n
[ ]
y n
[ ]
[ ]
x n h n
长度为 N 的两个序列 [ ]x n 和 [ ]h n 相加,产生长度也为 N 的序列 [ ]y n
[ ]
y n
[ ]
x n
[ ]
h n
用标量 A 与长度为 N 的序列 [ ]x n 相乘,得到长度也为 N 的序列 [ ]y n
[ ]
y n
[ ]
A x n
无限长序列 [ ]x n 通过时间反转,可得到无限长序列 [ ]y n
[ ]
y n
[
x n
]
无限长序列 [ ]x n 经过 M 延时,可得到无限长序列 [ ]y n
[ ]
y n
[
x n M
]
若 M 是一个负整数,上式运算得到 [ ]x n 的超前。
一、实验目的
熟悉 Matlab 软件环境和常用函数,能够按照要求产生信号,对信号进行基
本运算。通过实验,加深理解连续和离散时间信号的时域表示。
二、实验内容
基于 Matlab 环境,产生常用的连续时间信号和离散时间序列(含正弦信号、
指数信号、阶跃信号等),绘制信号波形,实现信号的加、乘、移位、卷积等基
本运算。
三、实验过程与结果分析
1. 单位样本和单位阶跃序列
使用如下 MATLAB 命令,可产生长度为 N 的单位样本序列 u[n]
u = [1 zeros(1,N-1)];
延时 M 个样本且长度为 N 的单位样本序列 ud[n],可用如下 MATLAB 命令产生,其中 M
问题 1.2:命令 clf, axis, title, xlabel 和 ylabel 的作用是什么?
答:clf:清空当前图窗窗口;
axis:设置坐标轴范围和纵横比;
xlabel:为 x 轴添加标签;
ylabel:为 y 轴添加标签;
问题 1.3:修改程序 P1_1,以产生带有延时 11 个样本的延迟单位样本序列 ud[n]。运行修改
的程序并显示产生的序列。
< Insert program code here. Copy from m-file(s) and paste. >
< Insert MATLAB figure(s) here. Copy from figure window(s) and paste. >
clf;
n = 0:30;
ud= [zeros(1,11) 1 zeros(1,19)];
stem(n,ud);
xlabel('Time index n');ylabel('Amplitude');
title('Unit Sample Sequence');
axis([0 30 0 1.2]);
问题 1.4:修改程序 P1_1,以产生单位阶跃序列 s[n]。运行修改的程序并显示产生的序列。
< Insert program code here. Copy from m-file(s) and paste. >
< Insert MATLAB figure(s) here. Copy from figure window(s) and paste. >
修改的程序:
clf;
n = 0:30;
u = [1.*n];
stem(n,u);
xlabel('Time index n');ylabel('Amplitude');
title('Unit Sample Sequence');
axis([0 30 0 30]);
产生的序列如下:
问题 1.5:修改程序 P1_1,以产生带有超前 7 个样本的延迟单位阶跃序列 sd[n]。运行修改
的程序并显示产生的序列。
< Insert program code here. Copy from m-file(s) and paste. >
< Insert MATLAB figure(s) here. Copy from figure window(s) and paste. >
修改的程序:
clf;
n = -15:30;
s = [zeros(1,8) ones(1,38)];
stem(n,s);
xlabel('Time index n');ylabel('Amplitude');
title('Unit Sample Sequence');
axis([-15 30 0 1.2]);
产生的序列如下:
2. 指数序列
指数序列可使用 MATLAB 运算符 .^ 和 exp 产生。
程序 P1_2 可生成一个复指数序列。
% Program P1_2
% Generation of a complex exponential sequence
clf;
c = -(1/12)+(pi/6)*i;
K = 2;
n = 0:40;
x = K*exp(c*n);
subplot(2,1,1);
stem(n,real(x));
xlabel('Time index n');ylabel('Amplitude');
title('Real part');
subplot(2,1,2);
stem(n,imag(x));
xlabel('Time index n');ylabel('Amplitude');
title('Imaginary part');
程序 P1_3 可生成一个实指数序列。
% Program P1_3
% Generation of a real exponential sequence
clf;
n = 0:35; a = 1.2; K = 0.2;
x = K*a.^n;
stem(n,x);
xlabel('Time index n');ylabel('Amplitude');
问题 1.6:运行程序 P1_2,以产生复指数序列。
产生的复指数序列如下:
问题 1.7:运算符 real 和 imag 的作用是什么?
答:real:提取运算值 x 的实部
imag:提取运算值 x 的虚部
问题 1.8:命令 subplot 的作用是什么?
答:subplot 的作用是使“实部”和“虚部”用两张图像呈现出来:subplot(a,b,
c),其中 a 代表图像分两行显示,b 代表图像分一列显示,c 代表第 a 行的第 b
列图像。
问题 1.9:运行程序 P1_3,以产生实指数序列。
产生的指数序列如下:
3. 正弦序列
实正弦序列,
[ ]
x n
A
cos(
0
)
n
,在 MATLAB 中可使用三角运算符 cos 和 sin 产生。
程序 P1_4 是产生一个正弦信号的简单示例。
% Program P1_4
% Generation of a sinusoidal sequence
n = 0:40;
f = 0.1;
phase = 0;
A = 1.5;
arg = 2*pi*f*n - phase;
x = A*cos(arg);
clf; % Clear old graph
stem(n,x); % Plot the generated sequence
axis([0 40 -2 2]);
grid;
title('Sinusoidal Sequence');
xlabel('Time index n');
ylabel('Amplitude');
axis;
问题 1.10:运行程序 P1_4,以产生正弦序列并显示它。
产生的正弦序列如下:
问题 1.11:该序列的频率是多少?哪个参数控制该序列的相位?哪个参数控制该序列的振
幅?该序列的周期是多少?
答:该序列的频率是 0.1Hz;通过改变 f 的值可以此正弦序列的频率;参数 phase 控制该序列
的初相位;参数 A 控制该序列的振幅;该序列的周期是 10s。
问题 1.12:修改程序 P1_4,以产生长度为 50、频率为 0.08、振幅为 2.5、相移为 90 度的
正弦序列并显示它。该序列的周期是多少?
修改的程序如下:
clf;
n = 0:49;
f = 0.08;
phase = 1.57;