数字信号处理上机指导 - 1dl 联系客服

发布时间 : 星期四 文章数字信号处理上机指导 - 1dl更新完毕开始阅读a620bd4b852458fb770b56fc

第2章 MATLAB基本数值运算

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

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

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

⑵ 常数eps:表示浮点相对精度,其值是从1.0到下一个最大浮点数之间的差值。该变量值作为一些MATLAB函数计算的相对于浮点数的精度,按IEEE标准,eps=2-52,近似为2.2204e-016。

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

⑷ 虚数单位i、j:表示复数虚部单位,相当于?1。 ⑸ NaN:表示不定型值,是由0/0运算产生的。

⑹ 常数pi:表示圆周率π,其值为3.141 592 653 589 7?。

§2-2 变量类型 1.变量命名规则

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

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

2) 字符长度不能大于31。 3) 变量命名区分大小写。

2. 局部变量和全局变量

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

全局变量是指用关键字“global”声明的变量。全局变量名应尽量大写,并能反映它本身的含义。如果需要在工作空间和几个函数中都能访问一个全局变量,必须在工作空间和这几个函数中都声明该变量是全局的。

§2-3 向量及其运算

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

1)直接输入向量

生成向量最直接的方法就是在命令窗口中直接输入。格式上的要求是,向量元素需要用“[ ]”括起来,元素之间可以用空格、逗号或分号分隔;需要注意的是,用空格和逗号分隔生成行向量,用分号分隔生成列向量。

例 A = [1,2,3 ] 或 A = [1 2 3 ] %生成行向量 A = [1;2;3 ] %生成列向量 2)利用冒号表达式生成向量

冒号表达式的基本形式为x = x 0 :step :x n ,其中x 0、step、x n分别为给定数值,x0表示向量的首元素数值,x n表示向量尾元素数值限(只有当x n- x0恰为step值的整数倍时, xn才能成为尾数),step表示从第二个元素开始,元素数值大小与前一个元素数值大小的差值。 例 在命令窗口,给向量a、b、c赋值。

>> a=1:2:12

a =

1 3 5 7 9 11

>> b=12:-2:1

- 4 -

b =

12 10 8 6 4 2 >> c=1:2:13 c =

1 3 5 7 9 11 13

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 =

1 1 1 1 >> d=a-3 d =

-2 -1 0 1 >> 4*a ans =

4 8 12 16

2) 对位乘、点积计算

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

ans =

0 2 6 12

>> 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=[ 1 2 3

4 5 6 7 8 9]

运行结果为

A=

1 2 3

4 5 6 7 8 9

2)特殊矩阵的生成

对于特殊的矩阵可直接调用MATLAB的函数生成 用函数zeros生成全0矩阵:格式为B=zeros(m,n)生成m×n的全0阵。 用函数ones生成全1矩阵:格式为B=ones(m,n)生成m×n的全1阵。

- 5 -

用函数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 =

7 7 7 7 7 7

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

6 3 5 2 4 1

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

28 10 73 28

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

54

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

0.5185 -0.1852 -1.3519 0.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所示。

- 6 -

表3-1 MATLAB语言中的图形设置选项 参数 y m c g b w k r 含义 黄色 紫色 青色 绿色 蓝色 白色 黑色 红色 参数 · O × + * s d 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列,在第一个窗口中作图

- 7 -