数字信号处理上机指导1dl.docx

上传人:b****6 文档编号:5991713 上传时间:2023-01-02 格式:DOCX 页数:59 大小:376.82KB
下载 相关 举报
数字信号处理上机指导1dl.docx_第1页
第1页 / 共59页
数字信号处理上机指导1dl.docx_第2页
第2页 / 共59页
数字信号处理上机指导1dl.docx_第3页
第3页 / 共59页
数字信号处理上机指导1dl.docx_第4页
第4页 / 共59页
数字信号处理上机指导1dl.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

数字信号处理上机指导1dl.docx

《数字信号处理上机指导1dl.docx》由会员分享,可在线阅读,更多相关《数字信号处理上机指导1dl.docx(59页珍藏版)》请在冰豆网上搜索。

数字信号处理上机指导1dl.docx

数字信号处理上机指导1dl

 

数字信号处理

计算机实验指导书

陈刚董立刘玮

 

沈阳理工大学装备工程学院

二〇〇七年十月

 

目录

前言……………………………………………………………………………………..2

第1章MATLAB基础知识……………………………………………………………2

第2章MATLAB基本数值运算……………………………………………………….4

第3章MATLAB图形处理功能……………………………………………………….6

第4章MATLAB程序设计…………………………………………………………….8

第5章常用数字信号处理函数………………………………………………………12

第6章MATLAB在数字信号处理中的应用………………………………………...16

实验一序列线性卷积、圆周卷积的计算及其关系………………………………….22

实验二利用DFT分析信号频谱……………………………………………………….24

实验三信号时间尺度变换……………………………………………………………25

实验四IIR滤波器的实现与应用……………………………………………………..28

实验五FIR滤波器的实现与应用……………………………………………………..32

I

前言

数字信号处理是研究数字序列信号的表示方法,并对信号进行运算,以提取包含在其中的特殊信息。

近年来,由于在研究及应用两方面均取得了进展,数字信号处理技术已经日趋成熟。

本课程以计算机为工具,MATLAB软件为实验平台,通过一些基础实验项目,验证所理论教学中的概念和算法。

由于MATLAB软件功能十分强大,且容易掌握,在工程技术中尤其是信号处理领域得到了广泛的应用,因此,以MATLAB作为数字信号处理实验课的计算机语言工具。

希望学生通过本教材的学习及上机实践,能基本掌握MATLAB程序设计知识,能利用MATLAB进行简单的数字信号处理分析,利用其提供的工具箱能进行滤波器的设计,为理论知识的实用化而奠定基础。

第1章MATLAB基础知识

§1-1MATLAB软件简介

MATLAB,MatrixLaboratory的缩写,是由Mathworks公司开发的一套用于科学工程计算的可视化非常好高性能语言,具有强大的矩阵运算能力。

它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个界面友好的用户环境,在这个环境中,问题与求解都能方便地以数学的语言(主要是矩阵形式)或图形方式表示出来。

与大家常用的Fortran和C等高级语言相比,MATLAB的语法规则更简单,更贴近人的思维方式,被称为“草稿纸式的语言”。

§1-2MATLAB应用入门

1.MATLAB的安装与卸载

MATLAB软件在用户接口时具有较强的亲和力,其安装过程比较典型,直接运行光盘中的安装向导支撑程序setup.exe,按其提示逐步选择即可。

MATLAB自身带有卸载程序,在其安装目录下有uninstall子目录,运行该目录下uninstall.exe的即可完成程序的卸载;也可以通过Windows系统的安装卸载程序进行卸载。

2.MATLAB的启动与退出

图1.1MATLAB默认设置下的桌面平台界面

MATLAB安装完成后,会自动在Windows桌面上生成一个MATLAB图标,它是指向安装目录下\bin\win32\matlab.exe的链接,双击这个图标即可来到MATLAB集成环境的基本窗口;也可以在开始菜单的程序选项中选择MATLAB快捷方式;还可以在MATLAB的安装路径的bin子目录中双击可执行文件matlab.exe。

MATLAB的退出与普通WIN32的程序一样,值得一提的是它有一个自身专有的快捷键Ctrl+Q。

初次启动MATLAB后,将进入MATLAB默认设置下的桌面平台,如图1-1所示。

3.MATLAB的桌面平台

默认设置下的桌面平台包括6个窗口,分别是MATLAB主窗口、命令窗口(CommandWindow)、历史窗口(CommandHistory)、当前目录窗口(CurrentDirectory)、发行说明书窗口(LaunchPad)和工作间管理窗口(Workspace)。

