MATLAB程序设计与应用主讲教师,卢丹电子信息工程学院中 国 民 航 大 学 电 子 信 息 工 程 学 院
MATLAB课程介绍
定位:专业选修课
目标
了解 MATLAB
掌握数值数组(矩阵)及其运算、字符串数组、元胞数组和构架数组
理解数值计算、符号计算
简单编程,简单的数据处理及基本图形绘制中 国 民 航 大 学 电 子 信 息 工 程 学 院
教材
,MATLAB教程 -基于 6.X版本,
张志涌等编 北航出版社
课程安排
学时,32
安排:讲课 20学时,上机 12学时
考核方式:闭卷考试结合上机考试中 国 民 航 大 学 电 子 信 息 工 程 学 院学习内容一,MATLAB基础准备及入门二,数值数组及其运算三、字符串数组、元胞数组和构架数组四、数值计算五、符号计算六、数据和函数的可视化七、用户函数文件的编写中 国 民 航 大 学 电 子 信 息 工 程 学 院第一章 MATLAB基础准备及入门
1.1 MATLAB语言的发展
Matlab语言是由美国的 Clever Moler博于 1980年开发的,设计者的初衷是为解决“线性代数”课程的矩阵运算问题取名 MATLAB即 Matrix Laboratory
矩阵实验室的意思中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.1 Matlab语言的发展
1984年,Cleve Moler和 Jack Little等合作成立了
MathWork公司,推出了用 C语言开发的 Matlab1.0
20年代 90世纪初,运行于 Windows系统上的
Matlab4.0问世。此后的 4.x版本中增加了 Simulink、
符号运算工具箱和 Notebook等新的组件。
1997年,Matlab5.0问世
2000年,Matlab6.0问世
2002年,Matlab6.5问世
2004年,Matlab7.0问世中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.2 Matlab的特点
Matlab是一种直译式的高级语言,比其它程序设计语言容易
Matlab的基本数据类型是双精度的,无须定义的、下标从 1开始的复数(实数)矩阵。
Matlab有命令行操作(类似高级计算器)和编程执行两种使用方法,分别适用于简单的草稿式计算和复杂的应用开发。
绝大多数 Matlab函数的输入输出参数个数都是可变的,调用函数时输入输出参数的个数不同,
函数完成的功能会有一定的差异中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.2 Matlab的特点
Matlab操作界面友好,编程语言简练,算法高效准确,图形显示和数据可视化功能强大
Matlab的帮助系统非常完善,内容包括各个组件的入门指南、完全用户手册和示例演示等
Matlab采用开放性结构设计,具体表现在
除少数内部函数外,所有 Matlab主包函数和各种工具箱函数都是可读可改的 M文件
对外提供了 Matlab的 C/C++数学函数库、图形函数库以及相关的 API函数中 国 民 航 大 学 电 子 信 息 工 程 学 院
工业研究与开发
数学教学,特别是线性代数
数值分析和科学计算方面的教学与研究
电子学、控制理论和物理学等工程和科学
学科方面的教学与研究
经济学、化学和生物学等计算问题的所有其他领域中的教学与研究
1.3 Matlab的应用中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.4 Matlab的功能
强大的数值 ( 矩阵 ) 运算功能
广泛的符号运算功能
高级与低级兼备的图形功能(计算结果的可视化功能)
可靠的容错功能
信息量丰富的联机检索功能中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.矩阵运算功能
MATLAB提供了丰富的矩阵运算处理功能,是 基于矩阵运算的处理工具 。
变量 矩阵,运算 矩阵的运算例如 C = A + B,A,B,C都是矩阵,是矩阵的加运算
即使一个常数,Y=5,MATLAB也看做是一个 1?1的矩阵中 国 民 航 大 学 电 子 信 息 工 程 学 院
2.符号运算功能
符号运算即用字符串进行数学分析
允许变量不赋值而参与运算
用于解代数方程、微积分、复合导数、
积分、二重积分、有理函数、微分方程、
泰勒级数展开、寻优等等,可求得解析符号解中 国 民 航 大 学 电 子 信 息 工 程 学 院
3.丰富的绘图功能与计算结果的可视化具有高层绘图功能 —— 两维、三维绘图具有底层绘图功能 —— 句柄绘图使用 plot函数可随时将计算结果可视化中 国 民 航 大 学 电 子 信 息 工 程 学 院中 国 民 航 大 学 电 子 信 息 工 程 学 院
4.图形化程序编制功能
动态系统进行建模、仿真和分析的软件包
用结构图编程,而不用程序编程
只需拖几个方块、连几条线,即可实现编程功能中 国 民 航 大 学 电 子 信 息 工 程 学 院中 国 民 航 大 学 电 子 信 息 工 程 学 院
5.丰富的 MATLAB工具箱
MATLAB主工具箱
符号数学工具箱
SIMULINK仿真工具箱
控制系统工具箱
信号处理工具箱
图象处理工具箱
通讯工具箱
系统辨识工具箱
神经元网络工具箱
金融工具箱许多学科,在 MATLAB中都有专用工具箱,现已有 30多个工具箱,
但 MATLAB语言的扩展开发还远远没有结束,各学科的相互促进,
将使得 MATLAB更加强大中 国 民 航 大 学 电 子 信 息 工 程 学 院
6.MATLAB的容错功能
非法操作时,给出提示,并不影响其操作
1/0
Warning,Divide by zero
ans =
Inf
中 国 民 航 大 学 电 子 信 息 工 程 学 院
7.MATLAB的开放式可扩充结构
matlab 所有函数都是开放的
用户可按自己意愿随意更改
正因为此功能,使得 matlab的应用越来越广泛
8.强大的联机检索帮助系统
可随时检索 matlab函数
可随时查询 matlab函数的使用方法中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.5 Matlab的安装和启动
Matlab的安装系统配置
CPU,Intel奔腾系列内存,128M以上显卡:支持 256色的 8位显卡硬盘:仅安装 Matlab需 120MB
全部组件和帮助需 1200MB
安装光盘:两张,其中一张是帮助文档安装语言,英语安装 MATLAB 6.x系统,需运行系统自带的安装程序
setup.exe,可以按照安装提示依次操作 。
Matlab组件必须选择中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.5 Matlab的安装和启动
Matlab的启动
双击桌面上的快捷方式图标
双击 matlab\bin\win32文件夹中的 matlab.exe
(这种方式创建的 Matlab以 matlab\bin\win32为当前目录 )
中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.6 Matlab操作界面介绍
与 Windows的窗口界面类似,有菜单项 File,Edit,View、
Web,Windows,Help等项可以选择。
中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.6 Matlab操作界面介绍
通用操作界面
指令窗该窗缺省地位于 Matlab桌面的右侧。
进行各种 Matlab操作的主要窗口。
在该窗内,可键入各种送给 Matlab运行的指令、函数、
表达式,并显示除图形外的所有运算结果。
历史指令窗该窗缺省地处于 Matlab桌面的左下侧前台。
记录已经运作过的指令、函数、表达式;允许用户对它们进行选择复制、重运行,以及产生 M文件中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.6 Matlab操作界面介绍
当前目录浏览器该浏览器缺省地位于 Matlab桌面左下侧的后台。
可以进行当前目录的设置;展示相应目录上的 M,MDL等文件;复制、编辑和运行 M文件;装载 MAT数据文件
工作空间浏览器该交互界面缺省地位于 Matlab桌面的左上侧后台。
该窗口罗列出 Matlab工作空间中所有的变量名、大小、字节数。在该窗中,可对变量进行观察、编辑、保存和提取。
内存数组编辑器在缺省情况下,该编写器不随操作界面的出现而启动。只有当工作空间浏览器中对变量进行操作时才启动中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.6 Matlab操作界面介绍
交互界面分类目录窗该窗口缺省地处于 Matlab桌面上的左上侧前台。该窗以可展开的树状结构罗列着 Matlab提供的所有交互界面,包括:帮助界面、演示界面、各种应用交互界面。
M文件编辑 /调试器在缺省情况下,该编辑 /调试器不随操作界面的出现而启动。只有当进行“打开文件”等操作时,该编辑 /调试器才启动。
帮助导航 /浏览器该浏览器缺省情况下,并不随操作桌面的出现而启动。只有当作了一定的选择或设置的情况下,才以独立交互界面的形式出现。该浏览器展示有超文本写成的详尽在线帮助。
中 国 民 航 大 学 电 子 与 信 息 工 程 学 院
1.7 Matlab的预备知识
数值的记述
Matlab的数值采用习惯的十进制表示,可以带小数点或负号。

