数字信号处理MATLAB实验

更新时间:2023-11-24 08:13:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

物理与电子科学学院

《数字信号处理》实验指导书

————MATLAB实验

赵发勇 编 二零一零年九月三十日

目录

目录................................................................................................................................. 2 MATLAB简介 ..................................................................................................................... 3

一、MATLAB初步................................................................................................... 3

1. MATLAB的主要功能..................................................................................... 3 2.启动MATLAB及界面简介 ........................................................................... 3

3. MATLAB的常用命令..................................................................................... 4 4.基本运算 ...................................................................................................... 5 5.退出 ............................................................................................................. 6 二、变量与函数、语句、矩阵及其运算 ..................................................................... 6

1.变量与函数 ................................................................................................... 6 2.语句与M文件.............................................................................................. 6 3.矩阵及其运算 ............................................................................................... 7 三、MATLAB 支持的数据结构 ................................................................................ 8 四、MATLAB绘图................................................................................................... 9

1、绘制二维图形 ............................................................................................... 9 2、绘制三维图形 ............................................................................................. 10

五、MATLAB编程..................................................................................................11

1、关系运算和逻辑运算....................................................................................11 2、控制语句 .....................................................................................................11 3、函数编写方法与应用................................................................................... 13

《数字信号处理》的MATLAB实验 ................................................................................... 14

实验一 MATLAB基础入门练习 ........................................................................... 14 实验二 离散时间信号分析 .................................................................................... 16 实验三 离散时间系统及响应 ................................................................................. 18 实验四 离散傅立叶变换及性质 ............................................................................. 20 实验五 用FFT和CZT对信号进行频谱分析......................................................... 21 实验六 IIR数字滤波器设计与信号滤波 ................................................................ 24 实验七 用窗函数法设计FIR滤波器...................................................................... 27 实验报告格式................................................................................................................. 30

2

MATLAB简介

MATLAB是MATrix LABoratory的缩写。由MathWorks 公司于1984年推出,1993 年推出了其微机版, 在Windows环境下使用。其最初由美国的Cleve Moler博士所研制,目的是为线性代数等课程中的矩阵运算提供一种方便可行的实验手段。经过十几年的市场竞争和发展,MATLAB已发展成为在自动控制、生物医学工程、信号分析处理、语言处理、图像信号处理、雷达工程、统计分析、计算机技术、金融界和数学界等各行各业中都有极其广泛应用的软件,同时也成为理工科学生必须掌握的一项基本技能。

为了帮助学生熟悉MATLAB,进行数字信号处理,本节把MATLAB介绍给大家。

一、MATLAB初步

1. MATLAB的主要功能 (1).数值计算计算

MATLAB以矩阵作(或数组)为数据操作的基本单位,提供了十分丰富的数值计算函数,是进行数值分析的高效软件包。

(2).编程语言

MATLAB与其它高级语言一样,有编程功能,具有程序结构控制、函数调用、数据结构、输入输出、面向对象等程序语言特征,而且简单易学、编程效率高。

(3).MATLAB工具箱

MATLAB包含两部分内容:基本部分和各种可选的工具箱。 (4).绘图功能

MATLAB提供了两个层次的绘图操作:一种是对图形句柄进行的低层绘图操作,另一种是建立在低层绘图操作之上的高层绘图操作。

温馨提示:绘图功能在我们学习数字信号处理过程中的主要作用是帮助大家直观了解处理的结果,在实际信号处理中,可能用的不多。

2.启动MATLAB及界面简介

点击桌面上MATLAB图标,可进入到MATLAB命令窗(MATLAB Command Window),其命令提示符为>>。用户可在命令窗内输入命令、编程、进行计算。

MATLAB 6.5环境包括MATLAB主窗口、命令窗口(Command Window)、工作空间窗口(Workspace)、命令历史窗口(Command History)、当前目录窗口(Current Directory)、图形窗口(Figure)和文本编辑窗口(Editor)等组成。观看其默认窗口分布情况可以如下操作:

Desktop---desktop layout--defaut (1).主窗口

MATLAB主窗口是MATLAB的主要工作界面。主窗口除了嵌入一些子窗(Command Window、Workspace、Command History、Current Directory)外,还主要包括菜单栏和工具栏。菜单栏,共包含File、Edit、View、Web、Window和Help 6个菜单项,与其它Windows应用软件相似,大家可以自己点击观看。工具栏, MATLAB 6.5主窗口的工具栏共提供了10个命令按钮。这些命令按钮均有对应的菜单命令,但比菜单命令使用起来更快捷、方便。下面重点介绍一下命令窗口(Command Window)。

命令窗口

3