3.1MATLAB主窗口

图1.2工具栏各按钮控件及说明

MATLAB的其它几个窗口都包含在这个大的主窗口中,主窗口不能进行任何计算任务的操作,只用来进行一些整体的环境参数的设置。

主要包括菜单栏(File、Edit、View、Web、Window和Help共6个下拉菜单)、工具栏(10个按钮控件)等。

工具栏各按钮控件及说明如图1.2所示:

3.2命令窗口(CommandWindow)

MATLAB的命令窗口如图1-2所示。

其中“

”为运算提示符,表示MATLAB正处在准备状态。

当在提示符后输入一段运算式或命令并按Enter键后,MATLAB将给出计算结果,然后再进入准备状态。

3.3MATLAB常用命令

图1.3MATLAB的命令窗口

MATLAB有一些嵌入函数,有时应用这些函数可以起到事半功倍的效果。

MATLAB常用的控制命令见表1-1。

表1-1MATLAB常用命令

命令

功能

cd

显示或改变当前工作目录,与工具栏中

dir

列出当前目录或指定目录下的文件和子目录清单,类似于DOS命令DIR

clc、home

清除命令窗口中的所有显示内容,并把光标移到该窗口的左上角

clf

清除MATLAB当前图形窗口中的图形

clear

清除内存中的变量和函数

disp

显示变量的内容

type

列出指定文件的全部内容,类似于DOS命令TYPE

exit、quit

退出MATLAB

who

列出当前工作空间中的变量

whos

列出当前工作空间中的变量的更多信息

what

列出当前目录或指定目录下的.M文件、..MAT文件和..MEX文件

which

显示指定函数或文件的路径

lookfor

按照指定的关键字查找所有相关的.M文件

第2章MATLAB基本数值运算

§2-1MATLAB内部特殊变量和常数

MATLAB内部有很多变量和常数,用以表达特殊含义。

常用的有:

⑴变量ans:

指当前未定义变量名的答案。

⑵常数eps:

表示浮点相对精度,其值是从1.0到下一个最大浮点数之间的差值。

该变量值作为一些MATLAB函数计算的相对于浮点数的精度,按IEEE标准,eps=2-52,近似为2.2204e-016。

⑶常数inf:

表示无穷大,当输入或计算中有除以0时产生inf。

⑷虚数单位i、j:

表示复数虚部单位,相当于

⑸NaN:

表示不定型值,是由0/0运算产生的。

⑹常数pi:

表示圆周率π,其值为3.1415926535897…。

§2-2变量类型

1.变量命名规则

MATLAB中对变量的命名应遵循以下规则:

1)变量名可以由字母、数字和下划线混合组成,但必须以字母开头。

2)字符长度不能大于31。

3)变量命名区分大小写。

2.局部变量和全局变量

局部变量是指那些每个函数体内自己定义的,不能从其它函数和MATLAB工作空间访问的变量。

全局变量是指用关键字“global”声明的变量。

全局变量名应尽量大写,并能反映它本身的含义。

如果需要在工作空间和几个函数中都能访问一个全局变量,必须在工作空间和这几个函数中都声明该变量是全局的。

§2-3向量及其运算

向量运算是矢量运算的基础,向量也是组成矩阵的基本元素之一。

1.向量的生成

1)直接输入向量

生成向量最直接的方法就是在命令窗口中直接输入。

格式上的要求是,向量元素需要用“[]”括起来,元素之间可以用空格、逗号或分号分隔;需要注意的是,用空格和逗号分隔生成行向量,用分号分隔生成列向量。

例A=[1,2,3]或A=[123]%生成行向量

A=[1;2;3]%生成列向量

2)利用冒号表达式生成向量

冒号表达式的基本形式为x=x0:

step:

xn,其中x0、step、xn分别为给定数值,x0表示向量的首元素数值,xn表示向量尾元素数值限(只有当xn-x0恰为step值的整数倍时,xn才能成为尾数),step表示从第二个元素开始,元素数值大小与前一个元素数值大小的差值。

例在命令窗口,给向量a、b、c赋值。

>>a=1:

2:

12

a=

1357911

>>b=12:

-2:

1

b=

12108642

>>c=1:

2:

13

c=

135791113

3)特殊向量的生成

对于特殊的向量可直接调用MATLAB的函数生成。

如y=linsoace(x1,x2,n)用于生成线性等分的n维行向量,使得y

(1)=x1,y(n)=x2。