3,-59,0.02,-9.5,1.3e-3,5e4
数值的相对精度是 eps,即大约保持有效数字 16位
变量命名规则
变量名、函数名是对字母大小写敏感的。
变量名的第一个字母必须是英文字母,最多可包含 31个字符(英文、数字和下连符)。
变量名中不得包含空格,标点,但可以包含下连符。
中 国 民 航 大 学 电 子 与 信 息 工 程 学 院
1.7 Matlab的预备知识
Matlab默认的预定义变量在 Matlab工作内存中,驻留了几个由系统本身在启动时定义的变量,称为预定义变量。
eps — 机器零阈值
pi — 圆周率?的近似值 3.1415926
inf或 Inf — 表示正无穷大,定义为 1/0
NaN或 nan — 非数,它产生于 0×?,0/0,?/?等运算
i,j — 虚数单位
ans — 对于未赋值运算结果,自动赋给 ans
nargin— 函数输入宗量数目
nargout— 函数输出宗量数目
realmax— 最大正实数
realmin— 最小正实数中 国 民 航 大 学 电 子 与 信 息 工 程 学 院
1.7 Matlab的预备知识
对预定义变量的一些说明
用户在编写指令和程序时,应尽可能不对预定义变量进行赋值,以免产生混淆
若用户对任何一个预定义变量进行赋值,则变量的默认值将被用户新赋的值,临时,覆盖。
在遵循 IEEE算法规则的机器上,被 0除是允许的。它不会导致程序执行的中断,只是在给出警告信息的同时,
用一个特殊名称(如 inf,NaN)记述。
中 国 民 航 大 学 电 子 与 信 息 工 程 学 院
1.7 Matlab的预备知识
矩阵的输入步骤直接输入矩阵时,矩阵元素用空格或逗号“,”分隔,矩阵行用分号,;”隔离,整个矩阵放在方括号,[]”里。
如:
A=[1,2;3,4]
注意,标点符号一定要在英文状态下输入。
矩阵也可分行输入
A=[1,2
3,4]
注意,在 Matlab中,不必事先对矩阵维数做任何说明,存储时将自动配置中 国 民 航 大 学 电 子 与 信 息 工 程 学 院
1.7 Matlab的预备知识
运算符和表达式说明:所有运算定义在复数域上。对于方根问题,运算只返回第一象限的解
/或 \运算对标量没有区别,但对矩阵运算有重要的影响
表达式的书写规则
表达式由变量名、运算符和函数名组成
表达式将按与常规相同的优先级自左向右执行运算
括号可以改变运算的次序
书写表达式时,赋值符,=” 和运算符两侧允许有空格,以增加可读性数学表达式 Matlab运算符 Matlab表达式加 a+ b + a+ b
减 a- b - a- b
乘 a× b × a× b
除 a÷ b /或 \ a/b或 b\a
幂 ab ^ a^b
中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.8 指令窗
指令窗接收用户键入的各种运算指令、函数或表达式,并显示所有文本形式的运算结果
(图形会单独显示在图形窗中)。提示符 >>
后输入文本
指令窗的弹出与返回点击指令窗右上角的 键,就可得独立的指令窗操作界面选中指令窗的 [View:Dock Command Window]下拉菜单,即可把独立指令窗嵌放回桌面。
中 国 民 航 大 学 电 子 信 息 工 程 学 院
指令窗的显示方式
缺省显示方式
关键词采用蓝色字体,如 if,for等
输入的指令、表达式、计算结果采用黑色字体
字符串采用赭红色字体
计算结果以简洁的“短 short”格式显示
(实际储存和运作是都以双精度进行。 )
显示方式的设置
1.选中桌面或指令窗的 [File:Performance]下拉菜单项
2.在弹出的对话框的左栏选中,Command Window” 项或其展开项,Font&Colors”
3.根据需要和对话框提示对数据显示格式,或字体等进行选择
4.点击 OK键,便完成了设置说明:设置将永久保留。
中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.8 指令窗
数值计算结果的显示格式设置,1.通过菜单弹出框进行选择
2.在指令窗口中输入 format命令进行设置(仅当前有效)
显示格式类型
short— 通常保证小数点后四位有效,最多不超过 7位,对于大于 1000的实数。用
5位有效数字的科学记数形式表示。
long— 15位数字表示
short e — 5位科学记数表示
long e— 15位科学记数表示
short g— 从 short 和 short e中选择最佳记述方式
long 9— 从 long和 long e中选择最佳记述方式
rat— 近似有理数表示
hex— 十六进制表示
+— 显示大矩阵时用。正数、负数、零分别用 +,-,空格表示
bank— 元、角、分表示
compact— 变量之间没有空行
loose— 变量之间有空行中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.8指令窗
常用标点符号
( 在 matlab中,标点符号要在英文状态下输入 )
空格,用作输入量与输入量之间的分隔符(为了容易识别),数组元素分隔符逗号,用作要显示计算结果的指令与其后指令之间的分隔:用作输入量与输入量之间的分隔;用作数组元素分隔符号分号,用作不显示计算结果指令的“结尾”标志;用作不显示计算结果指令与其后指令的分隔;用作数组间的行分隔符冒号,用以生成一维数值数组;用做单下标援引时,表示全部元素构成的长列;用作多下标援引时,表示相应维的全部元素方括号,输入数组时用;函数指令输出宗量列表时用花括号,元胞数组记述符单引号对,字符串记述符圆括号,在数组援引时用;函数指令输入变量列表时用注释号,注释号后的所有物理行部分被看作非执行的注释续行号,由三个以上连续黑点构成。它把其下的物理行看作该行的“逻辑”继续,
以构成一个“较长的完整指令”
中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.8 指令窗
指令窗的常用控制指令
clc,清除指令窗中显示内容
clear:清除 Matlab工作空间中保存的变量
clf:清除图形窗
edit:打开 M文件编辑器
type:显示指定 M文件的内容
cd:设置当前工作目录
dir:列出指定目录下的文件和子目录清单
which:指出其后文件所在的目录
more:显示内容是否分页语句 more off 不分页 more on 分页
exit:关闭 /退出 Matlab
quit:关闭 /退出 Matlab
中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.8 指令窗
指令窗中指令行的编辑
,前寻式调回以输入过的指令行
,后寻式调回以输入过的指令行
,在当前行中左移光标
,在当前行中右移光标
pageup,前寻式翻阅当前窗中的内容
pagedown:后寻式翻阅当前窗中的内容
Home:使光标移到当前行的首端
End:使光标移到当前行的尾端
Delete:删去光标右边的字符
Backspace:删去光标左边的字符
Esc:清除当前行的全部内容中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.9 指令窗操作实例
作计算器用求 的算术运算结果在 Matlab指令窗直接输入
(15+2*4-3)/5
ans=3
用一个简单命令求解线性系统
3x1+ x2 - x3 = 3.6
x1+2x2+4x3 = 2.1 对于线性系统有 Ax=b
-x1+4x2+5x3 = -1.4
在 Matlab指令窗直接输入
A=[3 1 -1;1 2 4;-1 4 5];b=[3.6;2.1;-1.4];
x=A\b
x=
1.4818
-0.4606
0.3848
534215
中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.9 指令窗操作实例
复数计算在 Matlab中,复数作为一个整体被处理。虚数单位由 Matlab中的预定义变量 i或 j表示。
对复数操作的 Matlab指令
real(),计算复数的实部
imag():计算复数的虚部
abs():计算复数的模
angle():计算复数的相角(单位:弧度)
例,a=3+4i,b=5+6i,计算 c=a× b,并求 c的模和相角在 matlab指令窗中输入
a=3+4i;b=5+6i;c=a*b,d=abs(c),e=angle(c)*180/pi
例:生成复数矩阵
ii iiA 6234 5331
中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.9 指令窗操作实例
数值显示格式设置例 设当前数据显示格式为 15位数字表示在 Matlab指令窗输入
format long
计算一段程序的运行时间
tic;a=0:1e6;toc
elapsed_time =
0.0310
矩阵生成
a=randn(3,3),b=linspace(1,10,20);c=1:2:20
中 国 民 航 大 学 电 子 信 息 工 程 学 院
1.9 指令窗操作实例
图形显示例 用简短命令计算并绘制在 0?x?6范围内的 sin(2x),sinx2,sin2x。
在 matlab命令行输入
x=linspace(0,6);y1=sin(2*x),y2=sin(x.^2),y3=(sin(x)).^2;
plot(x,y1,x,y2,x,y3)
0 1 2 3 4 5 6
-1
- 0,8
- 0,6
- 0,4
- 0,2
0
0,2
0,4
0,6
0,8
1