logo资料库

信号实验指导.pdf

第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
资料共16页,剩余部分请下载后查看
Matlab应用基础
1.1 Matlab简介
1.2 Matlab的矩阵计算功能
1.3 Matlab的常用控制语句和绘图语句
1.4 Matlab的常用绘图语句
1.5 Matlab中M文件的编写及使用
1.6 Matlab中的help命令
Matlab 应用基础 1.1 Matlab 简介 1.1.1 什么是 Matlab? Matlab 是由美国 MathWorks 公司推出的用于数值计算和图形处理计算系统环境,具 备卓越的数值计算能力,还提供专业水平的符号计算,文字处理,可视化建模仿真和实 时控制等功能。Matlab 的指令表达式与数学、工程中常用的形式十分相似,是国际公认 的优秀数学应用软件之一,现在已推出了 Matlab 7.0 版本。 整个 Matlab 系统由两部分组成,即 Matlab 内核及辅助工具箱,Matlab 语言以数组 为基本数据单位,包括控制语句、函数、数据结构、输入输出及面向对象等特点的高级 语言,它具有以下基本功能: 数值计算功能 符号计算功能 图形处理及可视化功能 可视化建模及动态仿真功能 1.1.2 Matlab 的开发环境 其中重要的窗口具体如下: (1)Matlab 主窗口 该窗口不能进行任何计算任务的操作,只用来进行一些整体的环境参数的设置。 (2)命令窗口(Command Window) 命令窗口是对 Matlab 进行操作的主要载体,默认的情况下,启动 Matlab 时就会打开 命令窗口。一般来说,Matlab 的所有函数和命令都可以在命令窗口中执行。在 Matlab 命 令窗口中,命令的实现不仅可以由菜单操作来实现,也可以由命令行操作来执行。 (3)历史窗口(Command History) 默认设置下历史命令窗口会保留自安装时起所有命令的历史记录,并标明使用时间, 以方便使用者的查询。而且双击某一行命令,即在命令窗口中执行该命令。 (4)当前目录窗口(Current Directory ) 在当前目录窗口中可显示或改变当前目录,还可以显示当前目录下的文件,包括文 件名、文件类型、最后修改时间以及该文件的说明信息等并提供搜索功能。 1
(5)工作空间管理窗口(Workspace) 工作空间管理窗口是 Matlab 的重要组成部分。在工作空间管理窗口中将显示所有目 前保存在内存中的 Matlab 变量的变量名、数据结构、字节数以及类型,而不同的变量类 型分别对应不同的变量名图标。 2
1.2 Matlab 的矩阵计算功能 本节简要介绍 Matlab 的矩阵的建立及相关运算。 矩阵是 Matlab 数据存储的基本单元,在 Matlab 语言系统中几乎一切运算均是以对矩 阵的操作为基础的。 1.2.1 矩阵的生成 1.直接输入法 从键盘上直接输入矩阵是最方便、最常用的创建数值矩阵的方法,尤其适合较小的 简单矩阵。在用此方法创建矩阵时,应当注意以下几点: (1)输入矩阵时要以“[ ]”为其标识符号,矩阵的所有元素必须都在括号内。 (2)矩阵同行元素之间由空格或逗号分隔,行与行之间用分号或回车键分隔。 (3)矩阵大小不需要预先定义。 (4)矩阵元素可以是运算表达式。 (5)若“[ ]”中无元素表示空矩阵。 另外,在 Matlab 语言中冒号的作用是最为丰富的。首先,可以用冒号来定义行向量。 例如: >> a=1:0.5:4 a= Columns 1 through 7 1 1.5 2 2.5 3 3.5 4 其次,通过使用冒号,可以截取指定矩阵中的部分。 例如: >> A=[1 2 3;4 5 6;7 8 9] A= 1 2 3 4 5 6 7 8 9 >> B=A (1:2, : ) B= 1 2 3 4 5 6 3
通过上例可以看到 B 是由矩阵 A 的 1 到 2 行和相应的所有列的元素构成的一个新的 矩阵。在这里,冒号代替了矩阵 A 的所有列。 MATLAB 中,也可采用特殊的矩阵——向量来表示序列,但 MATLAB 对序列下标 默认为从 1 开始递增,因此要表示离散信号 =nx )( , ... { , x(0) x(1) , x(-1) } ... , ,一般应采用 两个向量分别对信号的自变量和因变量预予描述。如 =nx )( }7 ,3 ,4 ,1 ,0 ,1 ,1 ,2 { − , n= -3~4 在 MATLAB 中表示为: n = [-3, -2, -1, 0, 1, 2, 3, 4]; %自变量取值 x = [ 2, 1, -1, 0, 1, 4, 3, 7]; %因变量取值 注意:分号“;”表示不回显表达式的值;“%”表示其后内容为注释对象。 2.外部文件读入法 Matlab 语言也允许用户调用在 Matlab 环境之外定义的矩阵。可以利用任意的文本编 辑器编辑所要使用的矩阵,矩阵元素之间以特定分断符分开,并按行列布置。另外也可 以利用 load 函数,其调用方法为: Load+文件名[参数] Load 函数将会从文件名所指定的文件中读取数据,并将输入的数据赋给以文件名命 名的变量,如果不给定文件名,则将自动认为 matlab.mat 文件为操作对象,如果该文件 在 Matlab 搜索路径中不存在时,系统将会报错。 例如:事先在记事本中建立文件: 1 1 1 (并以 data1.txt 保存) 1 2 3 1 3 6 在 Matlab 命令窗口中输入: >> load data1.txt >> data1 data1= 1 1 1 1 2 3 1 3 6 3.特殊矩阵的生成 对于一些比较特殊的矩阵(单位阵、矩阵中含 1 或 0 较多),由于其具有特殊的结 构,Matlab 提供了一些函数用于生成这些矩阵。常用的有下面几个: zeros(m) 生成 m 阶全 0 矩阵 4
eye(m) 生成 m 阶单位矩阵 ones(m) 生成 m 阶全 1 矩阵 rand(m) 生成 m 阶均匀分布的随机阵 randn(m) 生成 m 阶正态分布的随机矩阵 1.2.2 矩阵的基本数学运算 矩阵的基本数学运算包括矩阵的四则运算、与常数的运算、逆运算、行列式运算、 秩运算、特征值运算等基本函数运算,这里进行简单介绍。 1.四则运算 矩阵的加、减、乘运算符分别为“+,—,*”,用法与数字运算几乎相同,但计算 时要满足其数学要求(如:同型矩阵才可以加、减)。 在 Matlab 中矩阵的除法有两种形式:左除“\”和右除“/”。在传统的 Matlab 算法 中,右除是先计算矩阵的逆再相乘,而左除则不需要计算逆矩阵直接进行除运算。通常 右除要快一点,但左除可避免被除矩阵的奇异性所带来的麻烦。在 Matlab6 中两者的区 别不太大。 2.与常数的运算 常数与矩阵的运算即是同该矩阵的每一元素进行运算。但需注意进行数除时,常数 通常只能做除数。 3.基本函数运算 求矩阵 a 的行列式 求矩阵 a 的特征值 求矩阵 a 的逆矩阵 求矩阵 a 的秩 求矩阵 a 的迹(对角线元素之和) 矩阵的函数运算是矩阵运算中最实用的部分,常用的主要有以下几个: det(a) eig(a) inv(a)或 a ^ (-1) rank(a) trace(a) 例如: >> a=[2 1 –3 –1; 3 1 0 7; -1 2 4 –2; 1 0 –1 5]; >> a1=det(a); >> a2=det(inv(a)); >> a1*a2 ans= 1 注意:命令行后加“;”表示该命令执行但不显示执行结果。 5
1.2.3 矩阵的数组运算 我们在进行工程计算时常常遇到矩阵对应元素之间的运算。这种运算不同于前面讲 的数学运算,为有所区别,我们称之为数组运算。 1.基本数学运算 数组的加、减与矩阵的加、减运算完全相同。而乘除法运算有相当大的区别,数组 的乘除法是指两同维数组对应元素之间的乘除法,它们的运算符为“.*”和“./”或“.\”。 前面讲过常数与矩阵的除法运算中常数只能做除数。在数组运算中有了“对应关系”的 规定,数组与常数之间的除法运算没有任何限制。 另外,矩阵的数组运算中还有幂运算(运算符为 .^ )、指数运算(exp)、对数运 算(log)、和开方运算(sqrt)等。有了“对应元素”的规定,数组的运算实质上就是 针对数组内部的每个元素进行的。 例如: >> a=[2 1 -3 -1; 3 1 0 7; -1 2 4 -2; 1 0 -1 5]; >> a^3 ans= 32 -28 -101 34 99 -12 -151 239 -1 49 93 8 51 -17 -98 139 >> a .^3 ans= 8 1 -27 -1 27 1 0 343 -1 8 64 -8 1 0 -1 125 由上例可见矩阵的幂运算与数组的幂运算有很大的区别。 2.逻辑关系运算 逻辑运算是 Matlab 中数组运算所特有的一种运算形式,也是几乎所有的高级语言普 遍适用的一种运算。它们的具体符号、功能及用法见表 1-1。 表 1-2 常见逻辑运算功能表 符号运算符 功 能 函 数 名 = = 等于 eq 6
~ = < > <= >= & | ~ 不等于 小于 大于 小于等于 大于等于 逻辑与 逻辑或 逻辑非 ne lt gt le ge and or not 说明: 1)在关系比较中,若比较的双方为同维数组,则比较的结果也是同维数组。它的元 素值由 0 和 1 组成。当比较双方对应位置上的元素值满足比较关系时,它的对应值为 1, 否则为 0。 2)当比较的双方中一方为常数,另一方为一数组,则比较的结果与数组同维。在算 术运算、比较运算和逻辑与、或、非运算中,它们的优先级关系先后为:比较运算、算 术运算、逻辑与或非运算。 例如: >>a=[1 2 3; 4 5 6; 7 8 9]; >> x=5; >> y= ones(3)*5; >> xa= x<=a xa= 0 0 0 0 1 1 1 1 1 >> b=[0 1 0; 1 0 1; 0 0 1]; >> ab=a&b ab= 0 1 0 1 0 1 0 0 1 7
1.3 Matlab 的常用控制语句和绘图语句 1.3.1 循环语句 Matlab 提供两种循环方式,for 循环和 while 循环。在循环语句中,一组被重复执行 的语句称为循环体。每循环一次,都必须作出判断,是继续循环执行还是中止执行跳出 循环,这个判断的依据称为循环的中止条件。由于这些结构经常包含大量的 Matlab 命令, 故经常出现在 M 文件中,而不是直接加在 MATLAB 提示符下。 1.for 循环 for 循环允许一组命令以固定的和预定的次数重复。For 循环的一般形式是: 在 for 和 end 语句之间的{commands}按数组中的每一列执行一次。在每一次迭代中, for x = array end {commands} x 被指定为数组的下一列,即在第 n 次循环中,x=array(:, n)。 使用 for 循环应该注意: (1)for 循环不能用 for 循环内重新赋值循环变量 n 来终止。 (2)在 for 循环内接受任何有效的 MATLAB 数组。 (3)for 循环可按需要嵌套。 2.While 循环 与 For 循环以固定次数求一组命令的值相反,While 循环以不定的次数求一组语句 的值。While 循环的一般形式是: while expression {commands} end 只要在表达式里的所有元素为真,就执行 while 和 end 语句之间的{commands}。通 常,表达式的求值给出一个标量值,但数组值也同样有效。在数组情况下,所得到数组 的所有元素必须都为真。 1.3.2 选择语句 很多情况下,命令的序列必须根据关系的检验有条件地执行。在编程语言里,这种 逻辑由某种 If-Else-End 结构来提供。最简单的 If-Else-End 结构是: if expression 8
分享到:
收藏