资源描述
南京航空航天大学 王正盛1
MATLAB 数学工具软件
实例简明教程
王 正 盛 编写
南 京 航 空 航 天 大 学
南京航空航天大学 王正盛2
第一章 MATLAB 简介
MALAB 译于矩阵实验室MATrix LABoratory 是用来提供通往
LINPACK 和EISPACK 矩阵软件包接口的 后来它渐渐发展成了通用科技
计算图视交互系统和程序语言
MATLAB 的基本数据单位是矩阵它的指令表达与数学工程中常用的习
惯形式十分相似比如矩阵方程Ax=b 在MATLAB 中被写成A*x=b 而若
要通过A,b 求x 那么只要写x=A\b 即可完全不需要对矩阵的乘法和求逆进
行编程因此用MATLAB 解算问题要比用C Fortran 等语言简捷得多
MATLAB 发展到现在已经成为一个系列产品 MATLAB 主包和各种
可选的toolbox 工具包主包中有数百个核心内部函数迄今所有的三十几
个工具包又可分为两类功能性工具包和学科性工具包功能性工具包主要用
来扩充MATLAB 的符号计算功能图视建模仿真功能文字处理功能以及硬
件实时交互功能这种功能性工具包用于多种学科而学科性工具包是专业性
比较强的如控制工具包Control Toolbox 信号处理工具包(Signal
Processing Toolbox) 通信工具包(Communication Toolbox)等都属此类开放性
也许是MATLAB 最重要最受人欢迎的特点除内部函数外所有MATLAB
主包文件和各工具包文件都是可读可改的源文件用户可通过对源文件的修改
或加入自己编写文件去构成新的专用工具包
MATLAB 已经受了用户的多年考验在欧美发达国家MATLAB 已经成为
应用线性代数自动控制理论数理统计数字信号处理时间序列分析动
态系统仿真等高级课程的基本教学工具成为攻读学位的大学生硕士生博
士生必须掌握的基本技能在设计研究单位和工业部门MATLAB 被广泛地用
于研究和解决各种具体工程问题
第二章 MATLAB 入门
2.1 工作窗和指令行的操作
除了通过菜单选项对工作窗进行控制外 MATLAB 还提供了许多通过
键盘输入的控制指令如下表
MATLAB 工作窗中的部分通用指令
quit 关闭和退出MATLAB
clc
擦除MATLAB 工作窗中的所有显示内
容
clf 擦除MATLAB 的当前图形窗中的图形
clear 清除内存中的变量和函数
pack 收集内存碎片以扩大内存空间
dir 列出指定目录下的文件和子目录清单
cd 改变当前工作子目录
disp 在运行中显示变量和文字内容
type 显示所有指定文件的全部内容
echo 控制运行文件指令是否显示的开关
南京航空航天大学 王正盛3
hold 控制当前图形窗对象是否被刷新
启动MATLAB 后就可以利用它工作了由于MATLAB 是一种交互式语
言随时输入指令即时给出运算结果是它的主要工作方式当然更可以编制
程序详见第七章
比如要计算
1 5
2 0 3
+
sin( . π )
的值只要在光标位置处键入
2*sin(0.3*pi)/(1+sqrt(5))
然后按[Enter]键,该指令便被执行并给出结果
ans = 0.5000
下面介绍控制光标对指令进行编辑的一些常用操作键
常用操作键
键 名作 用键 名作 用
↑ 前寻式调回已输入过的
指令行
Home 使光标移到当前行的首端
↓ 后寻式调回已输入过的
指令行
End 使光标移到当前行的尾端
← 在 当前行中左移光标Delete 删除光标右表边的字符
→ 在 当前行中右移光标Backspa
ce
删除光标左表边的字符
PageUp 前寻式翻阅当前窗中的
内容
Esc 清楚当前行的全部内容
PageDo
wn
后寻式翻阅当前窗中的
内容
2.2 简单矩阵的输入
在MATLAB 中矩阵输入的方法有多种此处只简单介绍矩阵的直接输
入法详细介绍见第三章在MATLAB 中不必对矩阵维数做任何说明存储
将自动配置在直接输入矩阵时矩阵元素用空格或逗号分隔矩阵行用
隔离整个矩阵放在方括号[ ] 里
[例1]
A=[1,2,3;4,5,6;7,8,9;10,11,12]
A =
1 2 3
4 5 6
7 8 9
10 11 12
说明指令执行后矩阵A 被保存在MATLAB 的工作间Workspace 中以
备后用如果用户不用clear 指令清除它或对它重新定义该矩阵会一直保存
在工作间中直到本MATLAB 指令窗被关闭为止
[例2]矩阵分行输入
A=[1 2 3 4
5 6 7 8
0 1 2 3]
A = 1 2 3 4
5 6 7 8
南京航空航天大学 王正盛4
0 1 2 3
[例3]矩阵元素输入
B(1,2)=3;B(4,4)=6;B(4,2)=11
B = 0 3 0 0
0 0 0 0
0 0 0 0
0 11 0 6
2.3 语句与变量
MATLAB 采用表达式语句用户输入语句由MATLAB 系统结实运行
MATLAB 语句有两种常见的形式1 表达式2 变量=表达式
说明1 表达式由算符函数变量名和数字构成
2 在第一种形式中表达式被执行后产生的矩阵将被自动赋
给名为ans 的变量并 显示在屏幕上ans 是一个缺省变量
名它会被以后类似的操作刷新
3 在第二种形式中等号右边的表达式是被演绎后产生的矩
阵将被赋给等号左边的变量存入内存并显示在屏幕上
4 书写表达式时运算符号= + 以及*
等两侧允许有空格以增加可读性但在复数或符号表达式中要
尽量避免装饰性空格以防出错
5 变量名函数名以一个字母打头后面最多可接19 个字母或
数字注意MATLAB 是区分字母的大小写的
[例1] 表达式的计算结果
2001/81
ans = 24.7037
[例2] 运算结果的赋值
s=1-1/2+1/3-1/4+1/5-1/6+1/7-1/8;
说明结尾的分号作用是指令执行结果将不会显示在屏幕上但变量
s 仍将驻留在内存中如想看s 的值只要键入
s
s = 0.6345
2.4 Who Whos 和永久变量
Who 和Whos 这两个指令的作用都是列出在MATLAB 工作间中已经驻
留的变量名清单不过Whos 在给出变量名的同时还给出它们的维数及性
质
[例1] 用 who 检查内存变量
who
Your variables are:
s
[例2] 用whos 检查驻留变量的详细情况
whos
Name Size Bytes Class
s 1x1 8 double array
Grand total is 1 elements using 8 bytes
南京航空航天大学 王正盛5
在MATLAB 工作内存中还驻留几个由系统本身在启动时定义的变量如下
表称为永久变量Permanent variables 或称为预定义变量
Predefined variables
系统预定义的变量
eps 计算机的最小正数在pc 机上它等于2−52
pi 圆周率π 的近似值3.14159265358979
inf 或Inf 无穷大
NaN 不定量
i,j 虚数单位定义i = j = −1
flops 浮点运算次数用于统计计算量
说明1 它们是在MATLAB 启动时自定义的
2 它们不会被清除内存变量指令clear 所清除
3 他们可以重新定义为其他值但用clear 可清除重定义值恢复预定义
值
[例1] 无穷大
s=1/0
Warning: Divide by zero.
s = Inf
无穷大
a=Inf/inf
a =
NaN
2.5 数与表达式
MATLAB 的数值采用习惯的十进制表示可以带小数点或负号如下
是合法的
3 -99 0.0013 9.2445154 1.2434e-6 4.673e33
在采用IEEE 浮点算法的计算机上数值的相对精度是eps 即大约保持16 位
有效数字数值范围大致为1×10−308 ~ 1×10308
表达式由下列算符构成并按习惯的优先次序进行运算
+ 加法 减法 * 乘法 / 右除 \ 左除 ^ 乘方
注意设置两种除法是为了方便矩阵的运算对标量而言两者作用相同
[例1]
x=2*pi/3+2^3/5-0.3e-3
x =
3.6941
2.6 复数和复矩阵
MATLAB 认识复数并定义i 和j 作为虚数单位矩阵元素允许是复数复
变量和由它们组成的表达式
南京航空航天大学 王正盛6
[例1]
z1=3+4*i,z2=2*exp(i*pi/6)
z=z1*z2
z1 =
3.0000 + 4.0000i
z2 =
1.7321 + 1.0000i
z =
1.1962 + 9.9282i
[例2]
A=[1,3;2,4]-i*[5,8;6,9]
B=[1+5*i,2+6*i;3+8*i,4+9*i]
C=A*B
A =
1.0000 - 5.0000i 3.0000 - 8.0000i
2.0000 - 6.0000i 4.0000 - 9.0000i
B =
1.0000 + 5.0000i 2.0000 + 6.0000i
3.0000 + 8.0000i 4.0000 + 9.0000i
C =
1.0e+002 *
0.9900 1.1600 - 0.0900i
1.1600 + 0.0900i 1.3700
2.7 函数
MATLAB 的强大功能可函数中略见一斑本质上讲分为三类
1 内部函数
2 系统附带各种工具包中的M 文件所提供的大量函数
3 用户自己增加的函数这一特点是其他许多软件平台无法比拟的
MATLAB 提供的通用数理类函数包括
基本数学函数
特殊函数
基本矩阵函数
特殊矩阵函数
矩阵分解和分析函数
数据分析函数
微分方程求解
多项式函数
非线性方程及其优化函数
数值积分函数
信号处理函数
[例]
z=1233.344
x=sqrt(log(z))
z =
南京航空航天大学 王正盛7
1.233344000000000e+003
x =
2.66786140168028
2.8 显示格式
在缺省的状态下MATLAB 以短格式short 格式显示计算结果可以用
MATLAB 命令窗口中format 指令来改变数字的显示格式由于MATLAB
以双精度执行所有运算显示格式的设置仅影响矩阵的显示不影响矩阵的
计算与存储
如果矩阵的所有元素都是整数则矩阵以不带小数点的格式显示如果有一
个元素不是整数则有几种输出格式默认格式为short 格式只显示5 位
有效数字其他的显示格式可显示更多的有效数字还可用科学表示法
[例]
x=[4/3 1.2345e-6]
默认short 格式
x =
1.3333 0.0000
format short e 短格式科学表示
x
x =
1.3333e+000 1.2345e-006
format long 长格式
x
x =
1.33333333333333 0.00000123450000
format long e 长格式科学表示
x
x =
1.333333333333333e+000 1.234500000000000e-006
format bank 银行格式
x
x = 1.33 0.00
format hex 十六进制格式
x
x = 3ff5555555555555 3eb4b6231abfd271
format + +格式用于显示大矩阵的紧凑格式+ 空格分别表示正
数负数和零
x
x =++
另外还有一种命令为format compact(紧凑格式) 它消去了矩阵之间的间隔
行这样可在一屏中显示更多的信息
2.9 变量的存储与调用
quit 和exit 指令都可退出MATLAB 结束MATLAB 任务会删除工作间中的变
南京航空航天大学 王正盛8
量在退出前可以保存工作空间以备再次调出使用这些变量
保存的指令格式
1 save 工作间中的所有变量保存在磁盘上名为matlab.mat 的文件中
2 save [文件名] [变量名] 将指定的变量保存在指定文件中如
save temp x y z 把x,y,z 这三个变量保存在文件temp.mat 中
在下次加载MATLAB 时可以利用load 指令将保存在文件中的变量恢复到
工作间中其格式有
1 load 将保存在matlab.mat 中的变量装入到MATLAB 工作间中
2 load [文件名] [变量名] 从指定的文件中将指定的变量装入
MATLAB 工作间如
load temp x 从文件temp.mat 中只将变量x 装入到MATLAB 工作
间中
2.10 图形
图形是MATLAB 的主要特色之一MATLAB 图形指令具有自然简洁
灵活及易扩充的特点MATLAB 的指令很多这里仅介绍几个简单的绘图
指令详见第六章
[例1] 作多条曲线
t=0:pi/50:4*pi;
y0=exp(-t/3);
y=exp(-t/3).*sin(3*t);
plot(t,y,t,y0,t,-y0)
grid
0 2 4 6 8 10 12 14
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
[例2] 三维曲面
x=-8:0.5:8;
y=x';
X=ones(size(y))*x;
Y=y*ones(size(x));
R=sqrt(X.^2+Y.^2)+eps;
Z=sin(R)./R;
mesh(Z);
colormap([1,0,0])
南京航空航天大学 王正盛9
2.11 lp 指令lookfor 指令及其他帮助指令
MATLAB 的在线帮助系统相当完备就查询系统的调用方式而言可分为两
种
1 从MATLAB 指令窗的 help 菜单选项中寻求帮助此与一般windows
的求助方法一样
2 在MATLAB 指令窗中直接键入求助指令
(i)help 不带任何参数显示出MATLAB 的目录项产生清单信息
help
HELP topics:
matlab\general - General purpose commands.
matlab\ops - Operators and special characters.
matlab\lang - Programming language constructs.
matlab\elmat - Elementary matrices and matrix
manipulation.
matlab\elfun - Elementary math functions.
matlab\specfun - Specialized math functions.
matlab\matfun - Matrix functions - numerical linear
algebra.
matlab\datafun - Data analysis and Fourier
transforms.
matlab\polyfun - Interpolation and polynomials.
matlab\funfun - Function functions and ODE solvers.
matlab\sparfun - Sparse matrices.
matlab\graph2d - Two dimensional graphs.
matlab\graph3d - Three dimensional graphs.
matlab\specgraph - Specialized graphs.
matlab\graphics - Handle Graphics.
matlab\uitools - Graphical user interface tools.
matlab\strfun - Character strings.
matlab\iofun - File input/output.
matlab\timefun - Time and dates.
matlab\datatypes - Data types and structures.
matlab\winfun - Windows Operating System Interface
Files (DDE/ActiveX)
matlab\demos - Examples and demonstrations.
toolbox\runtime - MATLAB Runtime Server Development
Kit
rtw\windows - Real Time Windows Target.
南京航空航天大学 王正盛10
daq\daq - Data Acquisition Toolbox
daq\daqdemos - Data Acquisition Toolbox - Data
Acquisition Demos.
toolbox\dials - Dials & Gauges Blockset
toolbox\rptgenext - Simulink Report Generator
toolbox\rptgen - MATLAB Report Generator
database\database - Database Toolbox.
database\dbdemos - Database Toolbox Demonstration
Functions.
powersys\powerdemo - Power System Blockset Demos.
powersys\powersys - Power System Blockset
toolbox\compiler - MATLAB Compiler (and Compiler
1.2.1)
comm\comm - Communications Toolbox.
comm\commmasks - Communications Toolbox mask helper
functions.
comm\commsfun - Communications Toolbox S-functions.
comm\commsim - Communications Toolbox Simulink
files.
toolbox\symbolic - Symbolic Math Toolbox.
nag\nag - NAG Foundation Toolbox - Numerical &
Statistical Library
nag\examples - NAG Foundation Toolbox - Numerical
& Statistical Library
map\map - Mapping Toolbox
map\mapdisp - Mapping Toolbox Map Definition and
Display.
map\mapproj - Mapping Toolbox Projections.
wavelet\wavelet - Wavelet Toolbox.
wavelet\wavedemo - Wavelet Toolbox Demos.
toolbox\pde - Partial Differential Equation
Toolbox.
finance\finance - Financial Toolbox.
finance\calendar - Financial Toolbox calendar
functions.
finance\findemos - Financial Toolbox demonstration
functions.
lmi\lmictrl - LMI Control Toolbox: Control
Applications
lmi\lmilab - LMI Control Toolbox
qft\qft - QFT Control Design Toolbox.
qft\qftdemos - QFT Control Design Toolbox Demos
toolbox\fixpoint - Fixed-Point Blockset
fixpoint\fxpdemos - Fixed-Point Blockset Demos
fixpoint\obsolete - Obsolete Fixed-Point Blockset
dspblks\dspblks - DSP Blockset.
dspblks\dspmex - (No table of contents file)
dspblks\dspdemos - DSP Blockset demonstrations and
examples.
dspblks\dspmasks - DSP Blockset mask helper functions.
fuzzy\fuzzy - Fuzzy Logic Toolbox.
fuzzy\fuzdemos - Fuzzy Logic Toolbox Demos.
mpc\mpccmds - Model Predictive Control Toolbox.
mpc\mpcdemos - Model Predictive Control Toolbox
南京航空航天大学 王正盛11
fdident\fdident - Frequency Domain Identification
Toolbox.
fdident\fddemos - Demonstrations for the FDIDENT
Toolbox
hosa\hosa - Higher-Order Spectral Analysis
Toolbox.
hosa\hosademo - Higher-Order Spectral Analysis
Toolbox - Demo suite
toolbox\stats - Statistics Toolbox.
toolbox\ncd - Nonlinear Control Design Blockset
images\images - Image Processing Toolbox.
images\imdemos - Image Processing Toolbox --- demos
and sample images
nnet\nnet - Neural Network Toolbox.
nnet\nndemos - Neural Network Demonstrations.
nnet\nnutils - (No table of contents file)
nnet\nnobsolete - (No table of contents file)
mutools\commands - Mu-Analysis and Synthesis Toolbox.
mutools\subs - Mu-Analysis and Synthesis Toolbox.
signal\signal - Signal Processing Toolbox.
signal\siggui - Signal Processing Toolbox GUI
signal\sigdemos - Signal Processing Toolbox
Demonstrations
toolbox\splines - Spline Toolbox.
toolbox\optim - Optimization Toolbox.
toolbox\robust - Robust Control Toolbox.
toolbox\ident - System Identification Toolbox.
toolbox\control - Control System Toolbox.
control\ctrlguis - Control System Toolbox -- GUI
support functions.
control\obsolete - Control System Toolbox -- obsolete
commands.
toolbox\rtw - Real-Time Workshop
rtw\rtwdemos - (No table of contents file)
stateflow\sfdemos - Stateflow demonstrations and
samples.
toolbox\sb2sl - SystemBuild to Simulink Translator
stateflow\stateflow - Stateflow
simulink\simulink - Simulink
simulink\blocks - Simulink block library.
simulink\simdemos - Simulink 3 demonstrations and
samples.
simulink\dee - Differential Equation Editor
MATLAB53\work - (No table of contents file)
toolbox\local - Preferences.
For more help on directory/topic, type "help topic".
(ii) help 目录名显示指定目录中的所有命令及其函数
help lang 将列出与MATLAB 编程语言的所有命令及其函数
help matfun 将列出与数值线性代数有关的所有矩阵函数
help elfun 列出所有基本函数
南京航空航天大学 王正盛12
iii help 命令名/函数名/符号显示指定的命令名/函数名/符号的详细信
息
[例]
help eig 显示计算矩阵特征值和特征向量的函数eig 的说明
help eig
EIG Eigenvalues and eigenvectors.
E = EIG(X) is a vector containing the eigenvalues of a
square
matrix X.
[V,D] = EIG(X) produces a diagonal matrix D of
eigenvalues and a
full matrix V whose columns are the corresponding
eigenvectors so
that X*V = V*D.
[V,D] = EIG(X,'nobalance') performs the computation
with balancing
disabled, which sometimes gives more accurate results
for certain
problems with unusual scaling.
E = EIG(A,B) is a vector containing the generalized
eigenvalues
of square matrices A and B.
[V,D] = EIG(A,B) produces a diagonal matrix D of
generalized
eigenvalues and a full matrix V whose columns are the
corresponding eigenvectors so that A*V = B*V*D.
See also CONDEIG, EIGS.
Overloaded methods
help sym/eig.m
help lti/eig.m
注意help 的工作机理是是把指定名字的那个M 文件的第一段注释内容显示出
来以构成自己文件的再线求助
lookfor 指令可以根据用户提供的完整或不完整的关键词去搜索出一组与之有
关的指令
[例1] 查找有关积分的指令
lookfor integral
[例2] ELLIPKE Complete elliptic integral.
[例3] EXPINT Exponential integral function.
[例4] DBLQUAD Numerically evaluate double integral.
[例5] INNERLP Used with DBLQUAD to evaluate inner loop of
integral.
[例6] QUAD Numerically evaluate integral, low order
method.
[例7] QUAD8 Numerically evaluate integral, higher order
method.
南京航空航天大学 王正盛13
[例8] COSINT Cosine integral function.
[例9] SININT Sine integral function.
[例10] ASSEMA Assembles area integral contributions in a
PDE problem.
[例11] COSINT Cosine integral function.
[例12] FOURIER Fourier integral transform.
[例13] IFOURIER Inverse Fourier integral transform.
[例14] SININT Sine integral function.
BLKPIDCON The output of the block is the sum of
proportional, integral and
[例2]查找有关傅里叶变换的指令
lookfor fourier
FFT Discrete Fourier transform.
FFT2 Two-dimensional discrete Fourier Transform.
FFTN N-dimensional discrete Fourier Transform.
IFFT Inverse discrete Fourier transform.
IFFT2 Two-dimensional inverse discrete Fourier transform.
IFFTN N-dimensional inverse discrete Fourier transform.
XFOURIER Graphics demo of Fourier series expansion.
INSTDFFT Inverse non-standard 1-D fast Fourier transform.
NSTDFFT Non-standard 1-D fast Fourier transform.
EXPFOU Write data to a Fourier vector or a (maybe
existing) file (for ELIS).
IMPFOU Read complex amplitudes from a Fourier vector or
file (used by ELIS).
MODIFYFV Modify Fourier (maybe also variance) data by
given transfer function.
SIMFOU Generate simulated Fourier amplitudes.
PLOTFOU Plot contents of Fourier files
DFTMTX Discrete Fourier transform matrix.
FOURIER Fourier integral transform.
IFOURIER Inverse Fourier integral transform.
注意 lookfor 指令的机制对MATLAB 中的每个M 文件注释区的第一行进
行扫描一旦发现包含要查询的字符串就显示出来提示用户也可利用此机
理建立自己文件的在线帮助
其他帮助指令
exist 检查指定名字的变量或函数文件的存在性
what 按扩展名分类列出在搜索路径中指定目录上
的文件名
which 列出指定名字文件所在的目录
2.12 用户目录的建立和搜索路径
为了保护MATLAB 目录结构的严整为了用户自己用MATLAB
所创建修改的M 文件和其他文件的方便用户应建立自己的工作目录
MATLAB 启动后的默认目录是C:\MATLAB\BIN 若不建子目录则MATLAB
环境产生的数据文件就登陆在这个缺省目录上建立工作目录两种方法1
在DOS 环境中建立 ;(2)在windows 环境下建立
MATLAB 只能在启动时由mathabrc.m 设定的路径上搜索不能
与原定路径以外的其他目录交换信息可用以下三种方法扩充
南京航空航天大学 王正盛14
(1 在MATLAB 指令窗口中键入 CD C:\MYDIR
2 利用path 指令扩展搜索路径 path(path, 'c:\mydir')
3 在MATLAB 环境下键入pathtool 或者在MATLAB 指令窗口菜单上
File 中的Set path 项设置
第三章 MATLAB 的数值计算功能
3.1 数值矩阵的创建保存和数据格式
3.1.1 创建矩阵的直接输入法
前面已述此出不赘述
[例]
x=14 ;y=4.32;
A=[x,2*x-y,0;
sin(pi/4),3*y+x,sqrt(y)]
A =
14.0000 23.6800 0
0.7071 26.9600 2.0785
3.1.2 利用MATLAB 函数和语句创建数值矩阵
[ 例1] 利用指令reshape 创建数值矩阵
av=1:12 %产生12 个元素的行向量av 以%开头的是注释行
bm=reshape(av,3,4) %利用向量av 创建3× 4 矩阵bm
av =
1 2 3 4 5 6 7 8 9 10 11
12
bm =
1 4 7 10
2 5 8 11
3 6 9 12
[例2] 利用指令diag 产生对角阵
ar=rand(4,4) %产生4 × 4 的0-1 均匀分布随即矩阵ar
d=diag(ar) %用矩阵的主对角线元素形成向量d
D=diag(d) %用向量d 构成对角矩阵D
ar =
0.9501 0.8913 0.8214 0.92
展开阅读全文