另外,向量还可以从矩阵中提取,还可以把向量看成是1×n阶(行向量)或n×1阶(列向量)的矩阵,以矩阵形式生成。

2.向量的基本运算

1)加(减)与数乘计算

例>>a=[1,2,3,4];b=[0,1,2,3];c=a-b

c=

1111

>>d=a-3

d=

-2-101

>>4*a

ans=

481216

2)对位乘、点积计算

同维向量a与b的对位乘用c=a.*b实现,即c的每一个元素之值是a与b对应元素的乘积。

同维向量a与b的点积,一个方法是利用函数dot来实现;另一种方法是先生成a与b的对位乘向量c,再取c的各元素和即为a与b的点积。

例>>a.*b

ans=

02612

>>dot(a,b)%或sum(a.*b)

ans=

20

§2-4矩阵及其运算

MATLAB具有强大的矩阵运算和数据处理功能,对矩阵的处理必须遵从代数规则。

1.矩阵的生成

1)一般矩阵的生成

对于一般矩阵,MATLAB的生成方法有很多种。

最简单的方法是从键盘直接输入矩阵元素。

直接输入矩阵元素时应注意:

各行的元素之间用空格或逗号隔开,行与行之间用分号或回车隔开,用中括号把矩阵所有的元素括起来。

例在工作空间产生一个3×3矩阵A可用MATLAB语言描述如下:

A=[1,2,3;4,5,6;7,8,9]

或A=[123

456

789]

运行结果为

A=

123

456

789

2)特殊矩阵的生成

对于特殊的矩阵可直接调用MATLAB的函数生成

用函数zeros生成全0矩阵:

格式为B=zeros(m,n)生成m×n的全0阵。

用函数ones生成全1矩阵:

格式为B=ones(m,n)生成m×n的全1阵。

用函数eye生成单位阵:

格式为B=eye(m,n)生成m×n矩阵,其中对角线元素全为1,其它元素为0。

2.矩阵的运算

矩阵的运算有基本运算和函数运算两种类型。

基本运算包括矩阵的加、减、乘、除、幂、转置、逆等,其主要特点是通过MATLAB提供的基本运算符+、-、*、/、^等即可完成。

函数运算主要是通过调用MATLAB系统内置的运算函数来求解矩阵,求秩,求特征值和特征相量,等等。

需要时可以参阅联机帮助和相关参考书。

例矩阵的基本运算

>>a=[1,2,3;4,5,6];

>>b=[6,5,4;3,2,1];

>>c=a+b%计算两个矩阵的和

c=

777

777

>>d=b′%计算矩阵b的转置

d=

63

52

41

>>e=a*d%做矩阵的乘法,必须满足矩阵乘法的基本要求

e=

2810

7328

>>f=det(e)%求矩阵e的行列式

f=

54

>>g=e^(-1)%求矩阵e的逆

g=

0.5185-0.1852

-1.35190.5185

第3章MATLAB图形处理功能

从最原始版本的MATLAB开始,图形功能就已经成为基本功能之一。

随着MATLAB版本的逐步升级,MATLAB的图形工具箱从简单的点、线、面处理发展到了集二维图形、三维图形甚至四维表现图和对图形进行着色、消隐、光照处理、渲染及多视角处理等多项功能于一身的强大功能包。

这里只简单讨论二维基本绘图命令及图形修饰命令。

常用的绘图语句有figure、plot、subplot、stem等,图形修饰语句有title、axis、text等。

1.figure命令

figure有两种用法,只用一句figure命令,会创建一个新的图形窗口,并返回一个整数型的窗口编号。

figure(n)表示将第n号图形窗口作为当前的图形窗口,并将其显示在所有窗口的最前面;如果该图形窗口不存在,则新建一个窗口,并赋以编号n。

2.plot命令

线性绘图函数。

用法为plot(x,y,’s’)。

参数x为横轴变量,y为纵轴变量,s用以控制图形的基本特征如颜色、粗细等的图形设置选项,通常可以省略。

MATLAB语言中提供的图形控制符如表3-1所示。

表3-1MATLAB语言中的图形设置选项

参数

含义

参数

含义

参数

含义

y

黄色

·

实线

m

紫色

O

虚线

c

青色

×

打叉

-·

点划线

g

绿色

+

加号

--

破折线

b

蓝色

*

星号

^

向上的三角形

w

白色

s

正方形

<

向左的三角形

k

黑色

d

菱形

>

向右的三角形

r

红色

v

向下的三角形

p

五角星形

3.stem命令

绘制离散序列图,常用格式为stem(x)和stem(x,y)分别和相应的plot函数的绘图规则相同,只是用stem命令绘制的是离散序列图。

4.subplot命令

subplot(m,n,i)图形显示时分割窗口命令,把一个图形窗口分为m行,n列,m×n个小窗口,并指定第i个小窗口为当前窗口。

5.坐标轴标注

MATLAB中提供了许多关于坐标轴标注的函数,常用的函数有title、xlabel、ylabel等。

其中,函数title是为图形添加标题,并将标题置于图形的顶部;而xlabel、ylabel是为x、y坐标轴添加标注,并分别将标注置于相应的坐标轴的边上。

这三个函数的调用格式是大同小异的,这里仅以title为例介绍它们的调用格式。

title(‘标记’)

其中,标记可以文字,也可以是数学表达式。

6.文本标注

MATLAB语言对图形进行文本注释所提供的为text。

它的调用格式为

text(x,y,‘文本’)

其中,(x,y)给定标注文本在图中添加的位置。

7.图例标注

在数值计算结果的绘图中,经常会出现在同一张图形中绘制多条曲线的情况,为了能更好地区分各条曲线,MATLAB语言提供了图例标注函数legend。

它能为图形中所有的曲线进行自动标注,以其输入变量作为标注文本,具体的调用格式为:

legend(‘标注1’,‘标注2’,…)

这里的标注1、标注2等分别对应绘图过程中按先后顺序所生成的曲线。

8.坐标轴的控制函数axis

函数axis用来控制坐标轴的刻度范围及显示形式。

其最简单的调用格式为

axis([xmin,xmax,ymin,ymax])

即绘图时变量x∈[xmin,xmax],变量y∈[ymin,ymax]。

例绘制信号图形。

%fun0.m定义文件名

x=0:

0.1*pi:

2*pi;%定义x向量

figure

(1);%创建一个新的图形窗口,编号为1

subplot(2,2,1);%将窗口划分为2行,2列,在第一个窗口中作图

plot(x,sin(x));%画图

title('正弦线');%給图形加标题

subplot(2,2,2);%在第二个窗口中作图

plot(x,sin(x),'r');%画一正弦波红色

xlabel('X');%给x轴加说明

ylabel('SIN(X)');%给y轴加说明

subplot(2,2,3);%在第三个窗口中作图

plot(x,sin(x),'--',x,cos(x),'-.m*');%用破折线画一正弦波

%用紫色点划.星线画一余弦波

legend('SIN(X)','COS(X)');%给图形加图例标注

subplot(2,2,4);%在第四个窗口中作图

plot(x,sin(x),'r+--');%用红色破折线画一正弦波

text(4,0,'注记');

以上内容以文件名fun0.m存盘,在MATLAB命令窗口中执行

>>fun0↙

或将以上内容直接在MATLAB命令窗口中键入并↙,得到结果如下:

Fig.1

第4章MATLAB程序设计

MATLAB作为一种高级计算语言,它不仅可以如前面所介绍的那样,以人机交互命令行的方式工作,还可以像BASIC、FORTRAN、C等其它高级计算机语言一样进行控制流的程序设计,即编制一种以.m为扩展名的文件,简称为M文件。

而且,M文件的编写具有语法简单、可读性强、调试容易、调用方便等许多优点。

§4-1M文件介绍

1.M文件的特点与形式

MATLAB实质上是一种解释性语言,就MATLAB本身说,它并不能做任何事情,它就像DOS操作系统一样,本身没有实现功能而只对用户发出的指令起解释执行的作用,即命令先送到MATLAB系统内解释,再运行得到结果。

因此用户可以把所要实现的指令罗列编制成文件,再统一送入MATLAB系统中解释运行,这就是以.m为扩展名的M文件。

用户可以使用任何字处理软件对其进行编写或修改。

正是M文件的这个特点造就了MATLAB强大的可开发性和可扩展性,Mathworks公司推出的一系列工具箱就是证明。

由于商用的MATLAB软件用C语言编写而成,因此,M文件的语法与C语言的十分相似。

对广大的C语言爱好者来说,M文件的编写是相当容易的。

M文件有两种形式,即命令式和函数式。

并且要注意:

·文件扩展名一定为.m。

·标点符号的运用要恰到好处,建立好的书写风格,保持程序的可读性。

·以符号%引导的行为注释行,不可执行,可供help命令查询;

·不需要用end语句作为M文件的结束标志;

·在运行此文件之前,需要把它所在目录加到MATLAB的搜索路径上去,或将文件所在目录设为当前目录。

