MATLAB是“matrix laboratory”的缩写形式。MATLAB主要处理整个矩阵和数组,其他编程语言一般逐个处理数值。
所有MATLAB变量都是多维数组,与数据类型无关
数组创建
行向量的创建如下,各行元素用空格或逗号隔开。
A=[1 2 3 4]
A=[1,2,3,4]
创建多行数组,使用分号分隔各行 。
B=[1,2,3;3,3,2;1,1,2]
c=linspace(0,10,5)在0~10之间生成5个等间距的一维矩阵
c =
0 2.5000 5.0000 7.5000 10.0000
e=eye(4); 4维单位矩阵
z=zeros(1,4); 1行4列全零矩阵
o=ones(4,1); 4行1列全一矩阵
r=rand(4); 4维0~1分布随机矩阵
rn=randn(4); 4维以0为均值的Gaussian分布随机矩阵
D = diag(v) 返回包含主对角线上向量 v 的元素的对角矩阵。
D = diag(v,k) 将向量 v 的元素放置在第 k 条对角线上。k=0 表示主对角线,k>0 位于主对角线上方,k<0 位于主对角线下方。
a.*a为点乘运算,矩阵上每一个点进行平方运算
pinv_a=pinv(a) 求a的逆矩阵
[v,D]=eig(a); 输出v为特征向量,D为特征值对角阵
det(a) 求a的行列式
rank(a) 求a的秩
compan(b) 求伴随矩阵
数组运算
MATLAB允许使用单一运算符或函数来处理矩阵中的所有值
a+10
>> B+10
ans =
11 12 13
13 13 12
11 11 12
sin(B)
>> sin(B)
ans =
0.8415 0.9093 0.1411
0.1411 0.1411 0.9093
0.8415 0.8415 0.9093
可以通过单引号(')实现矩阵的转置
B'
>> B'
ans =
1 3 1
2 3 1
3 2 2
使用*可以进行矩阵乘法,比如用矩阵乘他的逆矩阵得到单位矩阵
p=B*inv(B)
>> p=B*inv(B)
p =
1.0000 0 0
-0.0000 1.0000 0.0000
-0.0000 -0.0000 1.0000
p不是整数值矩阵。MATLAB将数字存储为浮点型,算数运算可以区分实际值与其浮点表示之间的细微差别。可以通过使用format命令显示更多小数位数。
format long
p=B*inv(B)
>> format long
>> p=B*inv(B)
p =
1.000000000000000 0 0
-0.000000000000000 1.000000000000000 0.000000000000001
-0.000000000000000 -0.000000000000000 1.000000000000000
也可以通过使用format将显示内容重置为更短格式,format仅影响数字显示,而不影响MATLAB对数字的计算或保存方式。
format short
p=B*inv(B)
>> format short
>> p=B*inv(B)
p =
1.0000 0 0
-0.0000 1.0000 0.0000
-0.0000 -0.0000 1.0000
执行元素级乘法即点乘使用(.* )运算符
p=B.*B
>> p=B.*B
p =
1 4 9
9 9 4
1 1 4
计算矩阵中元素的三次方
B3=B.^3
>> B3=B.^3
B3 =
1 8 27
27 27 8
1 1 8
串联
串联是连接数组以形成更大数组的过程。
使用逗号将相邻的两个数组串联起来称为水平串联。每个数组需要有相同的行数。
A=[B,B]
>> A=[B,B]
A =
1 2 3 1 2 3
3 3 2 3 3 2
1 1 2 1 1 2
使用分号将相邻的两个数组串联起来称为垂直串联。每个数组需要有相同的列数。
A=[B;B]
>> A=[B;B]
A =
1 2 3
3 3 2
1 1 2
1 2 3
3 3 2
1 1 2
复数
复数包括实部虚部,虚部单位是-1的平方根
sqrt(-1)
>> sqrt(-1)
ans =
0.0000 + 1.0000i
要表示复数的虚部,使用i或j
S=[1+2i,3+8i;-j;6i]
>> S=[1+2i,3+8i;-j,6i]
S =
1.0000 + 2.0000i 3.0000 + 8.0000i
0.0000 - 1.0000i 0.0000 + 6.0000i