數字信号处理实验指导书(wcx)
数字信号处理
实验指导书
王创新 文卉
长沙理工大学电气与信息工程学院电子信息工程教研室
二零零柒年柒月
目 录
前 言3
实验一:离散时间信号的时域分析4
实验二:离散时间系统的时域分析7
实验三:离散时间信号的频域分析10
实验四:线性时不变离散时间系统的频域分析15
实验五: IIR数字滤波器的设计19
实验六: FIR数字滤波器的设计25
附录A MATLAB系统的常用概念30
附录B 信号处理工具箱函数35
前 言
数字信号处理研究数字序列信号的表示方法,并对信号进行运算,以提取包含在其中的特殊信息。近几十年来,由于在研究及应用两方面均取得了进展,数字信号处理领域已日趋成熟。由于计算机的大量使用,从而很容易向学生提供实际环境,以验证所学的概念和算法。
本指导书编程语言是MATLAB,它广泛应用于高性能数值计算和可视化。本书假定读者已具备MATLAB基础知识。前面的一些实验帮助学生理解信号处理的重要概念,后面以设计性实验项目为主,有利于加强对原理的理解并且加强对技术的应用。附录中给出了本书中用到的MATALB函数及简要解释。
实验一:离散时间信号的时域分析
实验目的
1、理解时域离散信号的概念,时域离散信号表示方法。
2、掌握MATLAB中产生信号和绘制信号的基本命令。
3、掌握序列的简单运算,如:加法、标量乘法、反转、延时、乘法等。
二.实验相关知识准备
1.用到的MATLAB命令
运算符:
: . + - * / ; %
基本矩阵:
i ones pi rand randn zeros
基本函数:
cos exp imag real
数据分析:
sum
二维图形:
axis grid legend plot subplot stairs stem title xlable ylable clf
工具箱:sawtooth square
三.实验内容
1.序列的产生
(1) 程序1-1:单位抽样序列的产生和绘制
% Program P1_1
% Generation of a Unit Sample Sequence
clf;
% Generate a vector from -10 to 20
n = -10:20;
% Generate the unit sample sequence
u = [zeros(1,10) 1 zeros(1,20)];
% Plot the unit sample sequence
stem(n,u);
xlabel('Time index n');ylabel('Amplitude');
title('Unit Sample Sequence');
axis([-10 20 0 1.2]);
(2) 程序1-2:正弦序列的产生和绘制
% Program P1_2
% 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;
2.序列的运算(信号的平滑)
数字信号处理应用的一个常见例子是从被加性噪声污染的信号中移除噪声。假定信号s[n]被噪声d[n]所污染,得到一个含有噪声的信号x[n]=s[n]+d[n]。我们需要对x[n]进行运算,产生一个合理的逼近s[n],对时刻n的样本求平均,产生输出信号是一种简单有效的方法。如:三点滑动平均的信号。
程序1-3 实现三点滑动平均的信号运算:
y[n]=(x(n-1)+x(n)+x(n+1))/3
程序如下:
% Signal Smoothing by Averaging
clf;
R = 51;
d = 0.8*(rand(R,1) - 0.5); % 产生随机噪声
m = 0:R-1;
s = 2*m.*(0.9.^m); % 产生未被污染的信号
x = s + d'; %产生被噪声污染