命令窗口是MATLAB的主要交互窗口,用于输入命令并显示除图形以外的所有执行结果。MATLAB命令窗口中的“>>”为命令提示符,表示MATLAB正在处于准备状态。在命令提示符后键入命令并按下回车键后,MATLAB就会解释执行所输入的命令,并在命令后面给出计算结果。例如 >>x=10;y=15; >>z=x+y

z=15

说明:①语句后输入分号表示不在主窗口显示结果,但可以从变量窗口看到;

②如果一个命令行很长,或编程时一个语句很长,需要用两行来书写,可以在第

一个物理行之后加上3个小黑点并按下回车键,然后接着下一个行继续写命令的其他部分。3个小黑点称为续行符,即把下面的物理行看作该行的逻辑继续。

温馨提示:命令窗口是MATLAB与用户之间的主要交互式运算窗口。

3. MATLAB的常用命令

(1).help命令 在命令窗内输入help命令,再敲回车键,在屏幕上出现了在线帮助总览。(注意:MATLAB命令被输入后,必需敲回车键才能执行.为行文方便,以后不再每次提醒“敲回车键”)学会使用help命令,是学习MATLAB的有效方法。 如果要了解相关函数的使用方法及参数意义可输入

>>help xcorr

(2).demo命令 在命令窗内输入demo命令,再敲回车,键屏幕上将出现演示窗口。(MATLAB Demo Window)一共有三个窗口,左边的窗口显示欲演示内容的大标题,选定其中一项,右下方的小窗口显示欲演示的具体内容,选中其中一栏,再点击run按扭,屏幕上将演示选定的演示程序。右上方的窗口显示关于大标题的一些说明。

(3).Type命令 在命令窗内输入type 文件名,则MATLAB将在主窗口显示程序的M文件内容,帮助大家了解M文件编程方法,通过对其语句的分析,不仅可以提高理论认识,也是学习MATLAB的函数(function)编写方法有效途径。

>>type xcorr

(4).其它常用的命令与函数 Addpath:增加MATLAB的工作目录。MATLAB通常只能对其工作路径下的文件运行,如果你的文件不在其默认的目录下,可以通过addpath命令来添加你的目录,例

>>path

结果显示当前的所有默认目录。

>>addpath c:\\

结果将C盘根目录作为一个默认目录,即在C盘根目录下文件均可以直接在MATLAB下执行。

clear :清除内存空间变量。

whos 变量名:查看此变量的具体情况。如

>>whos x

Name Size Bytes Class

x 1x2 16 double array Grand total is 2 elements using 16 bytes

clc:清屏命令,清除当前主窗口内所有显示。 dir:查看当前目录。

length():计算向量的长度。如

4

>>ength(x)

ans = 2

size():计算矩阵或数组的维数。例 >>size(y) ans = 3 6

温馨提示:这些命令和函数是大家学习MATLAB时用的最多的,因此需要大家审记。 4.基本运算

在MATLAB本身是为了进行数值计算而创出的,因此其数值计算功能非常强,且是其重要的功能之一。计算方法非常简单,其进行基本数学运算,只需将运算式直接打入提示号(>>)之后,并按入Enter键即可。例如计算(5*2+1.3-0.8)*10/25的值: 用键盘在MATLAB指令窗中输入以下内容

>> (5*2+1.3-0.8)*10/25

在上述表达式输入完成后,按【Enter】键,该就指令被执行。在指令执行后,MATLAB指令窗中将显示以下结果。

ans =

4.2000 MATLAB会将运算结果直接存入一变量ans,代表MATLAB运算后的答案 (Answer),并显示其数值于屏幕上。

由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算 (^)。

我们也可将上述运算式的结果设定给另一个变数x如下:

>> x = (5*2+1.3-0.8)*10^2/25 x =

42

此时MATLAB会直接显示x的值。

MATLAB基本算术运算符 符号 + - .* * ^ .^ \\ / .\\ ./

温馨提示:由于MATLAB没有中文版,因此其自带的帮助均为英文,因此,希望大家不要有惧怕心理,应该当作帮助大家又提高了英语,一举两得!!

5

符号用途说明 加 此符号与以下五行符号详细说明可使用help arith 减 数组乘法 矩阵相乘 矩阵求幂 点幂 左除 此符号与以下三行符号详细说明可使用help slash 右除 点左除 点右除

5.退出

在工具栏中点击File按钮,在下拉式菜单中单击Exit MATLAB项即可。

二、变量与函数、语句、矩阵及其运算

1.变量与函数

在MATLAB中变量由字母、数和下划线组成,第一个字符必须是字母。一个变量最多由63个字符组成,并区分大小写。下面是MATLAB中表示特殊量的字符: 特殊变量 ans pi eps flops inf NaN i,j nargin nargout realmin realmax

