1.MATLAB简介
MATLAB名字是由MATrix和LABoratory两个词的前三个字母组合而成的。它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化数学软件。被誉为“巨人肩上的工具”。 由于使用Matlab编程运算
与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言--如Basic、Fortran和C等那
样难于掌握,用Matlab编写程序犹如在演算纸上排列出公式与求解问题,所以又被称为演算纸式科学算法
语言。在这个环境下,对所要求解的问题,用户只需简单地列出数学表达式,其结果便以数值或图形方式显示出来。
" B: N! p% l8 ]+ M# ?# E5 _! \( eMATLAB的含义是矩阵实验室(MATRIX LABORATORY),主要用于方便矩阵的存取,其基本元素是无须定义维数的矩阵。MATLAB自问世以来,就以数值计算著称。MATLAB进行数值计算的基本单位是复数数组(或称阵列),这使的MATLAB高度“向量化”。经过十几年的完善和扩充,现已发展成为线性代数课程的标准工具。由于它不需定义数组的维数,并给出矩阵函数、特殊矩阵专门的库函数,使之在求解诸如信号处
理、建模、系统识别、控制、优化等领域的问题时,显得大为简捷、高效、方便,这是其它高级语言所不能
比拟的。美国许多大学的实验室都安装有MATLAB供学习和研究之用。在那里,MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。
MATLAB中包括了被称作工具箱(TOOLBOX)的各类应用问题的求解工具。工具箱实际上是对MATLAB进行扩展应用的一系列MATLAB函数(称为M文件),它可用来求解各类学科的问题,包括信号处理、图象处理、控制、系统辨识、神经网络等。随着MATLAB版本的不断升级,其所含的工具箱的功能也越来越丰富,因此,应用范围也越来越广泛,成为涉及数值分析的各类工程师不可不用的工具。
2.MATLAB工作环境
运行MATLAB的可执行文件,自动创建MATLAB5.3指令窗(Command Window)。
如果你是个初学者,可以在指令窗键入demo,这可是学习的好帮手。
?demo
l 一旦发现指令不知如何使用时,help命令将告诉你使用。例:
?help sin
SIN Sine.
SIN(X) is the sine of the elements of X.
Overloaded methods
help sym/sin.m
在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如:
(10*19+2/4-34)/2*3
ans
= 234.7500
MATLAB会将运算结果直接存入一变量ans,代表MATLAB运算後的答案,并显示其数值屏幕上。
如果在上述的例子结尾加上”;”,则计算结果不会显示在指令视窗上,要得知计算值只须键入
该变数值即可。
l MATLAB可以将计算结果以不同的精确度的数字格式显示,我们可以在指令视窗上的功能选单上的Options
下选 Numerical Format,或者直接在指令视窗键入以下的各个数字显示格式的指令。
» format short (这是默认的)
MATLAB利用了↑↓二个游标键可以将所下过的指令叫回来重覆使用。按下↑则前一次指令重新出现,之后再 按Enter键,即再执行前一次的指令。而↓键的功用则是往后执行指令。其它在键盘上的几个键如→←, Delete, Insert,其功能则显而易见,试用即知无须多加说明。
l Ctrl+C(即同时按Ctrl及C二个键)可以用来中止执行中的MATLAB的工作。
l 有三种方法可以结束MATLAB
1.exit
2.quit 3.直接关闭MATLAB的命令视窗(Command window)
3.变量及其命名规则
l 变量
1. MATLAB对变量名的大小写是敏感的。
2. 变量的第一个字符必须为英文字母,而且不能超过31个字符。
3. 变量名可以包含下划线、数字,但不能为空格符、标点。
预定义的变量
ans | 预设的计算结果的变量名 |
eps | MATLAB定义的正的极小值=2.2204e-16 |
pi | 内建的π值 |
inf | ∞值,无限大 ( |
NaN | 无法定义一个数目 ( |
i 或 j
| 虚数单位i=j=(-1)^(1/2) |
而键入clear则是清除所有定义过的变量名称。
4.MATLAB赋值语句
l 表达式
MATLAB书写表达式的规则与“手写算式”差不多相同。
如果一个指令过长可以在结尾加上...(代表此行指 令与下一行连续),例如
?3*...
6
ans =
18
比如将23赋值给变量a:
a=23
5.MATLAB常用数学函数
l 三角函数和双曲函数
名称
| 含义
| 名称
| 含义
| 名称
| 含义
|
sin
| 正弦
| csc
| 余割
| atanh
| 反双曲正切
|
cos
| 余弦
| asec
| 反正割
| acoth
| 反双曲余切
|
tan
| 正切
| acsc
| 反余割
| sech
| 双曲正割
|
cot
| 余切
| sinh
| 双曲正弦
| csch
| 双曲余割
|
asin
| 反正弦
| cosh
| 双曲余弦
| asech
| 反双曲正割
|
acos
| 反余弦
| tanh
| 双曲正切
| acsch
| 反双曲余割
|
atan
| 反正切
| coth
| 双曲余切
| ||
acot
| 反余切
| asinh
| 反双曲正弦
|
|
|
sec
| 正割
| acosh
| 反双曲余弦
|
|
|
l 指数函数
名称
| 含义
| 名称
| 含义
| 名称
| 含义
|
exp
| E为底的指数
| log10
| 10为底的对数
| pow2
| 2的幂
|
log
| 自然对数
| log2
| 2为底的对数
| sqrt
| 平方根
|
l 复数函数
名称
| 含义
| 名称
| 含义
| 名称
| 含义
|
abs
| 绝对值
| conj
| 复数共轭
| real
| 复数实部
|
angle
| 相角
| imag
| 复数虚部
|
|
|
l 取整函数和求余函数
名称
| 含义
| 名称
| 含义
|
ceil
| 向+∞取整
| rem
| 求余数
|
fix
| 向0取整
| round
| 向靠近整数取整
|
floor
| 向-∞取整
| sign
| 符号函数
|
mod
| 模除求余
|
|
|
l 矩阵变换函数
名称
| 含义
| 名称
| 含义
|
fiplr
| 矩阵左右翻转
| diag
| 产生或提取对角阵
|
fipud
| 矩阵上下翻转
| tril
| 产生下三角
|
fipdim
| 矩阵特定维翻转
| triu
| 产生上三角
|
Rot90
| 矩阵反时针90翻转
|
|
|
l 其他函数
名称
| 含义
| 名称
| 含义
|
min
| 最小值
| max
| 最大值
|
mean
| 平均值
| median
| 中位数
|
std
| 标准差
| diff
| 相邻元素的差
|
sort
| 排序
| length
| 个数
|
norm
| 欧氏(Euclidean)长度
| sum
| 总和
|
prod
| 总乘积
| dot
| 内积
|
cumsum
| 累计元素总和
| cumprod
| 累计元素总乘积
|
cross
| 外积
|
|
|
可查阅在线帮助helpwin中matlab\elfun或help elfun。
6.MATLAB系统命令
命 令
| 含 义
|
help
| 在线帮助
|
helpwin
| 在线帮助窗口
|
helpdesk
| 在线帮助工作台
|
demo
| 运行演示程序
|
ver
| 版本信息
|
readme
| 显示Readme文件
|
who
| 显示当前变量
|
whos
| 显示当前变量的详细信息
|
clear
| 清空工作间的变量和函数
|
pack
| 整理工作间的内存
|
load
| 把文件调入变量到工作间
|
save
| 把变量存入文件中
|
quit/exit
| 退出MATLAB
|
what
| 显示指定的matlab文件
|
lookfor
| 在HELP里搜索关键字
|
which
| 定位函数或文件
|
path
| 获取或设置搜索路径
|
echo
| 命令回显
|
cd
| 改变当前的工作目录
|
pwd
| 显示当前的工作目录
|
dir
| 显示目录内容
|
unix
| 执行unix命令
|
dos
| 执行dos命令
|
!
| 执行操作系统命令
|
computer
| 显示计算机类型
|
可查阅在线帮助helpwin中matlab\general或help general。
7.MATLAB语言中的关系与逻辑运算
在执行关系及逻辑运算时,MATLAB 将输入的不为零的数值都视为真 (True)而为零的数值则视为假 (False)。 运算的输出值将判断为真者以 1 表示而判断为假者以 0 表示。各个运算符须用在二个大小相同的阵列或是矩阵中的比较。
l 关系运算
指令
| 含义
|
<
| 小于
|
<=
| 小于等于
|
>
| 大于
|
>=
| 大于等于
|
==
| 等于
|
~=
| 不等于
|
?a=1:2:11;
?b=2:1:7;
?a>b
ans =
0 0 1 1 1 1
?a==b
ans =
0 1 0 0 0 0
?a>=b
ans =
0 1 1 1 1 1
?a-(b>4)
ans =
1 3 5 6 8 10
l 逻辑运算
指令
| 含义
|
&
| 逻辑 and
|
|
| 逻辑 or
|
~
| 逻辑 not
|
(a<2)|(b>6)
ans =
1 0 0 0 0 1
c=a+(a>3)|(b<6)
c =
1 1 1 1 1 1
l 逻辑关系函数
指令
| 含义
|
xor
| 不相同就取1,否则取0
|
any
| 只要有非0就取1,否则取0
|
all
| 全为1取1,否则为0
|
isnan
| 为数NaN取1,否则为0
|
isinf
| 为数inf取1,否则为0
|
isfinite
| 有限大小元素取1,否则为0
|
ischar
| 是字符串取1,否则为0
|
isequal
| 相等取1,否则取0
|
ismember
| 两个矩阵是属于关系取1,否则取0
|
isempty
| 矩阵为空取1,否则取0
|
isletter
| 是字母取1,否则取0(可以是字符串)
|
isstudent
| 学生版取1
|
isprime
| 质数取1,否则取0
|
isreal
| 实数取1,否则取0
|
isspace
| 空格位置取1,否则取0
|
isequal(a,b)
ans =
0
isreal(a)
ans =
1
isstudent
ans =
0
8.矩阵及运算
1. 数组
MATLAB的运算事实上是以数组 (array) 及矩阵 (matrix) 方式在做运算。
建立一个数组时,如果是要个别键入元素,须用中括号[ ] 将元素置于其中。数组为一维元素所构成,而矩阵为多维元素所组成,例如
» x=[1 2 3 4 5 6 7 8] ;% 一维 1x8 阵列
» x = [1 2 3 4 5 6 7 8; 4 5 6 7 8 9 10 11] ; % 二维 2x8 矩阵,以;区隔各列的元素
» x = [1 2 3 4 5 6 7 8 % 二维 2x8 矩阵,各列的元素分二行键入
4 5 6 7 8 9 10 11] ;
» x(3)% x的第三个元素
ans =
2
» x([1 2 5])% x的第一、二、五个元素
ans =
1 4 3
x(1:5)% x的第前五个元素
ans =
1 4 2 5 3
» x(10:end)% x的第十个元素后的元素
ans =
8 6 9 7 10 8 11
» x(10:-1:2)% x的第十个元素和第二个元素的倒排
ans =
8 5 7 4 6 3 5 2 4
» x(find(x>5))% x中大于5的元素
ans =
6
7
8
6
9
7
10
8
11
» x(4)=100%给x的第四个元素重新给值
x =
1 2 3 4 5 6 7 8
4 100 6 7 8 9 10 11
» x(3)=[]% 删除第三个元素
x =
Columns 1 through 12
1 4 100 3 6 4 7 5 8 6 9 7
Columns 13 through 15
10 8 11
» x(16)=1% 加入第十六个元素
x =
Columns 1 through 12
1 4 100 3 6 4 7 5 8 6 9 7
Columns 13 through 16
10 8 11 1
2 建立数组
上面的方法只适用于元素不多的情况,但是当元素很多的时候,则须采用以下的方式:
» x=(0:0.02:1); % 以:起始值=0、增量值=0.0.2、终止值=1的矩阵
» x=linspace(0,1,100); % 利用linspace,以区隔起始值=0终止值=1之间的元素数目=100
»a=[]%空矩阵
a =
[]
» zeros(2,2)%全为0的矩阵
ans =
0 0
0 0
» ones(3,3) %全为1的矩阵
ans =
1 1 1
1 1 1
1 1 1
» rand(2,4);随机矩阵
»a=1:7, b=1:0.2:5;%更直接的方式
»c=[b a]; %可利用先前建立的阵列 a 及阵列 b ,组成新阵列
» a=1:1:10;
» b=0.1:0.1:1;
» a+b*I%复数阵列
ans =
Columns 1 through 4
1.0000 + 0.1000i 2.0000 + 0.2000i 3.0000 + 0.3000i 4.0000 + 0.4000i
Columns 5 through 8
5.0000 + 0.5000i 6.0000 + 0.6000i 7.0000 + 0.7000i 8.0000 + 0.8000i
Columns 9 through 10
9.0000 + 0.9000i 10.0000 + 1.0000i
在MATLAB的内部资料结构中,每一个矩阵都是一个以行为主(Column-oriented)的阵列(Array)因此对於矩阵元素的存取,我们可用一维或二维的索引(Index)来定址
l 子矩阵
通过一个矩阵产生另一个矩阵的方法(上面已经有例子)
假如一个矩阵A
则 A(m1:m2 ,n1:n2)
9.矩阵的运算
l 经典的算术运算符。
经 典 的 算 术 运 算 符 | ||
| 运 算 符 | MATLAB表达式 |
加 | + | a+b |
减
| - | a-b |
乘 | * | a*b |
除
| / 或 \ | a/b或a\b |
幂
| ^ | a^b |
l 前面我们已经把经典的算术运算符告诉大家了,在这里同样也可以使用。
» a=1:1:10;
» b=0:10:90;
» a+b
ans =
1 12 23 34 45 56 67 78 89 100
» a-b
ans =
1 -8 -17 -26 -35 -44 -53 -62 -71 -80
» a.*b%注意这里a后加了个“.”
ans =
0 20 60 120 200 300 420 560 720 900
» a/b
ans =
0. 1158
» a\b
ans =
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
» b./a
ans =
Columns 1 through 7
0 5.0000 6.6667 7.5000 8.0000 8.3333 8.5714
Columns 8 through 10
8.7500 8.8889 9.0000
» a.\b
ans =
Columns 1 through 7
0 5.0000 6.6667 7.5000 8.0000 8.3333 8.5714
Columns 8 through 10
8.7500 8.8889 9.0000
» a.^2
ans =
1 4 9 16 25 36 49 64 81 100
说明:在这里特别要注意一下有没有加点“.”之间的区别,这些算术运算符所运算的两个阵列是否需要长度一致。
l 矩阵转置运算
通过在矩阵变量后加’的方法来表示转置运算
?a=1:1:10;
?b=0:10:90;
?a'
ans =
1
2
3
4
5
6
7
8
9
10
?c=a+b*i;
?c'
ans =
1.0000
2.0000 -10.0000i
3.0000 -20.0000i
4.0000 -30.0000i
5.0000 -40.0000i
6.0000 -50.0000i
7.0000 -60.0000i
8.0000 -70.0000i
9.0000 -80.0000i
10.0000 -90.0000i
谢谢楼主
不错。
我来晚了
能不能做成一个word文件供下载?
哎,真是没法看啊,惨目人睹!!哎!!
呵呵,是有不少乱码,不过要想学MATLAB,买本书,照着书本多上机练习就好了。
好!
niu
经典
我也在做一本教材,希望用简介的话把不会matlab的人教会,估计本月底可以出炉。
再次说一句,经典~~
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |