数字信号处理实验指导书.docx

上传人:b****4 文档编号:24342628 上传时间:2023-05-26 格式:DOCX 页数:83 大小:1.01MB
下载 相关 举报
数字信号处理实验指导书.docx_第1页
第1页 / 共83页
数字信号处理实验指导书.docx_第2页
第2页 / 共83页
数字信号处理实验指导书.docx_第3页
第3页 / 共83页
数字信号处理实验指导书.docx_第4页
第4页 / 共83页
数字信号处理实验指导书.docx_第5页
第5页 / 共83页
点击查看更多>>
下载资源
资源描述

数字信号处理实验指导书.docx

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

数字信号处理实验指导书.docx

数字信号处理实验指导书

 

《数字信号处理》

实验指导书

 

刘方铭姚震韩国君

 

广东工业大学信息工程学院

二00六年十一月印刷

目录

《数字信号处理》1

实验指导书1

目录1

实验一学习使用MATLAB3

一.实验目的3

二.实验内容和要求3

三.实验主要仪器设备和材料3

四.实验方法、步骤及结果测试3

五.实验报告要求27

六.思考题27

实验二用FFT做谱分析28

一.实验目的28

二.实验内容和要求28

三.实验主要仪器设备和材料29

四.实验方法、步骤及结果测试29

五.实验报告要求49

六.思考题49

实验三用双线性变换法设计IIR数字滤波器50

一.实验目的50

二.实验内容和要求50

三.实验主要仪器设备和材料50

四.实验方法、步骤及结果测试50

五.实验报告要求55

六.思考题55

实验四用窗函数法设计FIR数字滤波器57

一.实验目的57

二.实验内容和要求57

三.实验主要仪器设备和材料58

四.实验方法、步骤及结果测试58

五.实验报告要求68

六.思考题68

附录一MATLAB信号处理工具箱函数69

一.表附1-1波形产生69

二.表附1-2滤波器分析和实现69

三.表附1-3线性系统变换70

四.表附1-4IIR滤波器设计71

五.表附1-5IIR滤波器阶的选择71

六.表附1-6FIR滤波器设计72

七.表附1-7变换72

八.表附1-8统计信号处理73

九.表附1-9窗函数73

十.表附1-10参数化建模74

十一.表附1-11特殊操作74

十二.表附1-12模拟原形滤波器设计75

十三.表附1-13频率变换75

十四.表附1-14滤波器离散化75

十五.表附1-15其他76

附录二实验中用到的一些子程序77

实验一学习使用MATLAB

实验项目名称:

学习使用MATLAB

实验项目性质:

验证性实验

所属课程名称:

数字信号处理

实验计划学时:

2

一.实验目的

(1)学习使用MATLAB,为以后的数字信号处理实验操作顺利进行打下基础。

二.实验内容和要求

(1)了解MATLAB的基本程序设计原则,常量和变量的用法

(2)掌握MATLAB中对矩阵进行输入、运算和比较的方法

(3)了解循环语句的类型,并掌握循环语句的用法

(4)熟悉M文件的作用,并掌握二维图形的绘制

三.实验主要仪器设备和材料

计算机,MATLAB6.5或以上版本

四.实验方法、步骤及结果测试

关于MATLAB

它是由美国的MathWorks公司推出的一个科技应用软件,它的名字是由MATRIX(矩阵)和LABORATORY(实验室)的前三个字母组合而成

MATLAB是一种高性能的、用于工程计算的编程软件,它把科学计算、结果的可视化和编程都集中在一个使用方便的环境中

优势在于能很容易求解复数数值问题,速度快且容易扩展创建新的命令和函数

主要组成部分:

(1)编程语言:

以矩阵和数组为基本单位的编程语言

(2)工作环境:

包括一系列的应用工具,提供编程和调试程序的环境

(3)图形处理:

包括绘制二维、三维图形和创建图形用户界面(GUI)等

(4)数学库函数:

包含大量数学函数,也包括复杂功能

(5)应用程序接口:

提供接口程序,可使MATLAB与其他语言程序进行交互

典型特点:

(1)语言简洁紧凑,运算符十分丰富,使用方便灵活

(2)既具有结构化的控制语言,又能面向对象编程

