MATLAB 数学工具软件
实例简明教程
 
  编写
 
第一章   MATLAB简介
MALAB译于矩阵实验室(MATrix LABoratory),是用来提供通往LINPACKEISPACK矩阵软件包接口的。 后来,它渐渐发展成了通用科技计算、图视交互系统和程序语言。
MATLAB的基本数据单位是矩阵。它的指令表达与数学、工程中常用的习惯形式十分相似。比如,矩阵方程Ax=b,在MATLAB中被写成A*x=b。而若要通过A,bx,那么只要写x=A\b即可,完全不需要对矩阵的乘法和求逆进行编程。因此,用MATLAB解算问题要比用CFortran等语言简捷得多。
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
控制运行文件指令是否显示的开关
hold
控制当前图形窗对象是否被刷新
启动MATLAB 后,就可以利用它工作了。由于MATLAB 是一种交互式语言,随时输入指令、即时给出运算结果是它的主要工作方式(当然更可以编制程序,详见第七章)。
比如要计算的值,只要在光标位置处键入:
2*sin(0.3*pi)/(1+sqrt(5))
然后按[Enter],该指令便被执行并给出结果:
ans =    0.5000
下面介绍控制光标、对指令进行编辑的一些常用操作键。
常用操作键
 
 
 
 
前寻式调回已输入过的指令行
Home
使光标移到当前行的首端
后寻式调回已输入过的指令行
End
使光标移到当前行的尾端
当前行中左移光标
Delete
删除光标右表边的字符
当前行中右移光标
Backspace
删除光标左表边的字符
PageUp
前寻式翻阅当前窗中的内容
Esc
清楚当前行的全部内容
PageDown
后寻式翻阅当前窗中的内容
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
    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”是一个缺省变量名,它会被以后类似的操作刷新。
            3matlab速成教程)在第二种形式中,等号右边的表达式是被演绎后产生的矩阵,将被赋给等号左边的变量存入内存,并显示在屏幕上。
          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 WhoWhos和永久变量
      WhoWhos这两个指令的作用都是列出在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
MATLAB工作内存中,还驻留几个由系统本身在启动时定义的变量(如下表),称为“永久变量”(Permanent variables),或称为“预定义变量”(Predefined variables)。
系统预定义的变量
eps
计算机的最小正数,在pc机上,它等于
pi
圆周率的近似值3.14159265358979
infInf
无穷大
NaN
不定量
i,j
虚数单位,定义
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]
x=2*pi/3+2^3/5-0.3e-3
x =
    3.6941
2.6 复数和复矩阵
MATLAB认识复数,并定义ij作为虚数单位。矩阵元素允许是复数、复变量和由它们组成的表达式。
[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的强大功能可函数中略见一斑,本质上讲分为三类: