取名MATLAB即Matrix Laboratory 矩阵实验室的意思。
例如: 在MATLAB命令窗口输入命令:
a=[1,1.5,2,9,7; 0,3.6,0.5,-4,4;
7,10,-3,22,33;3,7,8.5,21,6;
3,8,0,90,-20]
将显示一个5*5矩阵。
MATLAB的数据与变量
① 命名规则
在MATLAB 6.5中,变量名是以字母开头,后接字母、数字或下划线的字符序列,最多63个字符。在MATLAB中,严格区分字母的大小写。MATLAB提供的标准函数名必须用小写字母。
② 变量查询函数who与whos
作用都是列出在matlab工作空间中已经驻留的变量名清单。不同的是whos在给出驻留变量的同时,还给出他们的维数及性质. clear命令用于删除MATLAB工作空间中的变量。
③ 永久变量
在matlab工作内存中,驻留了几个由系统本身在启动时定义的变量,我们称为永久变量。永久变量用who指令是查看不到的,只可随时调用
eps — 容差变量,定义为1.0到最近浮点数的距离,在 pc机上= 2-52
pi — 圆周率的近似值3.1415926
inf或Inf — 表示正无大,定义为1/0
NaN — 非数,它产生于0× ,0/0,/ 等运算
i,j — 虚数单位
ans — 对于未赋值运算结果,自动赋给ans
1.建立矩阵
建立矩阵可以用:直接输入法、利用函数建立矩阵和利用M文件建立矩阵。
直接输入法:
规则:
① 矩阵元素必须用[ ]括住;
② 同一行的各元素之间用空格或逗号分隔;
③ 在[ ]内矩阵的行与行之间必须用分号分隔).
利用函数建立数值矩阵:MATLAB提供了许多生成和操作矩阵的函数,可以利用它们去建立矩阵。
[ ] matlab允许输入空阵,当一项操作无结果时,返回空阵。
eye(size(A)) 产生与A矩阵同阶的单位矩阵
zeros(m,n) 产生0矩阵
ones(m,n) 产生一个元素全为1的矩阵
rand (m,n) 产生随机元素的矩阵
Size(a) 返回包含两个元素的向量
Length(a) 返回向量的最大者。
reshape(A,m,n) 返回一个m×n矩阵,且该矩阵中的元素是按照列方法从矩阵A中提取的
利用M文件建立矩阵:对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。其步骤为:
第一步:使用编辑程序输入矩阵。
第二步:把输入的内容以纯文本方式存盘, 并把文件名改为*.m。
第三步:在MATLAB命令窗口中输入文件名,就会建立一个矩阵,可供以后显示和调用。
冒号表达式
在MATLAB中,冒号是一个重要的运算符。利用它可以产生向量,还可用来拆分矩阵。冒号表达式的一般格式是:
e1:e2:e3
其中e1为初始值,e2为步长,e3为终止值。冒号表达式可产生一个由e1开始到e3结束,以步长e2自增的行向量。
MATLAB提供了许多数学函数,函数的自变量规定为矩阵变量,运算法则是将函数逐项作用于矩阵的元素上,因而运算的结果是一个与自变量同维数的矩阵。
例如: A= [1 2 3;4 5 6]
B=fix(pi*A) C=cos(pi*B) D=abs(B)
自然对数 E=log(D) F=log10(E)
sqrt(x) exp(x) tan (x) ctan (x)
函数使用说明: (1) 三角函数以弧度为单位计算。 (2) abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。 (3) 用于取整的函数有fix、floor、ceil、round,要注意它们的区别。
(4)函数一定是出现在等式的右边
(5)函数允许嵌套
4.矩阵的基本运算
(1)矩阵转置 A’
(2)矩阵加和减 A+B , A-B
规则:
相加、减的两矩阵必须有相同的行和列两矩阵对应元素相加减。
允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。
(3)矩阵乘法 A*B
规则:
① A矩阵的列数必须等于B矩阵的行数
② 标量可与任何矩阵相乘。
(4)矩阵除法 A\b=inv(A)*b
在MATLAB中,有两种矩阵除法运算:\和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。A\B等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般A\B≠B/A。
(5)矩阵的乘方 A^n , A^p
对于p的其它值,计算将涉及特征值和特征向量,如果p是矩阵,A是标量A^p使用特征值和特征向量自乘到p次幂;如A,p都是矩阵,A^p则无意义。
5.矩阵数组运算
(1) 数组的乘: A.*B A,B必须同维,或其中之一为标量.
(2) 数组的左除: A.\B 将得到一个矩阵,该矩阵的元素维数组A和数组B中的每个相应元素进行B(i,j)/A(i,j)运算的结果.
(3) 数组的乘方: A.^B 以A中的元素为底,B中的相应元素为幂作乘方运算,相当于计算[A(i,j)^B(i,j)]。A,B必须同维,或其中之一为标量.
数组运算指元素对元素的算术运算,与通常意义
上的由符号表示的线性代数矩阵运算不同。
① 数组加减(.+ , .-)
a.+b
a.-b
② 数组的乘( )
ab —— a,b两数组必须有相同的行和列两数组相应元素相乘。
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10];
a.*b
ans =
2 8 18
4 15 30
49 72 90
③ 数组的除( ./ .\ )
a./b=b.\a
a.\b=b./a
a./b=b.\a — 都是a的元素被b的对应元素除
a.\b=b./a — 都是a的元素被b的对应元素除
例: a=[1 2 3];b=[4 5 6]; c1=a.\b; c2=b./a
c1 = 4.0000 2.5000 2.0000
c2 = 4.0000 2.5000 2.0000
④ 数组乘方(.^) — 元素对元素的幂
例:
a=[1 2 3];b=[4 5 6];
z=a.^2
z =
1.00 4.00 9.00
z=a.^b
z =
1.00 32.00 729.00
6、字符串
在MATLAB中,字符串是用单撇号括起来的字符序列。MATLAB将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向量相同。也可以建立多行字符串矩阵。
字符串是以ASCII码形式存储的。abs和double函数都可以用来获取字符串矩阵所对应的ASCII码数值矩阵。相反,char函数可以把ASCII码矩阵转换为字符串矩阵。
与字符串有关的另一个重要函数是eval,其调用格式为: eval(t) 其中t为字符串。它的作用是把字符串的内容作为对应的MATLAB语句来执行。
【例1】 求解线性方程组AX=B
1 1.5 2 9 7 3
0 3.6 0.5 -4 4 -4
其中A= 7 10 -3 22 33 , B= 20
3 7 8.5 21 6 5
3 8 0 90 -20 16
在MATLAB命令窗口输入命令:
a=[1,1.5,2,9,7,0;0,3.6,0.5,-4,4,0;
7,10,-3,22,33;3,7,8.5,21,6;3,8,0,90,-20];
b=[3;-4;20;5;16];
x=a\b
得到的结果是:x =3.5653
-0.9255
-0.2695
0.1435
0.0101
或者x=inv(a)*b
【例2】 求方程 x4+7x3 +9x-20=0的全部根。
在MATLAB命令窗口输入:
p=[1,7,0,9,-20]; %建立多项式系数向量
x=roots(p) %求根
得到的结果是:
x =
-7.2254
-0.4286 + 1.5405i
-0.4286 - 1.5405i
1.0826