发布时间 : 星期四 文章数字信号处理上机指导 - 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 -