【MOOC】数字信号处理-电子科技大学-第一周-数字信号处理的概述
数字信号处理的特点及应用介绍
About this course
Text : Digital Signal Processing (DSP) – A Computer-Based Method (fourth edition) by sanjit K. Mitra, published in August 2012.
Simulation Tool: MATLAB
What is DSP
DSP可称为Digital Signal Processing和Digital Signal Processor。两者的主要区别在于:前者侧重于信号处理算法的设计与实现,后者则专注于高速数字信号处理芯片的技术开发。
| Digital Signal Processing | Digital Signal Processor |
|---|---|
| mainly study theory, method, algorithm of digital signal processing | A kind of microprocessor used to implement digital signal processing algorithm |
这门课用DSP指代前者。而我们用ASP代表模拟信号处理。
举例
下图便为一个对模拟信号进行数字处理的例子:

左端输入信号为:

采用S/H电路(采样保持电路)对其输入进行2微秒的采样处理。随后经A/D(模拟转数字)电路处理后信号被量化为阶梯状波形。输出数字序列x[n]表现为:

通过将信号经过编码处理(无需过多关注具体的编码细节),即可获得以下信息:

以二进制表示的话,则为:

通过DSP处理芯片,输出信号的编码为:

也为:

故输出信号图形y[n]为:

再通过D/A(数字转模拟电路)电路和LPF(低通滤波器)后得到的模拟信号为:

这一过程涉及将一个模拟信号转换为另一个模拟信号的技术方法,在这种情况下所采用的技术是数字信号处理器(DSP)。那么为何选择使用DSP而非其他技术如专用电路处理器(ASP)呢?
Why DSP
Advantage to ASP:
该产品具有更高的可靠性,并不那么容易受到温度、噪声等tolerance levels, including的影响。
2.higher accurate ;
3.can be integrated on a single chip;
Limit:
A/D D/A rates are not enough available in some applications.
Advantage of DSP:
1)Programmability: Modify software instead of hardware
2)Precision: ADC bits, CPU word width is controllable
Stability: Zero variation in the presence of environmental factors across the entire operational range.
DSP Applications

