DSP

【MOOC】数字信号处理-电子科技大学-第一周-数字信号处理的概述

2019-07-13 12:40发布

数字信号处理的特点及应用介绍

About this course

Textbook: Digital Signal Processing–A Computer-Based Approach(fourth edition) sanjit K. Mitra 2012.08
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电路( 采样保持电路,其通常加在ADC电路前,作用是以保证A/D转换时的精度)进行2微妙的采样处理后再经过A/D(模拟转数字电路)电路后信号被数值化(可以理解为变成了阶梯型的信号),输出信号x[n]为:
这里写图片描述
将信号进行编码(具体方式可以不用在意太多,知道有这么个方式就好了)后,可得:
这里写图片描述
以二进制表示的话,则为:
这里写图片描述
通过DSP处理芯片,输出信号的编码为:
这里写图片描述
也为:
这里写图片描述
故输出信号图形y[n]为:
这里写图片描述
再通过D/A(数字转模拟电路)电路和LPF(低通滤波器)后得到的模拟信号为:
这里写图片描述 以上便是将一个模拟信号转换成另外一个模拟信号的过程,转换方式使用了DSP。那么为什么要选择DSP,而不是ASP呢?

Why DSP

Advantage to ASP: 1.more reliable less sensitive to tolerances such as temperature, noise, etc.; 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 3)Stability: No variation with environmental factor throughout guaranteed operation range.

DSP Applications

这里写图片描述

MATLAB的基础概念及其在DSP中的应用

一、Matlab 简介

Matlab名字是由Matrix和Laboratory两个词的前三个字母组合而成的,是由MathWorks公司于1982年推出的一套高性能的数值计算和可视化数学软件。
• Matlab编程运算与人进行科学计算的思路和表达方式完全一致。不像学习其它高级语言如Basic、Fortran和C等那样难于掌握。
• 其基本元素是矩阵 。
• 具有强大的数值计算和图示能力。
• 具有丰富的工具箱(ToolBox)。
• 在高校中,Matlab已成为数学,信息,控制等诸多学科有关课程的有效教学工具

二、Matlab 的安装与启动

pass

三、Matlab 编程基础

1 变量

• 变量无需定义即可使用。
• 变量名的大小写是敏感的。
• 变量的第一个字符必须为英文字母,而且不超过31个字符。
• 变量名可以包含下连字符、数字,但不能为空格符、标点 。

2 数组,向量与矩阵的创建和访问

• 在Matlab中,这三个概念在创建和显示的时候没有任何区别。
向量的创建
要创建一个向量,在命令窗口下输入:
t=0:1:10
屏幕显示:
t =
0 1 2 3 4 5 6 7 8 9 10
注:
1.向量的第一个元素的下标是1,而不是0。
2.T=0:1:10产生了0~10步长为1的共11个数,保存在t(1),t(2),┉t(11)中。 • 矩阵的创建
例如:创建一个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 部分特殊变量和常数

• ans 最近生成的无名结果
• eps 浮点数的相对误差
• pi 圆周率(3.1415926)
• i 虚数单位
• j 虚数单位
• inf 无穷大,如n/0

4 部分常用运算符

算术运算符
• + 加
• - 减
• * 乘(包括标量乘,矩阵乘,标量与矩阵乘)
• / 除(包括标量除,矩阵除标量,数组除标量)
• ^ 矩阵求幂(矩阵必须为方阵)
• .* 数组相乘
• ./ 数组相除
• .^ 数组求幂
注意:.* ./ 表示两个同维数组中的对应元素做乘,除;. ^ 表示对数组的每个元素求幂
关系运算符
• < 小于
• <= 小于等于
• > 大于
• >= 大于等于
• == 等于
• ~= 不等于
运算法则:若关系式成立,结果为1;若关系式不成立,结果为0。
其他常见符号
• = 变量赋值
• % 注释符
• ‘ 共轭转置符
• : 冒号运算符
• n:s:m 产生n~m,步长为s的序列,s可以为
正或负或者小数,默认值为1。
逻辑运算符
• & 与
• | 或
• ~ 非
运算法则: 若逻辑真,结果为1;若逻辑假,结果为0。

5 Matlab的程序设计

• 工作方式
1.交互式的指令操作方式。即用户在命令窗口中输入命令并按下回车键后,系统执行该指令并立即给出运算结果。 2.m文件的编程方式。m文件是由 matlab语句构成的文件,且文件名必须以.m为扩展名,如example.m。用户可以用任何文件编辑器来对M文件进行编辑。
• 顺序结构
Matlab 从上到下依次执行各语句,该结构最简单。
• 循环结构
(1)for-end 循环
用于循环次数事先确定的,格式为
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 基本数学函数和基本绘图函数

基本数学函数
sin(x) cos(x) tan(x) cot(x) exp(x)
log(x) :自然对数
log10(x): 以10为底的对数
log2(x):以2为底的对数
abs(x):取模
conj(x):取共轭
real(x):取实部
imag(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命令实现离散序列的绘制。 stem命令的格式有以下几种:
(1)stem(y)
以x=1,2,3……为各点数据的x坐标,以y向量的各个对应元素为y坐标,在(X,Y)坐标面画一个空心小圆圈。
(2)stem(x,y,’filled’)
以x向量的各个元素为x坐标,以y向量的各个对应元素为y坐标,在(X,Y)坐标面画一个实心小圆圈,并连接一条线段到X轴。

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) 输出:
这里写图片描述 • 非周期信号:指数信号,阶跃信号,取样函数Sa(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 输出:
这里写图片描述 对比维基百科上的图片,结果是一样的。 这里写图片描述 例3:使用如下两个函数得到随机信号:rand产生均匀分布的白噪声,randn产生高斯分布的白噪声
使用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]和单位阶跃序列u[n-3]
注:可以用ones(1,n)和zeros(1,n)来生成单位脉冲序列和单位阶跃序列,其中ones(1,n)命令产生1行n列的1值zeros(1,n)命令产生1行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]; 两个序列的都从0开始的。
注:matlab 中卷积运算的指令是c=conv(a,b),其中a和b是有限长的序列 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系统

预备知识:
因果LTI系统的幅频响应和相频响应曲线,在matlab中可以用函数freqz(num,den,n,Fs)
该函数可以同时作出幅频和相频响应图
其中:
num—–系统传递函数分子系数组成的行向量
den——系统传递函数分母系数组成的行向量
n———是频率响应的点数,最好为2的幂缺省值512
Fs——–采样频率
例:已知一个系统的传递函数为
这里写图片描述
求系统单位冲激响应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; %做出幅频和相频响应曲线 输出:
这里写图片描述

测验题

这里写图片描述