(3)语法限制不严格,程序设计自由度大,可移植性好

(4)具有强大的图形功能

(5)包含功能强劲的工具箱

(6)最重要、最受欢迎的特点是它的开放性

(7)典型应用有两方面:

数值计算和符号计算

建模和动态仿真

下面介绍MATLAB的界面、常用命令和使用方法

图1-1MATLAB窗口

菜单栏和工具栏:

位于窗口顶部,用户可以通过它们来执行某些命令

命令窗口:

位于右边空白部分,用户的数据输入和结果运算,都在此窗口进行,是Matlab极为重要的部分,也是用户使用最频繁的部分

工作台和工具箱:

位于主窗口左上部分,双击工具箱或前面的”+”号,就能看到工具箱的各项功能

工作空间:

主窗口的中上部分,可看到Matlab的各个工作变量,新打开Matlab时,只能看到系统提供的默认输出变量ans

历史命令:

主窗口的左下部分,主要保存工作过的变量、表达式等,需要时,用户可以直接提取历史命令在命令窗口中使用

当前工作目录:

主窗口的中下部分,主要保存在当前工作路径下的图形文件和命令文件

一、MATLAB的基本程序设计原则

(1)设置完整的路径,把当前的处理位置设为现在的目录

(2)参数值集中放在程序的开始部分,便于程序维护

(3)若在每行程序的最后输入分号,则执行后结果不会显示在屏幕上;

(4)符号“%”后面的内容、是程序的注解,不作为命令运行

(5)程序尽量模块化,也就是采用主程序调用子程序的方法,将所用子程序和并在一起来执行全部的操作

(6)注意变量的定义

(7)留意各种命令的书写格式

程序的基本组成

%说明部分

清除命令(可选)

定义变量(局部变量和全局变量)

按照顺序行执行的命令语句

控制语句开始

控制语句体

控制语句结束

其他命令(如绘图等)

二、常量和变量

MATLAB中使用的数据有常量和变量

作用标量的实数常量,类似于C语言中的整形常量和实形常量,

常量的表示方法:

十进制数字,可以带正负号和小数点,也可采用科学计数法

如:

1,2.5,0.0033,2e-7,pi,2+3i等

变量以其名称在操作语句中第一次合法出现而定义,无需事先定义。

如果变量已经存在,那么matlab将改变它的内容。

变量命名原则:

(1)变量名必须以字母开头,后面可以是任意的字母、数字或下划线

(2)变量名有效的最大长度是31

(3)变量要区分大小写

特殊的常量和变量

(1)ans缺省变量名,以操作中最近应答作为它的值

(2)pi圆周率

(3)i或j虚数单位

(4)INF正无穷大

(5)nan不定值(或称非数)

(6)versionMATLAB的版本

三、程序的运算符

1、算术运算符:

优先级最高

加法:

+减法:

−乘法:

*

除法:

/ 左除:

\乘方:

^

执行时的优先法则按照以下规则:

(1)表达式从左到右执行

(2)乘方运算具有最高的优先级

(3)乘法和除法运算具有相同的次优先级,加法和减法具有相同的最低优先级

(4)括号可以改变优先次序,由最内层的括号向外执行

例1.1:

 

>>A=[123;456;789];

>>b=10;

>>A+b

ans=

111213

141516

171819

>>B=ones(3);%输入一个3*3阶的全为1的矩阵

>>A-B

ans=

012

345

678

>>S=A*B%矩阵的乘法

S=

666

151515

242424

>>r=3;

>>U=A^r%矩阵的乘方

U=

468576684

106213051548

165620342412

>>X=[23;13];

>>Y=[14;79];

>>Z=[25;68];

>>W=2*X+Y^3-Z%按顺序执行

W=

311477

8291259

>>W=(2*X+Y)^3-Z%先计算括号,再计算乘方,最后减去Z

W=

23734145

37296517

>>W=2*(X+Y)^3-Z%先计算括号,再计算乘方,然后乘以2,最后减去Z

W=

20683425

39146472

关系运算符:

对程序的流程控制非常有用,共6个

小于<大于>小于等于<=

大于等于>=等于==不等于≠(~=)

注:

所有关系运算符连接的两个操作数必须或者同维、同大小,或者其中一个为标量。

有一个操作数是标量时,关系运算符把标量和另一个操作数的每个元素进行比较。

对大小相同的两个矩阵,进行关系运算时,是对相应的每一个元素进行比较,如果满足指定关系,则返回1,否则返回0。

例1.2:

>>A=[12;34]%输入一个矩阵

A=

12

34

>>B=[1,0;3,5]%输入一个矩阵

B=

10

35

>>A

ans=

00

01

>>A>2%比较矩阵中的每个元素与2的大小关系

ans=

00

11

>>C=[123;321;213];

>>D=[223;333;111];

>>C==D%比较两个矩阵中的每个元素是否相等,相同为1,不同为0

ans=

011

100

010

>>C~=D%比较两个矩阵中的每个元素是否相等,不同为1,相同为0

ans=

100

011

101

>>C>=D

ans=

011

100

111

>>C<=D

ans=

111

111

010

逻辑运算符:

共4个

与&或|

非~逻辑异或XOR

注:

对操作数的要求和关系运算符一样,逻辑运算符也是对操作数的相应元素一一运算,最后返回一个0-1矩阵,表达式的值为真时,返回1,否则返回0

例1.3:

>>A=[10;23];%输入一个矩阵

>>B=[11;22];%输入一个矩阵

>>A&B%与运算

ans=

10

11

>>A|B%或运算

ans=

11

11

>>~A%非运算

ans=

01

00

>>XOR(A,B)%逻辑异或

ans=

01

00

四、程序控制语句:

为编写结构化的程序提供了必不可少的条件,不但可以方便用户编程,还可提高程序的效率和可读性

1、for循环语句:

用来执行循环次数已知的情况

调用格式:

forx=初值:

步长:

终值

循环体

end

其中:

变量x称为循环变量,初值、终值和步长可以是标量,也可以是表达式

当循环语句开始执行时,x的值被赋为和初值相同的内容,每执行一次循环体的内容,x的值就会按照步长的大小来改变,如果步长为正数,每执行一次就增加一个步长,否则减小一个步长,一直到变量的值大于或者小于终值,for语句循环结束,继续执行结束语句下面的命令。

注:

当步长省略不写时,系统默认为1。

for循环语句允许嵌套;每一个“for"关键字必须和一个“end"配对

例1.4:

下面for语句中的循环体将执行100次,计算1到100的和

>>a=0;

>>fori=1:

100

a=a+i;

end

>>a

a=

5050

for循环语句可利用嵌套方式使用,如下例计算1到6的乘法表

>>fori=1:

6

forj=1:

i

A(i,j)=i*j;

end

end

>>A

A=

100000

240000

369000

48121600

5101520250

61218243036

2、while循环语句:

一般用于事先不能确定循环次数的情况时候

调用格式:

while表达式

循环体

end

当表达式的值为真时,执行循环体,当循环体执行完毕后,继续判断表达式的值,如果仍为真,继续执行,如此循环,直到表达式的值为假时终止循环

注:

利用break语句,可在任何时候终止循环(while循环或者for循环)

例1.5:

求10的阶乘

>>s=1;

>>n=1;

>>while(n<=10)

s=s*n;

n=n+1;

end

>>s

s=

3628800

3、条件选择语句if

根据不同逻辑表达式的值来判断程序在执行过程中需要执行那些语句

调用格式:

if逻辑表达式

命令语句体

end

程序在执行过程中,首先判断逻辑表达式的值,若为真,则执行命令语句体中所有语句,否则,跳过命令语句体,执行结束语句之后的语句

if语句可以通过嵌套的方式使用,但不同的if语句之间不能互相交叉

调用格式:

if逻辑表达式1

语句体1

elseif逻辑表达式2

语句体2

elseif逻辑表达式3

语句体3

……

else语句体

end

例1.6:

>>a=100;b=345;

>>ifa<500

c=b/a;

end

>>c

c=

3.4500

例1.7:

>>X=[123;456;789];

>>i=2;j=3;

>>ifi==j

X(i,j)=0;

elseifabs(i-j)==1

X(i,j)=-1;

elseX(i,j)=10;

end

>>X

X=

123

45-1

789

五、M文件