MATLAB提供了大量的函数.可以通过help function查询。下面列出部分基本数学函数:

函数 sin(x) cos(x) tan(x) abs(x) min(x) sqrt(x) log(x) sign(x) imag(x) conj(x)

2.语句与M文件

MATLAB语句的一般形式为:变量=表达式。当某一语句的输入完成后,按回车键,计算机就执行该命令。如果该语句末没输入其它符号或输入了逗号,将显示结果;如果句末输入了分号,将不显示结果。如果语句中省略了变量和等号,那么计算机将结果赋值给变量ans(结果的缺省变量)。

6

取 值 用于结果的缺省变量名 圆周率 计算机的最小数,当和1相加就产生一个比1大的数 浮点运算数 无穷大,如1/0 不定量,如0/0 虚数单位i=j=?1,在程序中可以用作其它用途。 所用函数的输入变量数目 所用函数的输出变量数目 最小可用正实数 最大可用正实数 名 称 正弦函数 余弦函数 正切函数 绝对值或复数模 最小值 开平方 自然对数 符号函数 复数的虚部 共轭复数 函数 asin(x) acos(x) atan(x) max(x) sum(x) exp(x) log10(x) 名 称 反正弦函数 反余弦函数 反正切函数 最大值 元素的总和 以e为底的指数 以10为底的对数 取整 复数的实部 复数x的幅角 fix(x) real(x) angle(x) MATLAB的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为MATLAB定义新函数,为此必须编写函数文件. 函数文件是文件名后缀为M的文件,这类文件的第一行必须是一特殊字符function开始,格式为: function [因变量名]=函数名(自变量名)

函数值的获得必须通过具体的运算实现,并赋给因变量. M文件建立方法:

1). 在Matlab中,点:File->New->M-file;

2). 在编辑窗口中输入程序内容;

3). 点:File->Save,存盘,M文件名必须与函数名一致,M文件的文件名首字不能为数字。

Matlab的应用程序也以M文件保存,称为脚本文件(直接使用MATLAB中语句编写的M文件)。即M文件包括脚本文件和函数两种。

4).在MATLAB中,为了说明语句的功能使用的注释句用%开头。

3.矩阵及其运算

MATLAB中矩阵A的输入方法如下:

A=[a11,…,a1n;…;am1,…,amn]。其中逗号(或用空格)是数之间的分隔符,?;?分号(或Enter)是换行符,输入矩阵时严格要求所有行有相同列,即符合矩阵的形式。 ①、a=0:0.1:1可产生个向量,即元素为0,0.1,0.2…1。B=[2,2,2;3,5,6]或b=[2 2 2;3 5 6]是一样的。

②、一些特殊矩阵的产生方法:linspace(x,y,n),魔方矩阵magic(x),单位矩阵eye(x),随机函数rand(x),零矩阵zeros(x,y),1矩阵ones(x,y)等等。

温馨提示:冒号在MATLAB中的用法很灵活,一定要多试,多用。例如有一个矩阵X为3行3列的魔方矩阵,通过观看粗体来体会其用法。

>>X=magic(3) X =

8 1 6 3 5 7 4 9 2 >> X(2,:) ans =

3 5 7 >> X(2,:)=[1 2 3] X =

8 1 6 1 2 3

4 9 2

1) 关于矩阵的运算的一些基本指令:

运算命令 A? 共轭转置 A?B 功能 矩阵相加减 数乘矩阵,s是一个数值 求逆运算 s?A inv(A) 7

A? n 矩阵A的n次幂 矩阵A的行列式值 矩阵A的L,U分解 矩阵A的Q,R解 矩阵A的秩 X为A的特征向量,D为特征值 det(A) [L,U]?lu(A) [Q,R]?qr(A) rank(A) [X,D]?eig(A) poly(A) size(A) 求A的特征多项式 返回A的大小 2) 矩阵中元素或块的常用操作,其中A表示一个矩阵。

表达式 功能 A中第r行第c列元素 A(r,c) A(r,:) A(:,c) A(:) A(i) A中第r行构成的行向量 A中第c列构成的列向量 对A按列看作一个列向量 表示列向量A(:)中第i个元素

3)MATLAB中的数学函数有一个共同的特点:若自变量X为一个矩阵,则函数值也为X的同阶矩阵,即对每一个元素分别求函数值。 即对于 ?a11?A????a?m1???a1n??f(a11)???? 经过函数f作用后得:f(A)??????f(a)?amn??m1?f(an1)?? ??f(amn)??比如

>> K=[0,0.25,0.5,0.75]