MATLAB的基础概念及其在DSP中的应用
一、Matlab 简介
Matlab名称来源于'Matrix'与'Laboratory'两个词的前三个字母组合而成。该软件由MathWorks公司于1982年推出,并提供了一套高效的数值计算与可视化技术平台。在编程运算方面采用的方法与人类进行科学计算的方式完全一致,在学习难度上比Basic、Fortran等语言要容易掌握得多。其核心数据结构为矩阵,在这个基础上具备强大的数值计算能力和图形展示功能。为了满足不同领域的应用需求,该软件还提供了丰富多样的专业工具箱库(ToolBox)。目前,在教育领域中这一软件已成为了多个相关学科课程的重要教学平台
二、Matlab 的安装与启动
pass
三、Matlab 编程基础
1 变量
• 无需预先定义变量即可进行操作。
• 变量名称对大小写字母敏感。
• 第一个字符必须是英文字母;此外变量名长度不得超过31个字符。
• 允许包含下划线和数字作为组成部分;同时变量名不得包含空格或标点符号。
2 数组,向量与矩阵的创建和访问
在Matlab环境中,这三个概念在生成与呈现过程中并无差别。
• 矩阵的创建
例如:创建一个3×3的矩阵,输入 :
a=[1 2 3;4 5 6;7 8 9]
屏幕输出
a =
1 2 3
4 5 6
7 8 9
• 访问该矩阵中的一个特定元素:
a(3,2)
ans=
8
获取该矩阵中某一完整行或列的所有元素:
a(3,:) 和 a(:,2)
其中这些符号分别表示长度为1×3的行向量和长度为3×1的列向量。
3 部分特殊变量和常数
• result 最新生成的结果
• double-precision floating-point number 在双精度浮点运算中使用
• pi (π, approximately 3.1415926)
• imaginary unit (the imaginary unit i)
• imaginary unit (the imaginary unit j)
• infinite value, such as the result of division by zero (n/0)
4 部分常用运算符
算术运算符
加法运算:执行两个数值的加法操作;减法运算:执行两个数值的减法操作;乘法运算:执行两个数值的乘法操作(包括标量相乘、矩阵相乘以及标量与矩阵之间的相乘);除法运算:执行两个数值的除法操作(包括标量相除、矩阵被标量或数组所除);幂运算(仅限于方阵):对一个方阵执行自幂次的操作;数组元素间的乘法运算:对两个同维度数组进行对应元素的乘积计算;数组元素间的除法运算:对两个同维度数组进行对应元素的商计算;数组元素取幂:对一个数组中的每一个元素执行取幂的操作
关系运算符
• < 小于
• <= 小于等于
• > 大于
• >= 大于等于
• == 等于
• ~= 不等于
运算法则:若关系式成立,结果为1;若关系式不成立,结果为0。
其他常见符号
赋值运算:通过等号实现变量的赋值;注释标识:以百分号开头的行表示代码注释;共轭转置符号:单引号用于矩阵或向量的共轭转置;冒号运算子:用于变量声明或条件判断;n:s:m 生成从n到m以步长s递增或递减的一维序列(当步长s为正时序列递增;当s为负时序列递减;若步长未指定则默认为1)。
逻辑运算符
• & 与
• | 或
• ~ 非
运算法则: 若逻辑真,结果为1;若逻辑假,结果为0。
5 Matlab的程序设计
• 工作方式
1.基于指令的交互式界面。具体来说,当用户在命令窗口中输入指令并按回车键时,系统会立即执行该指令并输出计算结果。
- 编写m文件的方式。m files基于matlab语言编写,并且通常使用.m作为扩展名(例如example.m)。用户可以通过任意文本编辑器来处理M files.
• 顺序结构
Matlab 从上到下依次执行各语句,该结构最简单。
• 循环结构
循环结构
当循环次数预先可知时,则遵循以下模式:
for i=n:s:m
执行语句体
end
其中步长s可取正数、负数或小数值。
(2)while-end 循环
用于循环次数不能事先确定的,格式为
while 表达式
语句 体
end
只有表达式为真,就执行语句体,表达
式为假,终止该循环。
• 分支结构
(1)if 语句
格式为
if 表达式1
语句体1
elseif 表达式2
语句体2
………..
else
语句体
end
6 m文件的创建,保存
• 创建
【File】菜单下【New】菜单选项的【M-File】命 令 打开matlab的
m文件编辑器窗口。
• 保存
单击M文件编辑器窗口工具栏中的【 Save】图标,
打开保存对话框
7 基本数学函数和基本绘图函数
基本数学函数
sine(x), cosine(x), tangent(x), cotangent(x), exponential function exp(x)
natural logarithm: logarithm(x)
base 10 logarithm: logarithm base 10(x)
base 2 logarithm: logarithm base 2(x)
absolute value: modulus(x)
complex conjugate: conjugate(x)
real part: real part of x
imaginary part: imaginary part of x
基本绘图函数
Matlab拥有卓越的图形绘制工具。一般而言,在多数场景下,用户只需设定绘图参数并导入所需数据即可利用Matlab提供的多样化二维及三维图表功能来生成所需的可视化图表。
plot
Matlab中最常用的绘图函数是plot,plot的命令格式有以下几种:
• (1) plot(y)
当y为一向量时,以y的序号作为x轴,按向量y的值绘制曲线。
• (2) plot(x,y)
x,y均为向量时,以x向量作为X轴,向量y作为Y轴绘制曲线。
注意:x和y种元素的个数必须相同!
stem
使用Matlab编程语言中的stem函数绘制离散序列
8 编程举例
用图形表示连续调制波形y=sin(t)sin(9t)及其包络。
程序如下:
t=(0:pi/100:pi)’;%长度为101的时间采样列向量
y1=sin(t)*[1,-1];%包络线函数值, 是( 101x2) 的矩阵
y2=sin(t).*sin(9*t); %长度为101的调制波列向量
t3=pi*(0:9)/9;
y3=sin(t3).*sin(9*t3);
plot(t,y1,'r:',t,y2,'b',t3,y3,'bo')
axis([0,pi,-1,1]) %控制轴的范围
输出:

四、Matlab 在数字信号处理课程中的应用
常见连续信号
周期信号:具有周期性的正弦波形与矩形脉冲。例:使用该系统可以生成一个幅度为2、频率为4Hz且相位偏移π/6的正弦波形。
t=0:0.01:1;
w0=2*pi*4;%频率为4Hz
x=2*sin(w0*t+pi/6);%幅度为2 相位为pi/6
plot(t,x)
输出:

非周期性信号:指数型信号、阶跃型信号、采样函数sinc(x)等
例1:使用该模块可生成一个幅度为1、脉宽为4秒、时间延迟为2秒的矩形脉冲波形
t=-2:0.02:6;
delay_s=2 %延时为2秒的
plot(t,rectpuls(t-delay_s,4));
%rectpuls(x,w)产生高为1,宽为w的矩形信号,默认以原点为中心,rectpuls(x-2,w)绘出的图形则是 在rectpuls(x,w)绘出的图形的基础上右移长度为2 得到的
axis([-2,6,0,1.5]);
输出:

例2:用sinc(x)命令绘制取样函数
N=1000;
t=-10:20/N:10;
x=sinc(t/pi);
plot(t,x);
grid on
输出:

对比维基百科上的图片,结果是一样的。

使用 randn 生成高斯分布的白噪声
t=0:0.01:1;
y=randn(1,length(t));
plot(t,y);grid on;
输出:

使用rand:
t=0:0.01:1;
y=rand(1,length(t));
plot(t,y);grid on;
输出:

离散信号
• 周期序列
例:产生一个幅度为2,频率为4Hz,相位为π/6的正弦信号
t=0:0.01:1;
w0=2*pi*4;%频率为4Hz
x=2*sin(w0*t+pi/6);%幅度为2 相位为pi/6
stem(t,x);
grid on
输出:

非周期信号
例如可以生成单位脉冲信号δ(n)以及延迟3个采样点的单位阶跃信号u(n−3)
注释 可以使用ones(1,n)和zeros(1,n)命令分别生成长度为n的一维全1数组与全0数组 这里ones(1,n)命令创建一个包含n个元素的一行矩阵每个元素值为1 而zeros(1,n)命令创建一个包含n个元素的一行矩阵每个元素值为0
n=-2:30;
x=[zeros(1,5),1,zeros(1,27)];
y=[zeros(1,5),ones(1,28)];
subplot(2,1,1);
stem(n,x,'fill');grid on;
subplot(2,1,2)
stem(n,y,'fill');grid on;
输出:

离散卷积
这两个有限长序列的卷积结果进行计算:给定两个序列a=[-2, 0, 1, -1, 3]和b=[1, 2, 0, -1];其中所有序列均以索引从零开始进行处理。
a=[-2 0 1 -1 3];
b=[1 2 0 -1];
c=conv(a,b);
subplot(3,1,1);%a
na=0:1:length(a)-1;
stem(na,a,'fill');grid on;
xlabel('a');
subplot(3,1,2);%b
nb=0:1:length(b)-1;
stem(nb,b,'fill');grid on;
xlabel('b');
subplot(3,1,3);%c
nc=0:1:length(c)-1;
stem(nc,c,'fill');grid on;
xlabel('c');
输出:

LTI系统
预备知识:

求系统单位冲激响应h[n],以及h[n]的幅频相频响应图
N=64;
x=[1 zeros(1,N-1)]; %产生单位冲激函数
num=[0.008 -0.033 0.05 -0.033 0.008];
den=[1 2.37 2.7 1.6 0.41];
y=filter(num,den,x); %计算单位冲激响应
figure(1);
n=1:N;
stem(n,y,'fill');grid on; title('单位冲激响应');
figure(2)
Fs=1024;
freqz(num,den,N,Fs);grid on; %做出幅频和相频响应曲线
输出:

测验题