2.命令式文件

命令式文件就是命令行的简单叠加,MATLAB会自动按顺序执行文件中的命令,其运行相当于在命令窗口中逐行输入并运行命令,因此,用户在编制此类文件时,只需把所要执行的命令按行编辑到指定的文件中,且变量不需预先定义,也不存在文件名对应问题,也可以访问存在于整个工作空间内的数据。

但要注意:

命令式文件在运行中所产生的所有变量均为全局变量。

也就是说,这些变量一旦生成,就一直保存在内存中,直到用户执行clear或quit命令为止。

例打开Medit窗口,编写如下程序

x=[1,3,4,7];

y=sum(x)/length(x);

以aver.m为文件名存盘。

在命令窗口键入aver并回车即可运行该程序。

3.函数式文件

为了实现计算中的参数传递,需要用到函数式文件。

函数式文件在MALTAB中应用十分广泛,MALTAB所提供的绝大多数功能函数都是由函数式文件实现的,这足以说明函数式文件的重要性。

函数式文件的结构为:

function输出参数=函数名(输入参数)

函数体%注释

例编制一个求几个数平均值的函数。

打开Medit窗口,编写如下程序

functiony=lianxi(x)

n=length(x);%确定向量x的维数

ifn==1

y=x;

end

ifn>=2

y=sum(x)/n;

end

编写完毕后,以lianxi.m存盘。

函数式文件的标志是第一行必为function语句。

函数式文件可以有返回值如上例中的y,也可以只执行操作而无返回值,大多数函数式文件有返回值。

函数体是函数的主体部分,它包括进行运算和赋值的所有MALTAB程序代码。

函数体中可以包括流程控制、输入、输出、计算、赋值、注释以及函数调用和命令文件调用等。

在函数体中完成对输出参数的计算。

函数式文件执行后,只保留最后结果,不保留任何中间过程,所定义的变量也仅在函数内部起作用,并随调用的结果而被清除。

函数的调用过程实际上就是参数的传递过程。

例调用函数lianxi.m计算20,50,90,100,40的平均值。

在命令窗口键入如下命令并回车即可。

x=[20,50,90,100,40];

y=lianxi(x);

该调用过程把变量x传递给了输入参数,然后把函数运算的返回值传给了输出参数y。

在编写函数式文件时,要特别注意:

·只有文件名与函数名一一对应,才能保证调用成功。

·function后的语句定义函数名和输入、输出参数,在函数被调用过程中将按此输入、输出格式执行。

·要养成良好的注释习惯,以方便自己或其它用户的调用。

§4-2程序控制语句

MALTAB的程序控制语句有循环语句、条件转移语句两种类型。

1.循环语句

MALTAB的循环语句包括for循环和while循环两种类型。

(1)for循环

语法格式:

for循环变量=初始值:

步长:

终止值

循环体

end

初始值和终止值为一整型数,步长可以为整数或小数,省略步长时,默认步长为1。

执行for循环时,判定循环变量的值是否大于(步长为负时则判定是否小于)终止值,不大于(步长为负时则不小于)则执行循环体,执行完毕后,再加上步长,这时循环变量的值若大于(步长为负时则小于)终止值后退出循环,否则继续。

for循环最大的特点是,在一般情况下,此循环语句的循环次数是预先设定好的。

例给矩阵a赋值。

functiona=chuzhi

k=5;

a=zeros(k,k);

form=1:

k

forn=1:

k

a(m,n)=1/(m+n-1);

end

end

以chuzhi.m存盘。

然后在MALTAB命令窗口中执行以下命令

>>a=chuzhi

得到结果为:

a=

1.00000.50000.33330.25000.2000

0.50000.33330.25000.20000.1667

0.33330.25000.20000.16670.1429

0.25000.20000.16670.14290.1250

0.20000.16670.14290.12500.1111

说明:

·for语句一定要有end作为结束标志,否则下面的输入都被认为是for循环之内的内容。

·循环语句中的分号‘;’可防止中间结果的输出。

(2)while循环

语法格式:

while表达式

循环体

end

其执行方式为:

若表达式为真(运算值非0),则执行循环体;若表达式为假(运算结果为0),则退出循环体,执行end后的语句。

while循环的特点是循环次数无法预先确定,因此在使用中要谨慎,以防止陷入死循环。

例>>a=3;b=0;

whilea

a=a-1;

b=b+a;

end

>>b

b=

3

>>a

a=

0

同for循环比起来,while语句的判断控制可以是一个逻辑判断语句,因此它的适用范围会更

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1