K =

0 0.2500 0.5000 0.7500 >> sin(2*pi*K)

ans =

0 1.0000 0.0000 -1.0000

相信同学们已经明白,这也是我们经常使用的产生各种抽样信号的方法。

三、MATLAB 支持的数据结构

(1) 矩阵:略 (2) 多维数组

多维数组是 MATLAB 在其 5.0 版本开始提供的。假设有 2 个 3x3 矩阵 A1, A2,则可以由下面的命令建立起一个 3x3x2 的数组:A=cat(3,A1,A2)。试验 A1=cat(2,A1,A2) 和 A2=cat(1,A1A2) 将得到什么结果。

对矩阵或多维数组 A 可以使用 size(A) 来测其大小,也可以使用 reshape() 函数重新按列排列。对向量来说,还可以用 length(A) 来测其长度。

8

不论原数组 A 是多少维的,A(:) 将返回列向量。

(3) 字符串与字符串矩阵

MATLAB 的字符串是由单引号括起来的。如可以使用下面的命令赋值

>> strA='This is a string.' (4) 单元数据结构

用类似矩阵的记号将给复杂的数据结构纳入一个变量之下。和矩阵中的圆括号表示下标类似,单元数组由大括号表示下标。

>> B={1,'Alan Shearer',180,[100, 80, 75; 77, 60, 92; 67, 28, 90; 100, 89, 78]} B =

[1] 'Alan Shearer' [180] [4x3 double]

访问单元数组应该由大括号进行,如第 4 单元中的元素可以由下面的语句得出

>> B{4} 控制符 — : —. — — h v ^ > < 线型或标记 实 线 点 线 点画 线 虚 线 六角形 倒三角 正三角 左三角 右三角 控制符 g m b c w r k y 颜色 绿 色 品红色 蓝 色 青 色 白 色 红 色 黑 色 黄 色 控制符 . o x + * s d p 标记 点 圆 圈 叉 号 加 号 星 号 正方形 菱 形 五角星 四、MATLAB绘图

1、绘制二维图形

(1)、曲线图

绘制二维图形的基本命令是plot(X,Y,S).其中X,Y是向量,分别表示点集的横坐标和纵坐标,S指线型、颜色. plot(X,Y)— 画实线,plot(X,Y1,S1,X,Y2,S2,……,X,Yn,Sn)—将多条线画在一起. 以上三种格式中的x、y都可以是表达式,但表达式的运算结果必须符合上述格式要求.MATLAB的图形功能还提供了颜色和线型的控制符,如下表:

MATLAB提供的特殊二维图形函数如下表

9

(2)、符号函数(显函数、隐函数和参数方程)画图 符号函数画图可以通过函数ezplot或fplot来实现. 函数ezplot调用格式:

ezplot(‘f(x)’,[a,b]) 表示在a

Xmin

ezplot(‘x(T)’,’y(T)’,[Tmin,Tmax]) 表示在区间Tmin

函数fplot调用格式:

fplot(‘fun’,lims) 表示绘制字符串fun指定的函数在lims=[Xmin,Xmax]的图形. 注意:

[1] fun必须是M文件的函数名或是独立变量为x的字符串.

[2] fplot函数不能画参数方程和隐函数图形,但在一个图上可以画多个图形.

(3). 对数坐标图

在很多工程问题中,通过对数据进行对数转换可以更清晰地看出数据的某些特征,在对数坐标系中描绘数据点的曲线,可以直接地表现对数转换.对数转换有双对数坐标转换和单轴对数坐标转换两种.用loglog函数可以实现双对数坐标转换,用semilogx和semilogy函数可以实现单轴对数坐标转换.

loglog(Y) 表示 x、y坐标都是对数坐标系; semilogx(Y) 表示 x坐标轴是对数坐标系; semilogy(…) 表示y坐标轴是对数坐标系;

plotyy 有两个y坐标轴,一个在左边,一个在右边.

2、绘制三维图形

(1)、空间曲线的绘制

绘制空间曲线的基本命令为:

plot3(x,y,z);plot3(x,y,z,'s')或plot3(x1,y1,z1,'s1',x2,y2,z2,'s2',…)

其中x,y,z是同维的向量或矩阵.当它们是矩阵时,以它们的列对应元素为空间曲线上点的坐标.s指线型、颜色,这一点与二维曲线时的情形相同.

(2)、空间曲面的绘制

绘制空间曲面的基本命令为mesh(x,y,z). 如果x、y是向量,则要求x的长度=矩阵z的列维;y的长度=矩阵z的行维.以zij为竖坐

10

本文来源:https://www.bwwdw.com/article/pczt.html

Top