为代替在MATLAB提示符下输入的MATLAB命令语句,可以把这些命令写入一个文本文件,每当用户输入文件名和它的自变量时,命令语句就由MATLAB执行,当文件中最后一个命令被执行后,MATLAB能再从终端读取命令,这样的文件就叫M文件

1、M文件的类型

两类:

命令(Script)文件和函数(function)文件

(1)、命令文件

主要用途:

使命令输入更简单化(没有输入参数也没有输出参数)

当用户需要重复输入许多相同的命令时,可将它们放在一个命令文件中,每次只要输入文件名,即可得到相同的运行结果

实质是将用户在MATLAB命令窗口中输入的一串命令用另外一个名称来代替

(2)、函数文件

主要用途:

扩充MATLAB的应用范围和满足用户不同的实际应用需求

函数文件可接受输入变量也可返回输出变量

函数文件对变量工作的运算是在其本身的工作空间内进行的,它和MATLAB的命令窗口的工作空间是相互独立的

2、M文本编辑器:

利用MATLAB编程语言所写的程序被称作M文件后缀均为".m"

(1)启动编辑器的方法:

(A)直接在MATLAB命令窗口中运行命令编辑

(B)单击MATLAB命令窗口工具栏上的图标

(C)从MATLAB命令窗口种选择菜单"file"→“new"→"M-file"。

(2)打开已有M文件的操作方法

(A)直接在命令窗口运行命令editfilenamefilename是待打开的文件名。

(B)单击MATLAB命令窗工具栏上的图标,从弹出对话框中选取需打开的文件

(C)单击命令窗口中的"file"→"open"子菜单,从弹出对话框中选取需打开的文件

编辑或修改的文件经保存后可单击"debug"项中的"run"进行运行

或者在命令窗中直接输入此M文件的名称,就可观察运行结果

如果有错误,会在命令窗口中给出相应的提示,根据出错提示找到错误进行修改

3、命令文件

最简单的M文件,不含输入变量和输出变量,主要用途是使命令输入更简单,调用时MATLAB自动执行文件中的全部语句,因此在实现分析问题,解决问题和设计复杂命令等方面十分有用

例1.8:

建立一个命令文件,输出500以内的Fibonacci数

打开文本编辑器,输入如下命令行,保存文件名为"fibon",然后再命令窗口中输入命令"fibon",就能立即看到结果

>>fibon

f=

Columns1through12

1123581321345589144

Columns13through14

233377

图1-2M文件

4、函数文件:

可以传递参数,接受输入变量和返回输出变量且对变量的运算是在函数本身的工作空间内进行,和MATLAB命令行窗口的工作空间互相独立。

函数文件的第一行必须包含关键字“function"

函数名的命名规则和变量名的命名规则一样:

必须以字母开头,其余部分可以是字母、数字、下划线

例1.9:

建立一个函数文件,计算序列的平均值

打开编辑器输入如下内容,并保存文件名为"aver.m"

functiona=aver(x)

%AVERAGEmeanvalue

%forvectors,AVERAGEisthemeanvalue

%formatrix,AVERAGEisarowvector

%Non-vectorinputresultsinanerror

[m,n]=size(x);

ifm==1;

m=n;

end

a=sum(x)/m;

然后在命令窗口中输入变量x。

>>x=26:

1000;

>>aver(x)

ans=

513

函数文件的几点说明:

(1)文件的第1行说明了该函数的名称、输入参数、输出参数。

(2)“%”后面的语句用来注释说明,只是为了程序易于理解

(3)文件前面几行由"%"开始的语句构成了M文件的帮助信息

(4)变量m,n及y为局部变量,程序执行完后,变量随之消失

(5)函数体包含所有计算和为输出参数附值的代码

(6)调用函数文件时,传递的参数名称可与函数文件中定义的参数名称不相同

六、二维图形的绘制

一、一般步骤

(1)数据的准备

A、选定要表现的范围

B、产生自变量的采样向量

C、计算相应的函数值向量

(2)选定图形窗及其子图的位置

典型命令:

figure

(1)%指定1号图形窗

subplot(2,2,2)%指定2号子图

(3)调用绘图命令

典型命令:

plot(x,y,'-ro')%用红色实线画曲线,数据点类型为o

(4)设置轴的范围与刻度、坐标分格线

典型命令:

axis([0,inf,-1,1])%设置坐标轴的范围

gridon%画坐标分格线

(5)图形注释

典型命令:

title(‘专家系统’)%图名

xlabel(‘x');ylabel(‘y')%轴名

二、plot函数的调用格式

二维曲线的绘图命令中,函数plot是最基本,最重要的命令

调用格式1:

poly(x,y)绘制二元组x,y的曲线图形

调用格式2:

plot(y)绘制曲线图形

若y是实数向量,则绘制y与其元素下标所构成的二元组的曲线图

若y的元素为复数,则等价于plot(real(y),imag(y))

若y是矩阵,则按列绘制曲线图,曲线条数等于y矩阵的列数

调用格式3:

plot(x1,y1,x2,y2,……)

功能:

以(x1,y1),(x2,y2)……为二元组,绘制多条曲线

例1.10:

绘制y=sin(x),z=cos(x),w=0.25x-0.5的曲线,

>>x=0:

pi/100:

2*pi;

>>y=sin(x)

>>plot(x,y)%绘制y=sinx的图形

图1-3绘制y=sinx的图形

在命令窗口中继续输入以下命令

>>z=cos(x)

>>w=0.25*x-0.5;

>>plot(x,y,x,z,x,w)

图1-4绘制x,y;x,z;x,w的图形

三、基本的绘图控制

1、色彩、线型和数据点标志

函数plot可以接受字符串输入变量,以指定不同线型,数据点标志符号以及每条曲线的颜色

调用格式:

plot(x,y,'s')

其中s由1~3个字母组成,用来制定所绘制曲线的色彩,线型和数据点标志。

表1-1PLOT函数参数说明

符号

代表的线型

符号

表示的颜色

实线(缺省值)

c(cyan)

青色

--

虚线

m(magenta)

品红色

点连线

y(yellow)

黄色

-.

点划线

r(red)

红色

none

不画线

g(green)

绿色

b(blue)

蓝色

w(white)

白色

k(black)

黑色

标记符号

说明

+

加号标记

O

圆圈标记

*

星号标记

.

点标记

X

叉型标记

S

正方形标记(square)

D

菱形标记(Diamond)

^

朝上的三角形符号

V

朝下的三角形符号

>

朝右的三角形符号

<

朝左的三角形符号

P

五角星符号(pentagram)

H

六角星符号(hexagram)

None

无符号标记

2、坐标轴的控制“axis”命令

调用格式1:

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

功能:

xmin,xmax,ymin和ymax分别表示x轴和y轴的最大值和最小值,调用时,要保证最大值大于最小值

调用格式2:

axissquare

功能:

使X轴和Y轴的长度相同

调用格式3:

axisequal

功能:

使X轴和Y轴的刻度单位相同

调用格式4:

axistight

功能:

使坐标轴的区域和图形的区域正好吻合

在对坐标轴的刻度进行标注时,对于线性坐标轴,MATLAB按照数据的范围自动在横轴和纵轴上标出等间距的刻度线

另用户可以修改图形的xtick和ytick属性值来设置刻度线位置

例1.11:

下面我们先按照MATLAB默认的坐标轴刻度生成一幅图形,再改变坐标轴的显示范围和刻度内容。

>>x=0:

pi/100:

2*pi;

>>y=sin(x);

>>plot(x,y,'-.mo')

图1-5默认的坐标轴刻度生成图形

键入命令修改坐标轴的范围

>>axis([-1,11,-2,2]);

图1-6修改坐标轴后的图形

键入命令修改坐标轴的刻度内容

>>set(gca,'xtick',[-1,3,7,11])%在x轴上的-1,3,7,11处标记刻度

图1-7修改坐标轴刻度内容后的图形

3、坐标网络

使用”grid”命令可在当前作图中附加网格线

调用格式1:

gridon

功能:

在当前坐标中附加网格线

调用格式2:

gridoff

功能:

移掉网格线

调用格式3:

grid

功能:

切换grid的on与off两种状态

例1.12:

给上图加上网格

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

当前位置:首页 > 成人教育 > 远程网络教育

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

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